[原]数据库中的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
以上是关于[原]数据库中的partitioning和sharding的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode_Partition Equal Subset Sum
Spark——spark RDD中的partition和hdfs中的block的关系
当 shuffle 分区大于 200 时会发生啥(数据帧中的 spark.sql.shuffle.partitions 200(默认情况下))