我有我需要存儲非結構化數據但其餘數據是結構化和關係的場景。非結構化數據的類型的例子以下作爲解釋:在NoSQL中存儲動態數據
User Type 1:
How do you blah blah : 5 fields
User Type 2 :
How do you blah blah : 3 fields
User Type 3 :
How do you blah blah : 7 fields
所有3種都問同樣的問題:「你如何等等等等」,但使用不同數量的字段的每個用戶類型回答它。並且可以有一個很多不同的用戶類型。
對於關係數據,我使用的是MySQL,但我對如何存儲這些非結構化數據有點困惑:在MySQL
- 序列化爲JSON和商店
我的要求是高讀數,平均更新,平均插入&不刪除。不需要JOINS。我需要保證寫入&高可用性。如果我要選擇一個NoSQL,根據CAP定理它將是一個AP類型。我不會很快記錄數百萬條記錄。
我也計劃提供此數據在未來的文本搜索,但它並不需要是實時搜索,這樣我就可以一直使用索引Lucene的定期數據。但當然,基於文檔的NoSQL實現確實提供了這種開箱即用的功能。但是我已經在幾個地方看過人們有建議不要在MySQL中存儲JSON數據。但是添加一個NoSQL層可能會過度。
我該怎麼做&如果您建議我去NoSQL DB,我應該選擇哪一個?
編輯: 爲了澄清,我不需要從我存儲的數據中查詢特定的字段。如果我需要這些數據,那麼我將需要整個數據,而不是特定的領域。我確實需要全文搜索,我也可以使用Lucene在MySQL上完成搜索。
通過表繼承你的意思是[交界表](http://en.wikipedia.org/wiki/Junction_table)? –
@Varun不,我的意思是表繼承:http://www.agiledata.org/essays/mappingObjects.html#MapEachClassToTable。你可以有一個普通的基本用戶表,並在其他子用戶類型表中具有特定的字段。但這只是一個假設,也許我誤解了整個用戶類型的事情。 – LMeyer
沒有..表繼承是不可能的,因爲有很多用戶類型,他們將繼續添加,因爲我們擴大。因此,爲他們每個人創建一個單獨的表是不可行的。 –