簡體   English   中英

noSQL / MySQL-存儲產品信息

[英]noSQL / MySQL - storing product information

我一直在考慮將產品/客戶/交易信息存儲在數據庫中的最佳方法。 我們在這里談論數十萬條記錄...

我對數據如何在紙上表示非常清楚,它基本上看起來像一棵樹...

汽車->大眾->高爾夫-> 1.6升5門

這里的問題是樹中的每個產品都需要不同的屬性。 例如,如果產品是船,則不需要“車輪尺寸”屬性,但需要“螺旋槳尺寸”。 無論如何,您明白了!

我對NoSQL剛起步,過去只與MySQL合作,但看來這可能是最好的解決方案。 我喜歡沒有架構的想法。

有沒有人有建立這樣的系統的經驗? 你干了什么 有什么特別的變化嗎?

如果需要關系結構(例如樹結構),則應使用關系數據庫模型。 NoSQL最適用於您只想存儲數據而無需考慮其結構的情況。

如果要具有任意的可選信息集,則可以堅持使用關系數據庫,並使用BLOB列存儲可選數據,也許作為JSON字符串。 由於以下幾個原因,這可能效果最好:

  1. 您可以保留輕松查詢一組產品的能力,例如SELECT * FROM products WHERE catid = 123
  2. 您仍然可以使用產品的通用屬性輕松過濾結果。
  3. 您也可以將交易記錄鏈接回產品。
  4. 如果要按可選列進行過濾,可以執行LIKE來僅返回JSON blob中包含該特定列名稱的行,然后在代碼中手動過濾結果。

您要查找的內容可以輕松地在文檔中表示(面向DB =>例如CouchDB)。 例如,代表您的大眾:

  • 汽車->大眾->高爾夫-> 1.6升5門:
{
 "Cars": [
   {"Make":"VW", "Model":"Golf", "Engine":1.6, "Doors": 5, "Wheel Size": 19},
   {"Make":"Toyota", "Model":"Supra", "Engine":2.4, "Doors": 5, "Packages":["Tech", "Cold Weather"]}
 ]
}

由於該架構是“免費”的,因此您可以添加remove car的屬性。 您可以在此處閱讀有關CouchDB文檔API的更多信息

我認為這可能是個好主意,除非您需要某種關系。 例如,如果要將汽車鏈接到所有者,通常需要一個表“ cars”和一個表“ owners”,如果要按所有者查找汽車,則可以從所有者中搜索並加入汽車。

我相信在大多數情況下,也可以在NO-SQL設置中解決此問題,但它可能會變得相當復雜。

如果您只是存儲模型數據,則聽起來很簡單。 也許您可以制作原型?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM