2012-02-14 57 views
0

我的任務是重構當前使用EAV model進行數據存儲的項目。使用動態表格重構EAV建模數據

在一些實現中,主表包含數百萬行行。你可以想象,我認爲這是一種令人憎惡的行爲。

重構是由需要做空間搜索驅動的,當你的緯度和長度存儲爲VARCHAR字段中的逗號分隔文本時,這並不真正起作用......但我離題了。


項目的性質意味着事先產生一組靜態的規範化表格是不可能的。把它看作一種動態的表單構建器,其中新表單中的字段數量未知,下拉列表的選項數量未知,等等。

我想要創建一個「DynamicTable」類,它將維護一個字段字典,並管理一組動態創建的表。緩存已經很好地實現了(使用memcached),所以只需在模式更改(初始提交後很少發生)以及重新啓動時(甚至更罕見)查詢字典。


我在充實甚至一些基本的東西是讓我意識到什麼,我想要做的滿刻度的初步嘗試,和我對類似項目的搜索已經相當徒勞的。

誰能:

  • 讚揚mycurrent方法和祝我好運。
  • 推薦一種更好的替代方法,即使它不一定更容易。
  • 推薦的任何項目我可以看看那個實現類似的目標(我的搜索產生什麼!)

乾杯傢伙!

+0

與EAV相關的問題不是表中的行數。但主要是如何執行完整性和約束。 – 2012-02-15 00:13:14

+0

您是否考慮過爲此使用文檔數據庫(我的意思是「nosql」)而不是濫用EAV? – Charles 2012-02-15 01:28:19

+0

@Charles:我簡單地看了一下MongoDB和CouchDB,但我不確定要求客戶安裝另一個數據庫服務器的可行性如何,而且這些選項的開發也存在相關的學習曲線。 – Leigh 2012-02-15 12:13:44

回答

1

然後回答我自己的問題。

採取了查爾斯的建議,我調查了幾個NoSQL文檔數據庫選項,最終決定使用MongoDB。

它非常適合我嘗試存儲的數據類型,因此非常容易使用。