2009-08-27 45 views

回答

4

這不是相互排斥的。在縮放大量數據集時通常都會使用這兩種數據集,但其中一個與其他數據集並沒有多大關係。你絕對可以擁有一個分片的,規範化的數據庫......或者一個非規範化的非分散數據庫。

在分片中,您只需要一個給定的模式(規範化或不規範)並將其分佈到多個物理/邏輯數據存儲中。例如,這允許您讓所有具有特定特徵(例如'A-D'中的姓氏)的用戶在指定的數據庫實例上生存。請注意,如何分割數據庫是一個至關重要的決定,並且將高度依賴於實施。

另一方面,非規範化可以在有或沒有分片數據庫的情況下完成,並且旨在通過減少回答特定問題所需的連接/子查詢來簡化查詢。當然,那麼你通常會以編程方式維護數據的完整性。

一些良好的閱讀:

Sharding theory & practice

Some highly-scalable database implementations 'in the wild'