[原]数据库中的partitioning和sharding
1. 如何理解定义
在中文中,partitioning和sharding都有分区的意思。从大的方面来说,这两个词所执行的动作确实也和分区相关。partitioning在很多场合是vertical partitioning的简称,那么自然而然,sharding就是horizon partitioning了。但是此时又引入了两个名词,vertical和horizon。在什么东西上进行vertic和horizon进行操作?区别在哪里?
2.从一个特定点出发
要理解vertical partitioning和horizon partitioning,那么就应该知道这是站在什么角度去区分这两个动作。显然,我们一直在讨论的是数据,那么当然就是站在数据行的角度了。
vertical partitioning指的是将逻辑的数据行打散到多个数据行中(但是还是在同一个物理机上)。这么做的理由可以是为了性能、可用性或者可维护性。
horizon partitioning(sharding)指的是将存储的数据分散到多个物理机上。但是每个数据行的列是相同的。这么重的理由同样可以是为了性能、可用性或者可维护性。
3.总结
vertical partitioning是列(column)的角度去分区,而horizon partitioning是从行(row)的角度去分区。
4.引用
1.https://www.quora.com/Whats-the-difference-between-sharding-DB-tables-and-partitioning-them