2009-08-27 5 views

答えて

4

これらは互いに排他的ではありません。大量のデータセットをスケーリングするときには両方ともよく使用されますが、実際にはあまり関係がありません。シャードされた、正規化されたデータベース...または非正規化された非シャードのデータベースを絶対に持つことができます。

シャーディングでは、(正規化されているかどうかにかかわらず)与えられたスキーマを取って、いくつかの物理/論理データストアに分散しているだけです。これにより、たとえば、特定の特性(たとえば、「A-D」の姓)を持つすべてのユーザーに、特定のデータベースインスタンスを使用させることができます。データベースを断片化する方法は決定的な決定であり、実装に依存していることに注意してください。

逆正規化は、断片化されたデータベースの有無にかかわらず行うことができ、特定の質問に答えるために必要な結合/サブクエリを減らすことによって単純にクエリすることを意図しています。もちろん、通常はプログラムでデータの整合性を維持します。

いくつかの良い読書:

Sharding theory & practice

Some highly-scalable database implementations 'in the wild'

関連する問題