返回顶部
首页 > 资讯 > 数据库 >分布式数据库如何玩转HTAP场景
  • 217
分享到

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

2024-04-02 19:04:59 217人浏览 八月长安
摘要

这篇文章给大家介绍分布式数据库如何玩转HTAP场景,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。传统数据库架构面临的痛点1. 集群分散不利于整合,数据结构同步工作量大第一招:

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

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

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

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

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

第二招:弹性扩容

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

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

  • postgresql 实例适用于比较熟悉 PostgreSQL 的操作人员,适合精准查询和OLAP场景。支持增删查改等功能和 PostgreSQL 使用完全一致,采用外表的方式将数据保存在 SequoiaDB 中。

  • spark 实例为分布式集群,SparkSQL 适合报表分析、大表关联查询和 OLAP 场景。跨库关联查询比较友好,支持标准 SQL、支持 JDBC 访问、支持 python 对接查询。

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

4.1 MySQL 创建表

  • 创建 temp.test 这张表 ,其中字段信息如下所示 :

create  table temp.test
  (    
    numcode smallint,    
    agentcode char(12),    
    bankname varchar(120),    
    flag decimal(8,4),    
    timecode datetime
  );
  •  给 temp.test 这个表插入下面的4条记录:

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生成子表

  • 连接 Spark 客户端,使用 create table as 的方式创建新表 test2

 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 巨杉数据库可以为用户带来如下价值:

  • 完全兼容传统关系型数据,数据分片对应用程序完全透明

  • 高性能与无限水平弹性扩展能力

  • 分布式事务与 ACID 能力

  • 同时支持结构化、半结构化与非结构化数据

  • 金融级安全特性,多数据中心间容灾做到 RPO = 0

  • HTAP 混合负载,同时运行联机交易与批处理任务且互不干扰

  • 多租户能力,云环境下支持多种级别的物理与逻辑隔离 

2. 实践成果

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

  • 提高查询效率,使用 Spark 大表查询效率提高20倍。

  • 容量多,合并同步了多个生产库、历史库的全部数据。

  • 模式新,支持多种数据类型、结构化和非结构化。

  • 扩容简单,支持快速扩容和缩容,基本有机器就能扩容。

  • 上手简单,一键部署使用,降低dba学习成本。

  • 查询引擎丰富,支持多种 SQL 查询引擎,丰富业务使用。

  • 接口丰富,除了 SQL 还支持 JDBC、ODBC 和 api 多种接口,灵活使用。

  • 系统完备,有新的业务系统随时可以接入。

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

您可能感兴趣的文档:

--结束END--

本文标题: 分布式数据库如何玩转HTAP场景

本文链接: https://lsjlt.com/news/71896.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 分布式数据库如何玩转HTAP场景
    这篇文章给大家介绍分布式数据库如何玩转HTAP场景,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。传统数据库架构面临的痛点1. 集群分散不利于整合,数据结构同步工作量大第一招:...
    99+
    2024-04-02
  • 巨杉Tech | 分布式数据库六招“玩转”HTAP场景
    随着企业应用的类型不断拓展,在海量数据、高并发、多类型数据的应用场景下,底层数据平台对于混合数据类型、混合业务场景处理能力的要求不断扩大,这就催生了 HTAP(混合事务和分析处理)的需求。   新一代分布式数据库,对于HTAP类型的处理...
    99+
    2014-07-07
    巨杉Tech | 分布式数据库六招“玩转”HTAP场景
  • 【巨杉数据库SequoiaDB】巨杉Tech |巨杉数据库的HTAP场景实践
    01 背景   由于业务形式的发展,越来越多的需求需要对交易数据进行实时分析,例如推荐、决策、监控等,传统的处理办法是使用ETL的方式把OLTP业务产生的数据同步到OLAP的数据数据库,导致了数据需要在不同的数据库之间流转,耗费时间成...
    99+
    2018-09-25
    【巨杉数据库SequoiaDB】巨杉Tech |巨杉数据库的HTAP场景实践
  • 如何理解分布式锁的场景
    本篇内容主要讲解“如何理解分布式锁的场景”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解分布式锁的场景”吧!秒杀场景案例对于商品秒杀的场景,我们需要防止库...
    99+
    2024-04-02
  • MySQL数据库丢失数据的场景分析
    本篇内容主要讲解“MySQL数据库丢失数据的场景分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库丢失数据的场景分析”吧! MySQL数据库丢...
    99+
    2024-04-02
  • ASP 数据类型:数组在分布式系统中的使用场景
    ASP是一种广泛使用的web应用程序开发语言,其数据类型的使用对于web应用程序的开发至关重要。在分布式系统中,数组是一种非常有用的数据类型。在本篇文章中,我们将讨论ASP数据类型中的数组在分布式系统中的使用场景。 数组是一种可以存储多个...
    99+
    2023-07-29
    数据类型 数组 分布式
  • CrateDB分布式数据库
    今日在portianer后台,查询应用模板时,偶尔看到一个名为CrateDB的数据,顺手查了一下。其中就一一篇标题名为“比Postgre快10倍的开源数据库CrateDB”的文章,第一个感觉,就是口气好大哈。在不了解的情况下,也不敢妄自菲薄...
    99+
    2017-12-07
    CrateDB分布式数据库
  • redis分布式数据库
    一、key pattern 查询相应的key1)redis允许模糊查询key  有3个通配符 、、[]: 通配任意多个字符: 通配单个字符[]: 通配括号内的某1个字符2)randomkey:返回随机ke...
    99+
    2024-04-02
  • OLTP场景下的数据分布式设计原则是怎样的
    本篇文章给大家分享的是有关OLTP场景下的数据分布式设计原则是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言最近几年做分布式项目,很...
    99+
    2024-04-02
  • Netty分布式编码器及写数据事件处理使用场景
    目录概述编码器第一节: writeAndFlush的事件传播我们看一个最简单的使用的场景我们跟到writeAndFlush方法中我们跟到invokeWriteAndFlus...
    99+
    2024-04-02
  • TiDB 分布式数据库(二)
    ## TiDB :A Distributed SQL Database# github :https://github.com/pingcap/tidb# doc : https://github.com/...
    99+
    2024-04-02
  • TiDB 分布式数据库(一)
    ## TiDB :A Distributed SQL Database# github :https://github.com/pingcap/tidb# doc : https://github.com/...
    99+
    2024-04-02
  • Go语言在分布式场景中如何优化数组同步的性能?
    Go语言是一门高效的编程语言,它在分布式场景中被广泛应用。在分布式场景中,数组同步是一项非常重要的任务,因为在多个节点之间同步数组数据可以提高系统的性能和可靠性。本文将介绍如何使用Go语言来优化数组同步的性能。 1. 同步数组的基本方法 在...
    99+
    2023-10-09
    数组 分布式 同步
  • 数据库中分布式数据库有哪些
    小编给大家分享一下数据库中分布式数据库有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!分布式数据库有:1、物联网方向,时序数...
    99+
    2024-04-02
  • 如何用阿里云分布式数据库管理
    简介 在当今互联网时代,数据的规模和复杂度越来越大,传统的单机数据库已经无法满足需求。为了应对这种情况,阿里云推出了分布式数据库管理解决方案,为用户提供了高效、可靠的数据库管理服务。本文将介绍如何使用阿里云分布式数据库管理,帮助用户更好地管...
    99+
    2023-12-29
    阿里 分布式 如何用
  • 分布式数据库-TiDB:安装
    TiDB 具备如下特性: 高度兼容 MySQL 大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。 水平弹性扩展 通过简单地增加新节点即...
    99+
    2016-02-29
    分布式数据库-TiDB:安装
  • 如何优化数据库的数据分布
    使用索引:索引可以帮助数据库更快地定位数据,提高查询速度。在设计数据库时,需要根据实际情况添加适当的索引。 分区表:将数据表按照某种规则分成多个分区,可以减少单个表的数据量,提高查询性能。 数据归档:对于历史数据或者不经常访问的数据...
    99+
    2024-07-03
    数据库
  • Sharding-Proxy分库分表和数据加密使用场景分析
    目录Sharding-Proxy分库分表和数据加密使用场景配置文件讲解server.yamlconfig-sharding.yamlconfig-encrypt.yaml其他使用情况...
    99+
    2024-04-02
  • GO语言在分布式大数据处理中的应用场景有哪些?
    随着大数据时代的到来,数据量的快速增长和复杂性的提高,传统的单机处理方式已经无法满足我们的需求。因此,分布式大数据处理技术逐渐成为了处理海量数据的主流方案。而GO语言作为一门新兴的编程语言,不仅具有高效、安全、简洁等特点,还有着丰富的分布...
    99+
    2023-07-18
    分布式 大数据 npm
  • 如何在Aurora数据库中实现分布式事务
    在Amazon Aurora数据库中实现分布式事务可以通过以下步骤实现: 使用Aurora Serverless或Aurora G...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作