2011-04-20 43 views
1

有沒有辦法從存儲在MySql的varchar或字符串行中的JSON查詢特定值?有點像使用MongoDB(或沙發或烏鴉)和老朋友MySql一樣。在MySql列中查詢JSON列

我知道,即使我開始查詢這個值,我仍然會缺少NoSql解決方案的所有功能,但我只需要將無模式信息存儲在MySQL中。

PS:如果數據存儲爲XML而不是JSON,會怎麼樣?

更新:我想補充一點以備將來參考:

如果你正在尋找一種方式,具有無模式存儲在一個共享的主機,最簡單的方法就是註冊一個montodb託管解決方案,或couchdb託管的解決方案(例如https://cloudant.com/#!/solutions/cloud)。

+0

我敢打賭,會有關於查看EAV的建議,但我個人從來不建議甚至嘗試在rdbms中實施EAV。如果你想要無模式存儲 - 獲取mongo ;-) – zerkms 2011-04-20 02:19:56

回答

1

您無法在MySQL AFAIK中將JSON查詢爲'JSON'。您可以對該值執行任何操作,作爲'varchar'而不是'JSON格式的結構化數據'。換句話說,你可以做「喜歡」或「=」,但你不能這樣做where x.y = 4,或者類似的東西order by x.z,給出的JSON結構:

{ 
    x: { 
     y: 4, 
     z: 10 
    } 
} 
0

你爲什麼要存儲XML/JSON數據作爲數據庫中的一個字段?如果結構包含多個元素,則可以將數據分解爲更小的粒度級別。

+0

他需要無模式的存儲方式。無模式不適合關係型dbms通用模式。 – zerkms 2011-04-20 02:25:35

+0

準確。另外問題在於,在共享虛擬主機中使用NoSQL解決方案非常困難。我需要無模式部分,不需要分片,複製和縮放部分:) – NicoGranelli 2011-04-21 15:36:50