我正在構建一個分佈式會計系統。 就數據庫結構和要求而言,將應用程序描述爲類似Twitter的應用程序可能最容易,但是具有14個表的分層DB結構。 使用該應用程序的公司可能有1個或更多用戶,全部共享公司信息。AppEngine數據存儲需要設計建議
目前,每個實體代表一個記錄類型,即客戶,發票等。 所有實體都有一個父應用程序的用戶。 (用於HRD查詢一致性原因)
對數據庫的每個查詢都由14個AppEngine查詢組成。每個桌子一個。 該查詢涉及屬性過濾。
新的要求是,用戶查詢可能需要基於其他每個用戶的不同屬性值。 這意味着我們需要(14 x公司用戶的數量)AppEngine查詢。這似乎太多了。
,可以通過屬性過濾無類型祖先查詢將是非常好的,唉,沒有做不到的:)
我的選擇是:
設置實體類型爲用戶。沒有父母。這意味着所有記錄類型都是混合的。 (過濾的字段存在於所有記錄類型中)。 這並不漂亮。但你會考慮這個嗎?
只有過濾器才具有固定的實體類型和查詢。結果相當於Kindless祖先查詢。但是,我擔心在多用戶使用中會很慢。
一些數字: 我們計劃爲10,000家公司,平均每家公司5個用戶和1至5萬條記錄每條記錄的類型。 (×14總)
感謝您的耐心迄今爲止.. :)
爲什麼每個查詢都需要查詢所有的表?這似乎是一個非常奇怪的要求。 –
@Nick,應用程序有一個分佈式數據庫。每個客戶都有一個DB的本地副本,其中包含與該客戶相關的信息。每個查詢需要在整個數據庫中查找所有新的/已更改的信息,並將數據傳輸到客戶端以供本地使用。 (每個查詢將在幾乎所有表中找到更改) – OferR