参考文章:几种常见的数据分区方法

数据分区方法

数据的分区方法(Partitioning methods)大概有以下几种:

  • 垂直分区(Vertical partitioning)
  • 水平分区(Horizontal partitioning)
  • 混合分区(Hybrid partitioning)

垂直分区(Vertical partitioning)

垂直分区需要创建一些较少列的表,每张表存储源表的部分列,以此达到数据的分区。比如我们有一张名为 iteblog 表,如下:

CREATE TABLE iteblog (attr1 INT,attr2 INT,attr3 INT,attr4 TEXT
);

使用垂直分区,可以将这张表拆分成以下形式:

这个在大数据数据仓库很常见,比如我们将一些数据量小,但是经常查询的数据放到 ES 中,数据量比较大的部分,但是不经常被查到放到 HBase 中。这种方法还可以根据说的访问频率,把不同的列数据存放到不同的存储介质中,以此节省存储成本。

水平分区(Horizontal partitioning)

水平分区分区也称为分片(sharding),其根据不同的分区算法将不同行的数据存储到不同的表中(比如关系型数据库中的分库分表)。例如,邮政编码小于50000 的客户存储在 CustomersEast 表中,而邮政编码大于或等于 50000 的客户存储在 CustomerWest 表中,所以分区表就是 CustomersEast 和 CustomersWest,这两张表加起来对外提供一个完整的视图。

分区算法

水平分区一般会选择表中的某列或某些列调用分区算法,计算其分区之后已经分到那张表中,这些被选中的列也称为 partitioning key,比较常见的分区算法有:

  • Range partitioning:通过确定分区键是否在某个范围内来选择分区。比如 zipcode 列的值在 0 到 1000 之间属于分区 A;值在 1001 到 2000 之间属于分区 B;值在 2001 到 3000 之间属于分区 C;以此类推。我们熟悉的 HBase 表中 Region 的分区就是用这种方法进行的。
  • Hash partitioning:这种分区算法也很常见。就是对选择的 partitioning key 计算其哈希值,得到的哈希值就是对应的分区。我们熟悉的 Kafka Topic 计算分区就是用这种分区算法的。这种分区算法理论上会将数据均匀分散到不同分区中。
  • Round-robin partitioning:这是最简单的分区算法,比如有3个分区,第一条数据放到第一个分区;第二条放到第二个分区;第三条数据放到第三个分区;第四条放到第一个分区;计算规则是 (i mod n),其中 n 代表分区数,i 代表第几条数据,得到的模就是对应的分区。
  • List partitioning:为分区分配一个值列表。如果分区键具有这些值中的一个,则选择分区。例如,“国家/地区”列为“冰岛”,“挪威”,“瑞典”,“芬兰”或“丹麦”的所有行都可以选择北欧国家/地区的分区。
  • Composite partitioning:允许上述分区模式的特定组合,例如,首先应用范围分区,然后应用哈希分区。一致性哈希(Consistent hashing)可以被认为是哈希(Hash partitioning)和列表分区(List partitioning)的组

几种常见的数据分区方法相关推荐

  1. 服务器维护简单的备份方案,几种常见的数据备份方案分享

    原标题:几种常见的数据备份方案分享 常见的数据备份系统主要有Host-Base.LAN-Base和基于SAN结构的LAN-Free.Server-Free等多种结构. Host-Based备份方式: ...

  2. 几种常见的数据分析图

    几种常见的数据分析图 import matplotlib.pyplot as plt from matplotlib import font_manager xticks(locs, [labels] ...

  3. 几种常见的数据备份方案

    最近一直在使用木浪科技的多备份进行网站的备份,这是一款全新的互联网产品,感觉在便捷性和有效性方面都好于传统的数据备份方案.向大家推荐. 今天,我们不了多备份,而是想和大家简单聊聊常见的数据备份方案. ...

  4. 几种常见的数据标准化的方法总结

    一.标准化 在进行数据分析时,数据具有单位是非常常见的,比如说GDP可以以亿作为单元,也可以以百万作为单位,那么此时就会出现由于单位问题导致的数字大小问题:这种情况对于分析可能产生影响,因此需要对其进 ...

  5. 21种常见大数据可视化图表

    为什么数据可视化如此重要? 数据可视化能把枯燥的数据变得有趣起来,不用再成千上万的数据面前焦头烂额. 这里小结了下21中常见的图表.附图有的是我从excel生成的,有的是比较懒直接百度找的. 柱状图 ...

  6. 3种常见的数据脱敏方案

    往期热门文章:1.BigDecimal使用不当,造成P0事故! 2.改造BeanUtils,优雅实现List数据拷贝 3.SpringBoot 启动时自动执行代码的几种方式,还有谁不会?? 4.让人上 ...

  7. 几种常见的数据同步方式

    数据仓库的特性之一是集成,即首先把未经过加工处理的.不同来源的.不同形式的数据同步到ODS层,一般情况下,这些ODS层数据包括日志数据和业务DB数据.对于业务DB数据而言(比如存储在MySQL中),将 ...

  8. 几种常见的数据可视化分析图表

    可视化技术的高速发展带动着数据的进步.数据可视化的数据分析图表,借助于可视化的大屏,将数据以图表的形式进行汇总分析,加快着用户对于数据的接受时间,同时对于整体的布局美观,也是一种合理化的设计.如何设计 ...

  9. Hive的几种常见的数据导入方式

    这里介绍四种: (1).从本地文件系统中导入数据到Hive表: (2).从HDFS上导入数据到Hive表: (3).从别的表中查询出相应的数据并导入到Hive表中: (4).在创建表的时候通过从别的表 ...

最新文章

  1. K-d tree 算法
  2. 几个必知的python小知识
  3. Java中JFrame怎样控制闪烁_在JFrame Java中闪烁
  4. ajax 五种状态,ajax的五种状态
  5. python selenium采集速卖通_2.不苟的爬虫小教程系列:python爬虫技术栈介绍
  6. jdbc驱动程序_JDBC操作数据库的步骤
  7. 精简Linux文件路径
  8. a标签的onclick事件_JavaScript提高:ASP.NET使用easyUI TABS标签显示问题
  9. mysql免费版稳定吗_mysql免费版好用么
  10. C语言文件操作FILE文件指针fopen文件打开操作
  11. 在椭球面上使用球面坐标系法做三重积分
  12. 记第三期“晋IT”分享成长沙龙
  13. java ico_Java 读写 ICO 图像
  14. vue字符串生成二维码的相关组件
  15. Java IO与文件读写
  16. 安装html5 win7,win7官方正版64位系统安装教程
  17. iOS开发之录屏时如何使系统录不到敏感信息
  18. javaweb仓库管理系统的实现,基于ssm+mysql实现的WMS进销存出库入库系统
  19. element ui icon 图标 element icon 图标 element图标
  20. 对抗生成神经网络-GAN通俗理解

热门文章

  1. Android 优惠券背景
  2. linux内核是干什么,linux内核开发工程师
  3. 用 顶部tab栏 做排班表
  4. 实验:网络常见的9个命令
  5. CRM 建设方案(01):CRM基础
  6. abap bdc附加选项
  7. 数据可视化-echarts入门、常见图表案例、超详细配置解析及项目案例
  8. 数据挖掘著名案例——啤酒与尿布
  9. Unity 抛物线 弹道(一)
  10. Java EE Security API ,给企业最棒的安全守护!