我正在努力理解数据库分区的不同概念,以下是我的理解:
水平分区 / Sharding : 将一个表拆分为不同的表,每个表都包含最初表中的一部分行。例如: 将用户表按大陆进行拆分,如为北美洲创建一个子表,为欧洲创建另一个子表等。每个分区位于不同的物理位置(即不同的“机器”)。
就我所知,水平分区和Sharding 是完全相同的东西(?)。
垂直分区 : 我所了解到的(http://technet.microsoft.com/en-us/library/ms178148%28v=sql.105%29.aspx),有两种类型的垂直分区:
规范化(从数据库中删除冗余数据的方法是通过拆分表并使用外键链接它们)。
行拆分,这里是我不明白的地方:什么是规范化和行拆分之间的区别?这两种技术有何不同?
我还在这篇文章中读到过(Difference between scaling horizontally and vertically for databases),水平分区和垂直分区的不同之处在于前者通过添加更多机器来扩展,而后者通过向现有机器添加更多功率(CPU、RAM)来扩展。这是正确的定义吗?我认为这两种技术之间的核心差异在于您拆分表的方式。
很抱歉我提出了这么多问题,但我有点困惑,因为我找到的许多不同网站都说不同的事情。
任何有助于澄清的帮助都将不胜感激。 任何带有几个表格的清晰简明演示链接也将非常有帮助。