首页 » ORACLE 9i-23c » oracle 23c的分布式数据库(Globally Distributed Database )

oracle 23c的分布式数据库(Globally Distributed Database )

长期以来,oracle数据库一直是集中式数据库的领导者,基于共享存储的RAC和日志流的DATAGUARD数据保护,提供了数据的最大高可用,支撑的全球各行业的核心业务。然而从Google的Spanner发起的分布式SQL开始,出像了像CockroachDB、TiDB 和 YugabyteDB 通过 Raft 共识复制和OceanBASE通过Paxos共识复制的分布式数据库,Oracle 现在似乎在这个赛道成了追随者。在Oralce 23C中添加了Raft复制,做为主备配置的替代方案,但是并不是重新构建一套新的数据库架构,而是基于现有的Partition、Oracle Sharding、GDS技术之上做了创新,对于我已经快跟不上它的节奏了,这里简单记录一下这次创新的新概念Oracle Globally Distributed Database, 引入新的SQL语法分片关键字。

什么是Oracle Globally Distributed Database?

Oracle Globally Distributed Database( 全球分布式数据库)是 Oracle 数据库的一项功能,可用于自动分发和复制数据 跨不共享硬件或软件的 Oracle 数据库池。Oracle 全球分布式数据库提供了成熟 RDBMS 和 NoSQL 数据库的最佳特性和功能。似乎和国内基于中间件层做的分布式数据库类似,如GoldenDB、TELEDB、AntDB。从应用程序的角度来看,分片数据库看起来像一个单一数据库:分片的数量和这些分片之间的数据分布对数据库应用程序是完全透明的。从数据库管理员的角度来看,共享数据库由多个可以共同管理的数据库组成。

Oracle 全球分布式数据库的优势

Oracle 全球分布式数据库将数据集的片段分散到多个数据库(分片)上,部署到云端或云端。它支持全球分布式、线性可扩展的多模型数据库。它不需要专门的硬件或软件.

支持Oracle原有的像SQL全部功能、事务ACID, 多表join, 分布式事务、安全、加密、压缩、备份、RAC、Inmemory、DataGuard, ASM、JSON等Oracle成熟的技术。

Oracle Global Distributed Database 会自动在分片之间分配分区,并分配分区 对应用程序是透明的。支持跨多个分片的事务 ,支持复杂的联接、触发器和存储过程,Oracle 全球分布式数据库支持扩展到 1000 个分片。Oracle 数据库机器学习算法可以 直接应用于数据库;

由于分片不共享,因此消除了单点故障 软件、CPU、内存或存储设备等资源。失败或 一个分片的减速不会影响其他分片的性能或可用性 碎片。有时,分片键值需要更新 ,允许在分片之间透明地移动数据,在拆分和移动期间使数据保持在线.

Oracle 全球分布式数据库支持您部署全局数据库,其中单个逻辑数据库 可以分布在多个地理位置,减少跨位置的数据复制;

您可以选择在本地部署所有分片,将它们全部部署在云中,或者 您可以将它们拆分为云和本地系统,以满足您的需求。分片可以部署在所有数据库部署模型上,例如单个 实例、Exadata 和 Oracle RAC。

新功能:Oracle 全球分布式数据库和 23c

  • Raft 复制
  • 基于目录的分片
  • 同步复制表
  • 重复表的细粒度刷新率控制
  • 分片数据库协调备份和还原增强功能
  • 分片键更新时自动移动数据
  • 在分片空间之间移动数据块
  • 子分区上的全局分区索引支持
  • PL/SQL函数跨分片查询支持
  • 部署前网络验证
  • 复合分片的新分区集操作
  • 并行跨分片 DML 支持
  • Oracle Data Pump 增加了对元数据分片的支持
  • 使用 SQL*Loader 自动并行直接路径加载

Oracle 全球分布式数据库中的高可用性

Oracle 全球分布式数据库依靠复制来实现可用性。复制是自动配置的,并且 创建分片数据库时部署。Oracle 全球分布式数据库根据您的需要提供了多种复制方式:

Oracle Data Guard 与 Oracle 全球分布式数据库紧密集成,可提供高可用性和灾难恢复,并具有严格的数据一致性和 零数据丢失。Oracle Data Guard 复制维护一个或多个同步副本 分片(主分片)的(备用)以实现高可用性和数据保护。备用 可以在本地或远程部署,使用 Oracle Active Data Guard 时也可以 打开以只读方式访问。

Raft 复制内置于 Oracle 全球分布式数据库中,可提供基于共识的高性能、低开销的可用性解决方案。 具有分布式副本和快速故障转移功能,零数据丢失,同时自动 在分片失败时保留复制因子。使用 Raft 复制管理 开销不会随着分片数量的增加而增加。Raft 复制直接内置于 Oracle 全球分布式数据库中,无需配置 Oracle 即可提供内置复制 GoldenGate 或 Oracle Data Guard。Raft 复制使用逻辑复制和 基于共识的提交协议,支持声明性复制配置 和亚秒级故障转移。

数据分发方法

由于 Oracle 全局分布式数据库基于表分区,因此 Oracle 提供的所有子分区方法 Oracle 全球分布式数据库也支持数据库。数据分发方法控制数据在分片上的位置。Oracle 全球分布式数据库支持系统管理、用户定义、基于目录或复合分片 方法。

  • 系统管理(Hash)不需要您将数据映射到分片。 数据通过分区自动分布在分片之间 一致的哈希值。分区算法均匀随机分布 跨分片的数据。
  • 用户定义允许您显式指定数据的映射 到单个分片(range,list)。当由于性能、监管或 其他原因,某些数据需要存储在特定的分片上,并且 管理员需要完全控制在分片之间移动数据。
  • 复合允许您使用两个级别的分区(结合以上两种)。第一 数据按范围或列表进行分区,然后进一步按 一致的哈希值。
  • 基于目录是用户定义方法的增强(用户定义,带有映射表), 其中,与任何分片键关联的数据记录的位置为 在运行时根据用户首选项动态指定。关键位置 信息存储在一个目录中,该目录可以保存大量键值 数十万。

客户端请求路由

Oracle 全球分布式数据库支持从应用到分片的基于密钥的直接路由,通过代理路由 分片目录,并路由到中间层,

  • 基于密钥的路由Oracle 客户端驱动程序(JDBC、OCI、UCP ODP.NET) 可以识别连接字符串中指定的分片键,以达到高 性能数据相关路由。
  • 通过代理路由 Oracle 全球分布式数据库支持对未指定分片键的查询进行路由,从而提供 数据库应用程序可以灵活地运行 SQL 语句,而无需指定 应在其上处理查询的分片。代理路由可以处理 单分片查询和多分片查询。
  • 中间层路由除了对数据层进行分片外,还可以对数据层进行分片 Web 层和应用层,分布这些中间层的分片 为一组特定的数据库分片提供服务,从而创建一种称为泳道的模式。

Oracle 全球分布式数据库在 SQL DDL 语句中也有自己的关键字,这些关键字只能是 针对分片数据库运行。

部署自动化

Oracle 全球分布式数据库部署通过 Terraform、Kubernetes 和 Ansible 实现高度自动化 脚本。

数据迁移

Oracle Data Pump 具有分片感知能力,可用于迁移 数据从非分片 Oracle 数据库到分片 Oracle 数据库。

联合分片

将多个现有数据库统一到一个 Oracle 全球分布式数据库体系结构中。

Oracle 全球分布式数据库改变了一些分布式数据库运维现状,但目前会感觉来的晚了一些,不确认是否还有机会尝试该架构的环境测试。希望后会有期吧。

— over —

打赏

目前这篇文章还没有评论(Rss)

我要评论