我的客户给了我大约14k个各种产品的网址,他希望我能够每天存储该产品的所有价格变化。我认为这需要大量的db存储和大量的优化。我从来没有这样做过。我使用的是MySQL DB。我是否应该将每个产品的所有价格变化存储在JSON列中或作为单独的行存储?寻找有关这方面的提示。谢谢!在db中存储所有这些数据的最佳方式是什么?
回答
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。该网址被编入索引以加快搜索速度。
既然您已经有产品表,其他表格可以参考它。就像价格变化表一样。
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
通过这种方式存储数据库大小不会超过gbs的100s? 感谢您撰写这样一个详细的答案。 – user3407278
@ user3407278不管你如何组织它都会有相似的数据总量。 – Barmar
@ user3407278这取决于你存储的内容和存储量,但100 GB是很多数据。您可以通过查看[变量类型的存储需求](https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html)来存储成本。产品表是不重要的,与其变化相比,产品相对较少。每次更改为4(int)+ 4 + 1(数字(9,2))+ 8字节(日期时间)加上一些开销。所以我们说每个价格变化20-30字节。加上索引。非常非常有效。 – Schwern
- 1. 什么是存储这些数据的最佳方式?
- 2. 什么是最有效的方式来存储这些数据?
- 3. 在UNKNOWN DB中存储IPv6的最佳方式是什么?
- 4. 在Docker中存储数据的最佳方式是什么?
- 5. 在VSTO插件中存储一些数据的最佳方式是什么?
- 6. 在Java中存储一些数据的最佳方式是什么? (Array vs ArrayList)
- 7. 在iPhone上存储数据的最佳方式是什么?
- 8. 什么是存储我的2D数据的最佳方式
- 9. 什么是存储文本数据的最佳方式?
- 10. 什么是存储临时数据的最佳方式?
- 11. 什么是存储趋势数据的最佳方式?
- 12. 存储传入流数据的最佳方式是什么?
- 13. 什么是存储此类数据的最佳方式?
- 14. 存储数据以使用jQuery的最佳方式是什么?
- 15. 什么是存储站点配置数据的最佳方式?
- 16. 存储游戏数据的最佳方式是什么?
- 17. 什么是存储简单空间数据的最佳方式
- 18. 存储此数据结构的最佳方式是什么?
- 19. 本地存储数据的最佳方式是什么(IOS - xcode)
- 20. 什么是存储思维导图数据的最佳方式?
- 21. 存储增量下载数据的最佳方式是什么?
- 22. 在mysql数据库中存储html数据的最佳方式是什么?
- 23. 在数据库中存储IP的最佳方法是什么?
- 24. 有什么可能的方式来存储这些数据?
- 25. 在sql db中存储读取文章的最佳方式是什么?
- 26. 在缓存中存储大量数据的最佳方式是什么?
- 27. 在android中保存数据的最佳方式是什么?
- 28. 类是保存这些数据C++的最佳方式吗?
- 29. 在Firebase中存储信息应用的数据的最佳方式是什么?
- 30. 检索这些数据的最佳方法是什么?
根据最佳数据库规范化实践进行存储。如果性能成为问题,那就考虑重新设计它。但是大多数数据库可以处理成千上万行,这应该不成问题。 – Barmar
我正在考虑将它存储在每个产品的json列中。这会好吗? – user3407278