我的客戶給了我大約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. 在Docker中存儲數據的最佳方式是什麼?
- 3. 在VSTO插件中存儲一些數據的最佳方式是什麼?
- 4. 存儲此數據結構的最佳方式是什麼?
- 5. 存儲傳入流數據的最佳方式是什麼?
- 6. 什麼是存儲站點配置數據的最佳方式?
- 7. 存儲增量下載數據的最佳方式是什麼?
- 8. 什麼是存儲此類數據的最佳方式?
- 9. 什麼是存儲臨時數據的最佳方式?
- 10. 什麼是存儲思維導圖數據的最佳方式?
- 11. 存儲遊戲數據的最佳方式是什麼?
- 12. 什麼是存儲趨勢數據的最佳方式?
- 13. 在mysql數據庫中存儲html數據的最佳方式是什麼?
- 14. 在數據庫中存儲IP的最佳方法是什麼?
- 15. 有什麼可能的方式來存儲這些數據?
- 16. 在sql db中存儲讀取文章的最佳方式是什麼?
- 17. 在Python中存儲快速變化的數據的最佳方式是什麼?
- 18. 在Firebase中存儲信息應用的數據的最佳方式是什麼?
- 19. 檢索這些數據的最佳方法是什麼?
- 20. 在mysql中存儲html代碼的最佳方式是什麼?
- 21. 在PHP中存儲類變量的最佳方式是什麼?
- 22. 在Memcached中存儲ActiveRecord對象的最佳方式是什麼?
- 23. 什麼是在博客中存儲帖子的最佳方式
- 24. 在Mongo中存儲/查詢`last_read`的最佳方式是什麼?
- 25. 什麼是在android中存儲圖像的最佳方式?
- 26. 在Xcode中存儲資源的最佳方式是什麼?
- 27. 在SQL中存儲聖經的最佳方式是什麼?
- 28. 在數據庫中存儲一副撲克牌的最佳方式是什麼?
- 29. 在Android中存儲應用程序數據的最佳方式是什麼?
- 30. 在web2py中加密存儲數據的最佳方式是什麼?
根據最佳數據庫規範化實踐進行存儲。如果性能成爲問題,那就考慮重新設計它。但是大多數數據庫可以處理成千上萬行,這應該不成問題。 – Barmar
我正在考慮將它存儲在每個產品的json列中。這會好嗎? – user3407278