2009-08-27 5 views

Répondre

4

Ils ne s'excluent pas mutuellement. Les deux sont souvent utilisés lors de la mise à l'échelle de jeux de données volumineux, mais l'un n'a pas vraiment grand-chose à voir avec l'autre. Vous pouvez absolument avoir une base de données normalisée fragmentée ... ou une base de données dénormalisée et non-durcie.

En sharding, vous prenez simplement un schéma donné (normalisé ou non) et vous le distribuez dans un certain nombre de magasins de données physiques/logiques. Cela vous permet, par exemple, d'avoir tous vos utilisateurs avec une caractéristique particulière (par exemple, le nom de famille dans 'A-D') pour vivre sur une instance de base de données donnée. Notez que la façon dont vous partitionnez votre base de données est une décision cruciale et dépendra fortement de la mise en œuvre. D'autre part, la dénormalisation peut être effectuée avec ou sans base de données fragmentée et est destinée à simplement interroger en réduisant les jointures/sous-requêtes nécessaires pour répondre à une question particulière. Bien sûr, vous maintiendrez généralement par programme l'intégrité des données.

Quelques bonne lecture:

Sharding theory & practice

Some highly-scalable database implementations 'in the wild'

Questions connexes