分片和归一化是否相互排斥?

时间:2009-08-27 16:44:17

标签: database-design scalability

我跑过comment让我感到奇怪:如果你使用分片方法来实现数据库可伸缩性,那是否意味着数据库是非规范化的?你有一个标准化的分片数据库吗?

1 个答案:

答案 0 :(得分:4)

不是互相排斥的。两者通常在缩放大量数据集时使用,但其中一个并不真正与另一个有很大关系。你绝对可以拥有一个分片的,规范化的数据库......或一个非规范化的非数据库。

在分片中,您只是采用给定的模式(规范化或不规范化)并将其分布在多个物理/逻辑数据存储中。例如,这允许您让具有特定特征的所有用户(例如,'A-D'中的姓氏)生活在给定的数据库实例上。请注意,如何对数据库进行分片是一项至关重要的决定,并且将高度依赖于实现。

另一方面,非规范化可以在有或没有分片数据库的情况下完成,并且旨在通过减少回答特定问题所需的连接/子查询来简单地进行查询。当然,您通常会以编程方式维护数据完整性。

一些好的阅读:

Sharding theory & practice

Some highly-scalable database implementations 'in the wild'