[原]数据库中的partitioning和sharding

Posted Navono

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[原]数据库中的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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode_Partition Equal Subset Sum

mysql分区交换exchange partition

Spark——spark RDD中的partition和hdfs中的block的关系

mysql数据库分区及测试

Spark shuffle 机制

当 shuffle 分区大于 200 时会发生啥(数据帧中的 spark.sql.shuffle.partitions 200(默认情况下))