Database design 切分和规范化是相互排斥的吗?

Database design 切分和规范化是相互排斥的吗?,database-design,scalability,Database Design,Scalability,我遇到了一个让我疑惑的问题:如果使用分片方法来实现db可伸缩性,这是否意味着数据库是非规范化的?您能拥有一个规范化的分片数据库吗?它们不是相互排斥的。这两种方法在扩展海量数据集时经常使用,但其中一种方法实际上与另一种方法没有多大关系。您完全可以拥有一个分片的、规范化的数据库……或者一个非规范化的、非硬盘化的数据库 在切分中,您只需获取给定的模式(规范化或非规范化),并将其分布在多个物理/逻辑数据存储区中。例如,这允许所有具有特定特征(例如,“a-D”中的姓氏)的用户都生活在给定的数据库实例上。请

我遇到了一个让我疑惑的问题:如果使用分片方法来实现db可伸缩性,这是否意味着数据库是非规范化的?您能拥有一个规范化的分片数据库吗?

它们不是相互排斥的。这两种方法在扩展海量数据集时经常使用,但其中一种方法实际上与另一种方法没有多大关系。您完全可以拥有一个分片的、规范化的数据库……或者一个非规范化的、非硬盘化的数据库

在切分中,您只需获取给定的模式(规范化或非规范化),并将其分布在多个物理/逻辑数据存储区中。例如,这允许所有具有特定特征(例如,“a-D”中的姓氏)的用户都生活在给定的数据库实例上。请注意,如何切分数据库是一个至关重要的决定,它将高度依赖于实现

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

一些好的读物:


这两个选项并不是相互排斥的。这两种方法在扩展海量数据集时经常使用,但其中一种方法实际上与另一种方法没有多大关系。您完全可以拥有一个分片的、规范化的数据库……或者一个非规范化的、非硬盘化的数据库

在切分中,您只需获取给定的模式(规范化或非规范化),并将其分布在多个物理/逻辑数据存储区中。例如,这允许所有具有特定特征(例如,“a-D”中的姓氏)的用户都生活在给定的数据库实例上。请注意,如何切分数据库是一个至关重要的决定,它将高度依赖于实现

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

一些好的读物: