数据架构难点-数据分布(r12笔记第43天)

简介:    数据架构是架构设计中很重要的一环,可能对于很多DBA而言,数据管理,数据优化,数据迁移类的工作居多,而对于数据架构方面的工作也会思考少一些,这方面就会薄弱一些。

   数据架构是架构设计中很重要的一环,可能对于很多DBA而言,数据管理,数据优化,数据迁移类的工作居多,而对于数据架构方面的工作也会思考少一些,这方面就会薄弱一些。

   如果在这个行业里有一定的经验,就会发现如果细细来看数据架构,原来很多东西我们是在这么用,但是没有一个系统的整理和分类来归纳出来,有些时候我们做技术很容易陷入一个漩涡,那就是很容易去考虑一些非常具体的事情,而很难从整体上来把握。今天下午看了下温昱老师的书《一线架构师实践指南》,这方面的很多盲点都得到了一个系统的解答。

    数据架构中的一个难点:数据分布问题在数据架构中是很重要的一环。随着数据,系统量级,业务场景的需求,数据分布有6中具体策略。分别是独立Schema,集中,分区,复制,子集,重组。

   这几个概念听起来可能有些抽象,我们逐个来说一下,其实我们很多场景就是这么在用。

   独立Schema:一个大系统由很多子系统组成,比如业务A有表testa,业务B有表testb,则他们都有独立的Schema来定义存放,这样能够减少系统之间的相互影响,避免将问题复杂化。

这一点来说在Oracle是用户Schema,在MySQL则是database这个层级体现出来。

   集中:这种策略的核心就是“集中存储,分布访问”,比如很多业务都会访问表test1,test2,test3,则这些数据是集中存储起来的,不同的业务根据需求来分布访问。这一点用Oracle RAC来解释最清晰不过了。可以使用共享存储来集中式存储应用数据,然后通过多个计算节点来扩展读写需求。

    分区:这个分区和数据库里的分区表不同,这个是基于架构层面,水平分区和垂直分区,水平分区的使用场景要广泛的多,比如一个用户信息表,存放了不同的区域的用户数据,我们可以根据地域来作为区分依据,这样就把这个表的数据做这样的拆分,放在不同的用户下,或者放在同一个用户表结构相同,表名不同的表里里面。 而相对来说,垂直分区的使用场景就局限很多,比如表test有a,b,c,d四个字段,做垂直分区就可以拆分,比如(a,b),(c,d) 。总体来说分区随着数据量的增长需要提前规划和设计。 

    复制:这个概念说通俗一些就是多副本,存在多分数据的情况,这个主要是通过实时或者快照级别来保持多个数据副本的数据一致性。这个策略在MySQL中Master,Slave的读写分离就是一个很典型的例子,或者是MySQL最新的MGR就是一个很经典的说明。 Oracle中的Primary,Active Data Guard也是一种体现。

最终是保证有多分数据副本,达到数据一致性。

    子集:这个模式相对有些抽象,和复制有一些相似,但是是子集数据的一致性,比如我们有大量的用户交易数据,根据不同的渠道,比如网银渠道,手机微信支付,支付宝支付等会做特定的数据子集的一致性同步。

    重组,这个分为两种类型,统计性重组和结构性重组,就是从不同的维度来进行数据钻取。比如我们根据一些交易数据的细节,需要得到一个基本的数据情况,比如交易流水总量,账单信息等,在很多统计分析的场景中就会存在,这是统计性重组。

而如果我们有用户的概要信息,用户的详细信息放在更多具体表中关联,这样的情况就是结构性重组。其实Oracle中的物化视图刷新在平日的工作中,这两种类型就很常见。

   

   我们简单总结一下,比如一个医院的用户数据和病历数据,从数据架构的分布角度来考虑,该怎么设计,首先是用户数据,这个极可能要统一集中式管理,所以集中就是一个相对合适的方案,而用户的病历数据考虑到地域性的特点,为了提高性能和访问情况,可以考虑使用复制的方案。

    比如电信行业的计费数据,数据量非常大,在数据架构的分布上,就需要采用分区的策略,比如我们按照账期的业务规则来划分,把不同账期的数据分布在不同的数据存储中。

   比如游戏行业数据架构中的数据分布,不同的游戏服彼此独立,没有强耦合关联,就可以考虑使用分区的策略,而用户的基础信息这些需要做到平台化,基于管理和安全角度,最好能够统一规划,所以集中就是一个很不错的方案。

    当然从质量属性方面来看。这6中方案还是有一定的特点,有优势有劣势。

     我们就从可靠性,可伸缩性,通信开销,客观理性,数据一致性这几个方面来看看六种数据分布方案的情况。

    可靠性上,复制最佳。

    可伸缩性方面,分区中的水平分区最佳

    通信开销方面,独立Schema最佳

    可管理性方面,独立Schema和几种策略最佳

    数据一致性方面,集中最佳。

可以发现,子集和重组均没有入榜,也能够间接说明这两种数据分布还是有一些特定的使用场景,不具有普适性。

   


   

目录
相关文章
|
3月前
|
监控 负载均衡 Dubbo
|
5月前
|
前端开发 JavaScript 数据库
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(2)
9.8 收藏图片 前面已经学习过如何使用关联表来表示多对多关系,缺点是只能表示关系,不能存储数据(如我还想记录下收藏图片的时间戳)。这种情况下,我们可以使用关联模型来表示多对多关系。 在关联模型中,我们将Photo模型与User模型的多对多关系,分离成了User模型和Collect模型的一对多关系,和Photo模型与Collect模型的一对多关系。
90 0
|
3月前
|
存储 传感器 网络协议
《物联网技术》课程笔记——第二章 物联网技术架构
《物联网技术》课程笔记——第二章 物联网技术架构
|
4月前
|
达摩院 Java Apache
惊动“达摩院”的分布式架构笔记:火于互联网,据说来自于清华
一个星期前,一本Java架构笔记突然在互联网上爆火。因为内容的深度和广度,甚至连阿里最牛的研发中心都被惊动了,而且作者一周后直接被阿里挖走后定级P8,据说作者来自于清华。
|
4月前
|
安全 数据挖掘 定位技术
笔记 - 《业务架构解构与实践》
《业务架构解构与实践》的笔记
|
4月前
|
运维 Cloud Native 安全
笔记 - 《阿里云云原生架构实践》
《阿里云云原生架构实践》的笔记
|
4月前
|
NoSQL Java 程序员
阿里开发人员献礼“Java架构成长笔记”,深入内核,拒绝蒙圈
提起阿里,行外人联想到的关键词无非是“交易”、“淘宝”、“支付宝”,但对于程序员来说,阿里庞大的技术体系才是最吸引人的。实际上阿里作为国内一线互联网公司的头把交椅,内部的技术体系和发展都是备受关注的,对于程序员来说,能够进到阿里工作,就是对自己的技术水平进行一个提升和学习。
阿里开发人员献礼“Java架构成长笔记”,深入内核,拒绝蒙圈
|
4月前
|
消息中间件 架构师 Java
Java架构速成笔记:七大专题,1425页考点,挑战P8岗
我们都知道,在程序员的职业生涯中,有多个发展方向,不过就数据表明,近年来选择架构师方向的开发人员也越来越多。
|
4月前
|
SQL 存储 关系型数据库
华为大佬的“百万级”MySQL笔记,基础+优化+架构一键搞定
MySQL不用多说,大家都知道它是目前最为活跃热门的开源数据库,由于成本低,操作简易的特点,所以在互联网企业中被广泛使用,即使是头部的BATJ。由此可见,想要在互联网行业混得风生水起,或者说想要进入BATJ等一线互联网公司,那么熟练掌握MySQL必定是一块必要的敲门砖。
|
5月前
|
存储 前端开发 JavaScript
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(1)
9 图片社交网站 本章新涉及的Python包:Flask-Dropzone, Pillow, Flask-Avatars, Whoosh, Flask-Whooshee。 9.1 项目组织架构 1、功能式架构
64 0