分布式-数据库治理

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、分布式数据库

1.选择什么样的分布式数据库

 分布式架构下的数据应用场景远比集中式架构复杂会产生很多数据相关的问题。谈到数

据首先就是要选择合适的分布式数据库。

分布式数据库大多采用数据多副本的方式实现数据访问的高性能、多活和容灾。

目前主要有三种不同的分布式数据库解决方案。它们的主要差异是数据多副本的处理方式和数据库中间件。

1. 一体化分布式数据库方案

它支持数据多副本、高可用。多采用 Paxos 协议一次写入多数据副本多数副本写入成

功即算成功。代表产品是 OceanBase 和高斯数据库。

2. 集中式数据库 + 数据库中间件方案

它是集中式数据库与数据库中间件结合的方案通过数据库中间件实现数据路由和全局数据管理。数据库中间件和数据库独立部署采用数据库自身的同步机制实现主副本数据的一致性。

集中式数据库主要有 MySQL 和 PostgreSQL 数据库基于这两种数据库衍生出了很

多的解决方案比如开源数据库中间件 MyCat+MySQL 方案TBase基于PostgreSQL但做了比较大的封装和改动等方案。

3. 集中式数据库 + 分库类库方案

它是一种轻量级的数据库中间件方案分库类库实际上是一个基础 JAR 包与应用软件部署在一起实现数据路由和数据归集。它适合比较简单的读写交易场景在强一致性和聚合分析查询方面相对较弱。典型分库基础组件有 ShardingSphere。

小结这三种方案实施成本不一样业务支持能力差异也比较大。一体化分布式数据库主要

由互联网大厂开发具有超强的数据处理能力大多需要云计算底座实施成本和技术能力

要求比较高。

集中式数据库 + 数据库中间件方案实施成本和技术能力要求适中可满足中大型企业业务要求。第三种分库类库的方案可处理简单的业务场景成本和技能要求相对较低。在选择数据库的时候我们要考虑自身能力、成本以及业务需要从而选择合适的方案。

2、如何设计数据库分库主键

选择了分布式数据库第二步就要考虑数据分库这时分库主键的设计就很关键了。

与客户接触的关键业务我建议你以客户 ID 作为分库主键。这样可以确保同一个客户的数据分布在同一个数据单元内避免出现跨数据单元的频繁数据访问。跨数据中心的频繁服务

调用或跨数据单元的查询会对系统性能造成致命的影响。

将客户的所有数据放在同一个数据单元对客户来说也更容易提供客户一致性服务。而对企

业来说“以客户为中心”的业务能力首先就要做到数据上的“以客户为中心”。

当然你也可以根据业务需要用其它的业务属性作为分库主键比如机构、用户等。

3、数据库的数据同步和复制

在微服务架构中数据被进一步分割。为了实现数据的整合数据库之间批量数据同步与复制是必不可少的。数据同步与复制主要用于数据库之间的数据同步实现业务数据迁移、数据备份、不同渠道核心业务数据向数据平台或数据中台的数据复制、以及不同主题数据的整合等。

传统的数据传输方式有 ETL 工具和定时提数程序但数据在时效性方面存在短板。分布式架构一般采用基于数据库逻辑日志增量数据捕获CDC技术它可以实现准实时的数据

复制和传输实现数据处理与应用逻辑解耦使用起来更加简单便捷。如监听数据库binlog进行实时同步。

现在主流的 PostgreSQL 和 MySQL 数据库外围有很多数据库日志捕获技术组件。CDC也可以用在领域事件驱动设计中作为领域事件增量数据的获取技术。

4、跨库关联查询如何处理

跨库关联查询是分布式数据库的一个短板会影响查询性能。在领域建模时很多实体会分散到不同的微服务中但很多时候会因为业务需求它们之间需要关联查询。关联查询的业务场景包括两类第一类是基于某一维度或某一主题域的数据查询比如基于客户全业务视图的数据查询这种查询会跨多个业务线的微服务第二类是表与表之间的关联查询比如机构表与业务表的联表查询但机构表和业务表分散在不同的微服务。

如何解决这两类关联查询呢

对于第一类场景由于数据分散在不同微服务里我们无法跨多个微服务来统计这些数据。

你可以建立面向主题的分布式数据库它的数据来源于不同业务的微服务。采用数据库日志

捕获技术从各业务端微服务将数据准实时汇集到主题数据库。在数据汇集时提前做好数

据关联如将多表数据合并为一个宽表或者建立数据模型。面向主题数据库建设查询微服

务。这样一次查询你就可以获取客户所有维度的业务数据了。你还可以根据主题或场景设计

合适的分库主键提高查询效率。

对于第二类场景对于不在同一个数据库的表与表之间的关联查询场景你可以采用小表广

播在业务库中增加一张冗余的代码副表。当主表数据发生变化时你可以通过消息发布和

订阅的领域事件驱动模式异步刷新所有副表数据。这样既可以解决表与表的关联查询还

可以提高数据的查询效率。

二、数据中台与企业级数据集成

分布式微服务架构虽然提升了应用弹性和高可用能力但原来集中的数据会随着微服务拆分

而形成很多数据孤岛增加数据集成和企业级数据使用的难度。你可以通过数据中台来实现

数据融合解决分布式架构下的数据应用和集成问题。

你可以分三步来建设数据中台。

第一按照统一数据标准完成不同微服务和渠道业务数据的汇集和存储解决数据孤岛和

初级数据共享的问题。

第二建立主题数据模型按照不同主题和场景对数据进行加工处理建立面向不同主题的

数据视图比如客户统一视图、代理人视图和渠道视图等。

第三建立业务需求驱动的数据体系支持业务和商业模式创新。

数据中台不仅限于分析场景也适用于交易型场景。你可以建立在数据仓库和数据平台上

将数据平台化之后提供给前台业务使用为交易场景提供支持。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 数据库