(十一)数据分片(Sharding)和数据分区(PARTITIONing)简述

即便是 MariaDB,也有一个想要处理大数据的心。虽然可能跟其它的例如 HBase、Hive 之类的比有些差异和不足,但并不影响壮志。

简单列举两个要处理大量数据的例子:

  • 1、IoT Sensor Networks
    • 存取特性: 很少大量写入,但多大量读取
    • 事务需求: 少
    • 资料量: 累积数量庞大
  • 2、AI Machine Learning 领域
    • 搜集大量数据进行分析

使用 MariaDB 处理大量数据,先来了解一下这两点。

DATA Sharding (数据分片)和 Data Partition(数据分区)

数据分片简述

  • 单一数据库系统已无法处理 Big Data 服务需求
  • 大部分数据库瓶颈皆处于 I/O 效能问题
  • 提供数据分片技术将数据分散储存于多个数据库实例中
  • 提供水平式,垂直档案分布于不同的 I/O 系统,加速数据存取
  • 可横跨多种不同功能数据库系统
  • 相关技术或引擎:FEDERATEDX , CONNECT , SPIDER , MAXSCALE

关于数据分片,这里有一篇 2019 年 2 月发布的文章,到今天(2020/06/18)一年多,有 169.9k 的浏览量,讲解说明还不错,推荐阅读:

Understanding Database Sharding

个人理解来说:

分片(Sharding) 是一种与水平切分(horizontal partitioning)相关的数据库架构模式,用于在特定的 SQL 操作中减少数据读写的总量以缩减响应时间。——例如将一个表里面的行(row),分成多个不同的表的。

分区(PARTITIONing) 是分片的具体做法实现,例如水平分区、垂直分区。

分片(Sharding)将一个数据分成两个或多个较小的块,称为逻辑分片(logical shards)。然后,逻辑分片(logical shards)分布在单独的数据库节点上,称为物理分片(physical shards)。物理分片(physical shards)可以容纳多个逻辑分片(logical shards)。尽管如此,所有分片中保存的数据,共同代表整个逻辑数据集。

数据库分片(Database shards)是无共享架构( shared-nothing architecture)的一个例子。这意味着分片是自治的:分片间不共享任何相同的数据或服务器资源。但是在某些情况下,将某些表复制到每个分片中作为参考表是有意义的。例如,假设某个应用程序的数据库依赖于重量测量的固定转换率。通过将包含必要转换率数据的表复制到每个分片中,有助于确保查询所需的所有数据都保存在每个分片中。

通常,分片(Sharding)在应用程序级别进行实现。这意味着应用程序包含“要向哪个分片发送读和写”的代码。但是,某些数据库管理系统内置了分片功能,允许您直接在数据库级别实现分片。

分片的优点:

高可用性(High Availability):对于分片数据库,如果一个数据库分片出现故障,则仅会使部分用户无法使用应用程序或网站的一部分,而其它分片可以继续运行而不会出现任何问题。如果数据库未分片,则中断可能会导致整个应用程序不可用。

更快的查询响应(Faster queries response):对尚未分片的数据库提交查询时,它可能必须搜索查询表中的每一行,才能找到您要查找的结果集。对于具有大型整体数据库的应用程序,查询会变得异常缓慢。但是,通过将一个表拆分为多个表,查询必须遍历更少的行,并且其结果集可以更快地返回。

更多的写带宽(More write bandwidth):无需主数据库序列化写操作,就可以并行写操作,从而提高了写吞吐量。写作是许多网站的主要瓶颈。

向外扩展(Scaling out):对数据库进行分片可以帮助促进水平扩展(称为向外扩展)。

分片的缺点:

增加系统的复杂性(Adds complexity in the system):恰当地实现分片数据库体系结构是一项复杂的任务。如果处理不正确,则存在很大的风险,即分片过程可能导致数据丢失或表损坏。分片对团队的工作流程也有重大影响。用户必须从多个入口位置管理数据,而不是从单个入口点管理和访问数据,这可能对某些团队具有潜在地破坏性。

重新平衡数据(Rebalancing data):在分片数据库体系结构中,有时分片会超出其它分片而变得不平衡,这也称为数据库热点(database hotspot)。在这种情况下,分片数据库的任何好处都会被抵消。数据库可能需要重新分片以允许更均匀的数据分发。必须从一开始就建立重新平衡,否则在重新分片时,将数据从一个分片移动到另一个分片需要大量的停机时间。

从多个分片连接数据(Joining data from multiple shards):要实现一些复杂的功能,我们可能需要从分布在多个分片中的不同来源提取大量数据。我们无法发出查询并从多个分片获取数据。我们需要对不同的分片发出多个查询,获取所有响应并将其合并。

没有原生支持(No Native Support):并非每个数据库引擎都原生支持分片。因此,分片通常需要自己实现。这意味着通常很难找到有关分片的文档或解决问题的技巧。

ref: https://medium.com/system-design-blog/database-sharding-69f3f4bd96db

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352