這是一個相對複雜的問題,所以請建議對不明確的部分進行編輯或評論。我將根據您的意見進行更新和迭代允許使用分片的mysql數據庫進行數據訪問的Gem,同時保持Activerecord的使用
我正在考慮開發一種簡化分片表使用的rails gem,即使大部分數據都存儲在關係數據庫中。我相信這與Quora或Friendfeed中使用的概念類似,它們在擴大傳統mysql的範圍時遇到困難,大多數潛在解決方案需要大規模遷移(nosql),或者只是非常痛苦(完全無關關係)
- http://bret.appspot.com/entry/how-friendfeed-uses-mysql
- http://www.quora.com/When-Adam-DAngelo-says-partition-your-data-at-the-application-level-what-exactly-does-he-mean?q=application+layer+quora+adam+
本質上說,我們怎樣才能繼續使用MySQL的很多事情是在真的很好,但允許部分系統規模?這將允許有人開始使用mysql/activerecord,但碰到一個障礙擴展,以輕鬆擴展數據庫的有意義的部分。
對於我們來說,我們在分片數據庫上使用Ruby on Rails,並在其中存儲JSON blob。由於我們無法進行連接,因此我們正在爲實體之間的關係創建表格。
例如,我們有10種不同類型的實體。每個實體可以使用大(分片)關係表彼此鏈接。
這些表格非常簡單。索引是(Id1,Id2 ...,類型),數據存儲在JSON blob中。
- 編號,類型,{JSON數據}
- ID1,ID2,類型{JSON數據}
- ID1,ID2,ID3,類型{JSON數據}
我們已經把大量的工作來創建更高級別的接口來存儲關係數據的一系列數據集
對於任何給定的類型,您可以定義一種類型的存儲 - (值,未加權列表,加權列表,帶有guid的加權列表)
我們必須爲他們每個人的更高層次的接口 - 查詢,排序,時間戳比較,十字路口等
這樣一來,如果有人意識到他們需要擴展數據庫的特定部分,他們可以保持最的基礎設施,並且只將他們需要的表格移動到這個分片數據庫中
你的想法是什麼?如上所述,我很想知道你們的想法。