谈数据切分后的一些解决思路

标签: 随笔文章 | 发表时间:2013-12-22 10:40 | 作者:人月神话
出处:http://blog.sina.com.cn/cmmi
当我们在谈去IOE时候,一定会带来的一个问题就是单节点本身的计算或存储能力不足而导致的数据水平或垂直切分,那在数据切分后如何解决这些问题就成为一个好的DaaS层能否真正发挥作用的重点。

对于分布式事务的问题,前面已经谈了很多,对于一个DaaS下针对逻辑库(一个逻辑库下面存在多个物理库节点)是可以通过标准的XA两阶段提交协议来实现分布式事务的,但是本身不仅仅是可靠性的问题,更加关键的是性能问题,特别是在高并发下的性能问题。因此在应用实现的过程中还是需要尽量避免使用分布式事务,仅仅在需要使用分布式事务的少数特殊场景通过显性声明的方式使用分布式事务。对于能够采用事务最终一致性BASE的场景,尽量是结合消息中间件的能力,采用最终一致性的方式;对于不能接受最终一致性的场景尽量采用事务补偿的方式来弥补事务失败造成的影响。

在数据拆分有原有的一个单库多表关联查询操作,往往会转变为一个跨库的join查询操作,而现在的针对mysql的daas方案很难真正的支撑到这种类型的操作,即使能够支持估计也很难真正达到一个高性能。在我们原来的设想中这些问题都简单的转化为应用层去解决,这务必是增加了一个应用层开发的复杂度和难度。而针对这种情况最好的方法是构建一个统一的领域服务层来解决,即最终的上层或顶层是关注的领域服务能力,虽然跨库的问题在DaaS层很难解决,但是在领域服务层却比较容易定制开发相应的服务来解决。

举例来说,一个采购订单查询,采购订单头和明细信息在一个逻辑库,而对于物料和供应商主数据在另外一个物理库,但是对于应用来说关注的是一个完整的采购订单信息。因此完全是可以在领域服务层提供一个采购订单查询的服务,在服务内部进行多次的DaaS层服务调用和组装来完成内部的复杂性。这也是我们常说的,但进行数据库拆分后,务必需要引入更加强壮的领域服务层的原因。

在数据拆分后还有一个比较难以解决的问题,即是对于业务系统的大量查询分析和统计功能的处理,由于我们的数据库进行了切分,导致这些功能已经类似于传统BI里面的OLAP层的功能特性。对于这种业务场景和需求,往往并没有完全的实时性需求,我们能够满足准实时性就可以了。因此对于这类功能推荐的方法仍然是需要将当前的各个分库里面的数据整合到NewSql数据库里面进行处理(Hive,infobright,impala)等,这些数据库需要满足的特性就是MPP+Share nothing架构特性,在这种架构下可以看到对于海量数据的分析和统计可以保证业务需要的准实时性要求,唯一需要考虑的是当前很多的NewSQL数据库都是一个读库,很难进行CUD等各种操作,因此转化后需要解决的问题就是对于业务库中的增量数据如何实时的更新到NewSQL数据库里面,注意是增量更新而不是类似当前很多方案里面的全库重新导入和生成,这也是在解决查询统计功能的一个难点。

对于MySQL的读写分离集群我们看到,随着slave节点的增加,为了保证master和slave节点之间的一致性,将会出现明细的延迟,也直接影响到应用CUD操作的性能。对于这个问题,当前可以考虑的解决方案就是要拆分为两级的读写分离集群,对于第一级的读节点保证高一致性和性能,对于第二级允许有较大的延迟,仅仅用于查询分析等。

在最近的一年过程中,我们对基于Mysql的DaaS层产品逐步的改进和完善,包括分布式事务,DDL操作,函数和存储过程支持,多租户和资源隔离,子查询,底层多种数据库适配和支持等做了大量的改进和性能测试。已经基本形成一个可以在实际业务中应用的产品,同时该产品也开始应用到我们自研的ESB服务总线中。

  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [数据] 推荐:

数据仓库

- Ran - Linux@SOHU
翻译:马少兵、曾怀东、朱翊然、林业. 尽管服务器存储、处理能力得到有效的提高,以及服务器价格的降低,让人们能够负担起大量的服务器,但是商业软件应用和监控工具快速的增加,还是使得人们被大量的数据所困扰. 在数据仓库领域中的许多系统管理员、应用开发者,以及初级数据库管理员发现,他们正在处理“海量数据”-不管你准备与否-都会有好多不熟悉的术语,概念或工具.

数据抽取

- - 数据库 - ITeye博客
转自: http://wiki.mbalib.com/wiki/%E6%95%B0%E6%8D%AE%E6%8A%BD%E5%8F%96#.   数据抽取是指从源数据源系统抽取目的数据源系统需要的. 实际应用中,数据源较多采用的是. 数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数 据库中抽取出来,并转换成自己的ETL 工具可以识别的格式.

数据库sharding

- - 数据库 - ITeye博客
当团队决定自行实现sharding的时候,DAO层可能是嵌入sharding逻辑的首选位置,因为在这个层面上,每一个DAO的方法都明确地知道需要访问的数据表以及查询参数,借助这些信息可以直接定位到目标shard上,而不必像框架那样需要对SQL进行解析然后再依据配置的规则进行路由. 另一个优势是不会受ORM框架的制约.

数据脱敏

- - IT瘾-bigdata
作者|李呈祥,其中部分内容由十一城补充. 数据脱敏(Data Masking),又称数据漂白、数据去隐私化或数据变形. 百度百科对数据脱敏的定义为:指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据 的可靠保护. 这样,就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集.

数据分析之如何用数据?

- - 互联网分析沙龙
光知道怎么看数据,还是不成,你得熟悉这些数据拿到手上之后怎么去用它,怎么让数据显示出来它本身的威力来. 第一个部分,是看历史数据,发现规律. 以社区中的活动和电商中的促销为例,这些都是常见的活动,活动做得好的话有意想不到的效果. 在做这样的活动,最好是拿到前一个月或者两个月的历史数据. 对电商来说,从这里面要去分析各个品类的销售情况,那个品类销量最大,那个品类销量最小,每月或者每周的平均增长率和符合增长率是多少.

excel数据导入mysql数据库

- - 互联网 - ITeye博客
1、excel另存为txt.       选中将要导出的数据列,然后另存为选择其它格式=>文本文件(制表符分割). E:\项目\fblike\game_code_san.txt. 2、txt导入到mysql数据库. load data infile 'E:\\项目\\fblike\\game_code_san.txt' into table game_code_san(code).

数据批量导入Oracle数据库

- - Oracle - 数据库 - ITeye博客
今天学习了一个新的东西,觉得还挺有意思的,也是从别出COPY 的,. SQL*LOADER是大型数据. 仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL). 现在,我们抛开其理论不谈,用实例来使. 您快速掌握SQL*LOADER的使用方法.   首先,我们认识一下SQL*LOADER.

数据分析之如何用数据?

- - 人人都是产品经理
光知道怎么看数据,还是不成,你得熟悉这些数据拿到手上之后怎么去用它,怎么让数据显示出来它本身的威力来. 第一个部分,是看历史数据,发现规律. 以社区中的活动和电商中的促销为例,这些都是常见的活动,活动做得好的话有意想不到的效果. 在做这样的活动,最好是拿到前一个月或者两个月的历史数据. 对电商来说,从这里面要去分析各个品类的销售情况,那个品类销量最大,那个品类销量最小,每月或者每周的平均增长率和符合增长率是多少.

Solr从数据库导入数据

- - CSDN博客互联网推荐文章
一. 数据导入(DataImportHandler-DIH). DIH 是solr 提供的一种针对数据库、xml/HTTP、富文本对象导入到solr 索引库的工具包. apache-solr-dataimportscheduler-1.1.jar(增量导入使用). 数据库对应的jdbc驱动包这里使用的是Oracle oracle10g.ja放入Tomcat6.0.36/webapps/sol/WEB-INF/lib 中.

[原]数据仓库元数据管理

- - oycn2010的专栏
元数据管理, 简单的做就是EXCEL结合版本管理等传统工具管理, 专业点就用专门的元数据管理工具;. 数据字典--> 数据知识库. 业务元数据,技术元数据,管理元数据. 参照:SAP元数据管理平台:按业务(角色)分类,按技术类型分类(特征,关键值,DSO,InfoCube),数据流程图. 按照传统的定义,元数据(Metadata)是关于数据的数据.