2010-10-20 144 views
10

我想了解更多關於完整數據設計模式的主題。具體而言,存儲,處理,緩存和檢索數據的技術的不同組合。換句話說,看看有多少組件在大型系統中使用,如facebook數據/數據庫設計模式?

據我所知,我們有RBMSNoSQL風味的數據庫類別。然而,更多的技術(非永久性數據存儲)在數據的真實使用中非常關鍵 - 例如memcached。然而,我無法找到應該用來充分利用所有體系結構的總體設計模式。

有沒有人有鏈接到關於整個包的文章可以用不同的數據庫系統組件混合完成的設計模式?

這不是針對數據庫特定最佳實踐的問題,如database normalization。這也不是關於如何最好地使用certain technology的問題。

什麼設計模式可以用來正確混合奇怪的技術,以利用每個優勢來設計完整和高效的系統?從緩存到CRUD,擴展到數據完整性。

例如,在小型共享主機上,我可以運行諸如SQLite之類的博客,因爲它幾乎全部讀取並且沒有寫入。另一方面,有些項目採用低端VPS,我可以使用MySQL + APC緩存(畢竟它只有一臺服務器),因爲它們在高讀/寫時具有驚人的性能。擁有多個VPS memcached就是冠軍!

我也是MongoDB和PostgreSQL的粉絲。但是,MongoDB不使用任何形式的RAM限制,所以你應該真的有一個單獨的服務器。儘管如此,將大型對象存儲在MongoDB中並將其他重要數據留在PostgreSQL上是雙贏的。

但是,這些都是非常基本的設計選擇。大規模應用程序的設計具有更多的抽象,以促進縮放和減少故障點。

回答

1

我的建議是一般閱讀databases,着眼於瞭解已使用的不同種類的storage structures

一旦你有了這樣的背景,將當前技術(NoSQL)與存儲結構(無模式,水平可伸縮)相匹配變得更加容易。

+0

是的,對軟件目標(有這麼多!)的基本理解是非常重要的,所以你不要試圖強迫它做錯了任務。如果項目改變方向並停止使用它,那麼這非常危險! – Xeoncross 2010-10-22 20:47:31

+0

呵呵,你贏了。 ;) – Xeoncross 2010-10-29 15:26:52

+0

謝謝。非常感謝你。 – 2010-10-29 17:07:28