我的客户给了我大约14k的各种产品的网址,他希望我每天存储该产品的所有价格变化。我认为这将需要大量的数据库存储和大量的优化。我以前从未这样做过。我使用的是mysql DB。我应该将每个产品的所有这些价格变化存储在JSON列中还是作为单独的行存储?寻找有关此的提示。谢谢!
答案 0 :(得分:1)
JSON列的效率不如普通的SQL列,如果您不确定自己将拥有哪些数据,则应保留这些列。你很确定你将拥有什么数据。
这是一个非常简单的两个表模式。一个产品表,一个价格变化表。
create table product (
id integer primary key auto_increment,
name varchar,
url varchar unique,
...any other information about the product you might want to store...
index(url)
);
通过为它提供主键,它可以防止您更改URL,并减少必须存储在引用它的表中的数量。它们只需要存储整数主键,而不是整个URL。 URL被编入索引以便加快搜索速度。
现在你有了一个产品表,其他表可以引用它。就像一张价格变化表。
create table product_price_changes (
product_id integer references product(id),
price numeric(9,2) not null,
change_time datetime not null,
index(change_time)
);
此表存储产品价格何时更改以及该价格的变化。这是将数据列表附加到SQL中的内容的方法。 change_time
被编入索引以便加快搜索速度。
通过简单的连接,您可以按顺序有效地查看特定产品的所有更改。
select price, change_time
from product_price_changes ppc
join product prod on ppc.product_id = prod.id
where prod.url = ?
order by change_time