首页 > 代码库 > [原]数据库中的partitioning和sharding

[原]数据库中的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

2.http://stackoverflow.com/questions/20388923/database-partitioning-horizontal-vs-vertical-difference-between-normalizatio

[原]数据库中的partitioning和sharding