分布式数据库如何玩转HTAP场景

发布时间:2022-01-19 09:24:05 作者:柒染
来源:亿速云 阅读:213

这篇文章给大家介绍分布式数据库如何玩转HTAP场景,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

传统数据库架构面临的痛点

1. 集群分散不利于整合,数据结构同步工作量大

第一招:数据源的数据同步 

通过开发消费kafka的程序将数据同步到SequoiaDB数据中,保持和生产实时同步。以下为数据同步加载架构图:

第二招:弹性扩容

第三招:多模数据引擎使用

MySQL 实例适用于比较熟悉 MySQL 的操作人员,适合精准查询、业务数据写入、柜面查询、OLTP场景。增删查改操作和 MySQL 完全一致,底层数据保存在 SequoiaDB。

第四招:多种 SQL 引擎关联使用方法 

4.1 MySQL 创建表

create  table temp.test
  (    
    numcode smallint,    
    agentcode char(12),    
    bankname varchar(120),    
    flag decimal(8,4),    
    timecode datetime
  );
insert into  temp.test (numcode,agentcode,bankname,flag,timecode)values(1,'test1','beijingbank1',10.1,'2019-06-21 10:07:52’);
insert into  temp.test (numcode,agentcode,bankname,flag,timecode)values(2,'test2','beijingbank2',10.2,'2019-06-22 10:07:52’);
insert into  temp.test (numcode,agentcode,bankname,flag,timecode)values(3,'test3','beijingbank3',10.3,'2019-06-23 10:07:52’);
insert into  temp.test (numcode,agentcode,bankname,flag,timecode)values(4,'test4','beijingbank4',10.4,'2019-06-24 10:07:52');

更新 temp.test 中 numcode=1 的记录中 bankname 为 "guangzhoubank" 

  mysql> update  temp.test  set  bankname="guangzhoubank"  where  numcode=1;                    
  Query OK, 0 rows affected (0.00 sec)Rows matched: 0  Changed: 0  Warnings: 0
 mysql> select * from   temp.test;

删除 temp.test 表中 numcode=1 的这条记录

  mysql> delete  from  temp.test where  numcode=1;
  Query OK, 0 rows affected (0.01 sec)
  mysql> select * from   temp.test;

在 PostgreSQL 客户端创建映射表,能够查询出数据

  temp=# create foreign table test
  temp-# (
  temp(# numcode int,
  temp(# agentcode text,
  temp(# bankname  text,
  temp(# flag decimal(8,4),
  temp(# timecode  text
  temp(# )
  temp-# server sdb_server
  temp-# options ( collectionspace 'temp', collection 'test', decimal 'on' );

连接 SparkSQL 客户端创建映射表,能够查询出数据

  create table temp.test (    
    numcode int,    
    agentcode string,    
    bankname string,    
    flag decimal(8,4),    
    timecode string
  )USING com.sequoiadb.spark OPTIONS ( host '10.139.***.***:11810', collectionspace 'temp', collection 'test') ;

以上证明 MySQL 、PostgreSQL 和Spark 三者之间数据是通的,数据可以共用。

4.2 使用Spark生成子表

 create table temp.test2 USING com.sequoiadb.spark OPTIONS ( 
    host '10.139.***.***:11810’,
    domain 'allDomain’, 
    collectionspace 'temp’, 
    collection 'test2’, 
    ignoreduplicatekey 'true'  , 
    shardingkey '{"_id":1}’, 
    shardingType 'hash’ , 
    compressiontype 'lzw’ , 
    autosplit 'true’
  )as select * from temp.test ;

连接 MySQL 客户端,映射 Spark 创建的新表能够查询出同步的数据

mysql> create  table temp.test2    
     -> (    
     ->     numcode smallint,    
     ->     agentcode char(12),    
     ->     bankname varchar(120),    
     ->     flag decimal(8,4),    
     ->     timecode datetime    
     -> ); 
  mysql> select * from temp.test2;

第五招:多副本机制的应用 

5.1 同城三副本高可用架构

其中有主备两个机房,其中主机房部署两个节点,备机房部署一个节点。三台机器共同组成一个数据组,其中选举逻辑遵循 Raft 协议。

5.2 主备一致性设置

在分布式系统中,一致性是指数据在多个副本之间数据保持一致的特性。SequoiaDB 巨杉数据库支持不同级别的主备一致性策略,以适配不同的应用场景。用户可根据业务对数据安全性和服务可用性的要求,选择不同的一致性策略。

1)强一致性

写所有节点当发生写操作时,数据库会确保所有复制组节点都同步完成才返回。写操作处理成功后,后续读到的数据一定是当前复制组内最新的。优势是能够有效的保证数据的完整性和安全性,劣势则是会降低复制组的写入性能,并且当集群内有一个节点故障或者异常时,无法写入数据,降低高可用性。

             在核心交易型业务中,为了保证数据安全性,同时可以牺牲一定的写入性能时,推荐使用强一致性策略。

2)最终一致性

为了提升数据库的高可用性,以及实现数据的读写分离,SequoiaDB 默认采用“最终一致性”策略。在读写分离时,读取的数据在某一段时间内可能不是最新的,但副本间的数据最终是一致的。

写主节点在主节点执行写操作成功后,写操作即可返回。对数据查询一致性要求不高的业务,如历史数据查询平台,夜间批量导入数据以及白天提供查询业务,推荐使用写主节点的最终一致性策略。

其中强一致还是最终一致创建集合时由 ReplSize 这个参数来指定,创建集合时如设置 ReplSize 为-1表示强一致,默认为 ReplSize 值为1表示最终一致。根据使用场景来选择使用强一致还是最终一致,用户可以通过 db.setAttributes() 修改 ReplSize 属性。

第六招:多样化的监控工具

SequoiaPerf 工具除了能够协助用户对慢查询快速定位分析,还能够帮助用户全面监控 SequoiaDB 数据集群。在 SequoiaPerf 的首页上,用户可以对 SequoiaDB 数据库集群运行情况做一个宏观的浏览,快速查阅当前集群的运行情况。

在 SequoiaPerf 的服务器资源页面上,用户可以了解服务器更加详细的信息。

例如服务器磁盘的I/O使用情况,可以通过放大图表获得更加详细的数据。同时用户也可以通过页面右上角的时间栏,选择查看近期一段时间的资源使用情况。

小结

1. 数据库在数据管理中的突出能力

SequoiaDB 巨杉数据库是一款金融级分布式关系型数据库,产品引擎采用原生分布式架构,100%兼容 MySQL 语法和协议,支持完整的 ACID 和分布式事务。同时 SequoiaDB 还提供多模(multi-model)数据库存储引擎,原生支持多数据中心容灾机制,是新一代分布式数据库的首选。SequoiaDB 巨杉数据库可以为用户带来如下价值:

2. 实践成果

数据库完美解决目前传统数据库面临的痛点,降低了IT成本、提高运维效率,使数据能够有效给企业提供服务。其优势如下:

关于分布式数据库如何玩转HTAP场景就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 玩转Fiddler脚本
  2. Python 玩转 Excel

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

htap 数据库

上一篇:http1.1相对http2有什么缺点

下一篇:html5中有哪些常用框架

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》