2013-07-07 30 views
3

由於我一直在使用傳統的關係數據庫很長一段時間,遷移到nosql,尤其是Cassandra,是一個重大改變。我無意中設計我的應用程序,以便在啓動時將數據庫中的所有內容加載到應用程序的內部緩存中,並且如果數據庫表中有任何更新,則其相應的緩存也會更新。例如,如果我有一個表Student,在啓動時,該表中的所有數據都會被加載到StudentCache中,當我想要插入/更新/刪除時,我將調用一個同時更新它們的服務。我設計的目的是防止直接從數據庫中選擇。使用應用程序的內部緩存,同時使用Cassandra

在卡桑德拉,想法是建立一個包含所有需要的數據的表格,以便連接是不必要的,我想知道我最喜歡的設計是否仍然有用,還是更直接地從數據庫查詢數據更有效表)。

+0

請注意,在應用程序中保存數據庫是一個壞主意,因爲您的應用程序的性能將基於輸入。 –

+0

是的,它實際上使啓動需要更長的時間,但是,這是我必須在應用程序的工作中進行折衷,而這些應用程序確實需要大量查找。我相信通過將它們存儲在地圖中會更快。 –

回答

3

根據您描述的用例,我會說根據需要查詢數據會阻止存儲您不需要的數據,以及如果您的數據集是5Gb,會怎麼樣?你還要加載整個數據集嗎?

也許考慮一個設計,你不會在啓動時加載所有的數據,而是根據需要加載它,然後存儲它並在再次查詢之前檢查這個存儲,就像什麼緩存那樣

Cassandra是按比例構建的,您的設計無法處理縮放,您將達到數據集過大的地步。基於此,您應該考慮權衡。許多即時查詢與存儲客戶端中的所有內容。我會建議直接查詢,但是當您執行查詢時存儲數據,不要丟棄它,然後再次執行相同的查詢!

1

我建議直接查詢數據,因爲將所有數據保存到應用程序使得基於輸入的應用程序性能。如果您知道數據量永遠不會超過目標機器的內存,現在這可能是件好事。

但是,如果您決定這個限制應該改變(更高!),您將面臨一個問題。當涉及到搜索時(假設您在開始時對結果進行排序),採用這種方法會很快,但會大大降低可維護性。

但是,如果您選擇這種方式,以前最喜歡的方法仍然有用。

相關問題