终于,AWS Aurora 也走向了融合架构,这一次阿里云 PolarDB-X 确实遥遥领先

2023-12-05

作者:张云杨

2023 年 11 月 27 日,AWS 在 re:Invent 大会上宣布推出 Amazon Aurora Limitless Database 预览版。根据 官方博客 的说明,Aurora Limitless 允许用户在 PB 级别的数据规模上进行数百万次/秒的写请求,并且保持了 Serverless 的使用体验,帮助开发者专注于构建高拓展性的应用程序而无需维护复杂的数据库方案。

AWS 在自研数据库方面的投资一直备受工业界认可,从 DynamoDB 开始,到 Redshift 和 Aurora,一直稳稳压住 MonogoDB、Snowflake、Oracle 等强大的竞争对手。然而这次发布的 Aurora Limitless,从产品形态和技术架构上看竟然隐隐约约有种“致敬”阿里云 PolarDB-X 的感觉,而从强调写入性能的应用场景上来看又跟自家的 DynamoDB 有些重合,一反以往泾渭分明的风格。 PolarDB 的整个产品体系在诞生之初受到了 Aurora 非常大的启发,但是 PolarDB-X 的出现又大大早于 Aurora Limitless,这很有趣。(难道 AWS 终于开始从中国进口数据库人才了?)

官方介绍:PolarDB-X 是一款面向超高并发、海量存储、复杂查询场景设计的云原生分布式数据库系统。其采用 Share Nothing 与存储计算分离架构(Share Everything),支持水平扩展、分布式事务、混合负载等能力,具备企业级、云原生、高可用、高度兼容 MySQL 生态等特点。

技术架构

从技术架构上看,Aurora Limitless 和 PolarDB-X 非常接近。一般厂商会在 Share Everything 或 Share Nothing 两条路中选一种,比如 TiDB、OceanBase、CockroachDB、PlanetScale 都采用了 Share Nothing 架构,而 PolarDB、Aurora 和 Neon 则采用了 Share Everything 架构。 PolarDB-X 作为一个独立产品,它的 Share Everything + Share Nothing 融合架构是在 2019 年第一次提出的,充满了阿里云特色;而 Aurora Limitless 应该是全球第二个采用该融合架构的数据库产品。双方的架构图,看上去只有配色的差别

AWS Aurora 架构图

PolarDB-X 架构图

在这个分布式架构下面:

  • 库和表的路由都是由 Proxy 控制的,只不过在 Aurora Limitless 里面叫做“事务路由”,而在 PolarDB-X 里面叫做“计算节点”;
  • 每个 Shard 都是由多个 MySQL 进程构成,分布在不同的服务器上保证高可用;
  • 每个 Shard 都包含全局表的所有数据和分片表的部分数据,分配主要看数据的分区键哈希值;
  • 当某个 Shard 的数据量太大,或者访问的热度过高时,部分数据会被迁移到比较空闲的 Shard。

双方都声称做到了无感的水平扩缩容。虽然数据迁移在支持多点挂载的共享存储上更容易实现,但是无感一般特指在负载比较低的时候做缩容操作,在负载比较高的时候做扩容, 体验可能更接近阵痛而不是无感 。????

分布式事务

作为分布式系统,Aurora Limitless 的全局时间戳是通过 EC2 TimeSync Service 获得的,虽然协议上使用了 NTP,但是精度上更接近 Google 提出的 TrueTime 方案,把时间误差控制在了 毫秒级别 。Aurora Limitless 支持全局范围的写后读、本地事务(一阶段提交)和分布式事务(两阶段提交),在 RR 和 RC 两种事务隔离级别下的体验完全对齐 PostgreSQL 的单机事务。

PolarDB-X 的全局时间戳采用了 Time Stamp Oracle 方案 ,去除了外部的 NTP 依赖,但是引入了一个 GMS 组件来提供 TSO,以保证时间戳始终单调递增。值得一提的是,PolarDB-X 的时间戳格式是“物理时钟+逻辑时钟”的形式,意味着为 HLC 方案做好的切换准备。不出意料的,PolarDB-X 也有写后读、本地事务、分布式事务,以及 RR 和 RC 两种事务隔离级别。

无论是 Aurora Limitless 还是 PolarDB-X,都不太推荐用户在数据库上面做太多分布式事务。毕竟二阶段提交的限制摆在那里,如果写入全部是分布式的话,谁都不太可能做到几百万/秒的提交。

语法兼容

将集中式数据库改造成分布式数据库,最大的问题就是老的使用习惯兼容不了 ,特别是复杂查询、存储过程、触发器、三方插件。如果兼容性做的不好,老的应用就没有办法用比较小的代价迁移到分布式数据库上面。Aurora Limitless 目前能够比较好地支持分片内的操作,也能在创建索引、收集统计信息和少量聚合操作上面充分利用多个分片的计算资源,但是没有给出完整的兼容性列表,可能要到正式版出来之后才会有。

PolarDB-X 出道更早,对于不兼容的使用习惯有比较明确的说明,比如标识符限制、SQL 语法限制、数据库对象 限制

使用体验

在实际的使用体验上,Aurora Limitless 还是比较友好的,根据 AWS 官方给出的 指引文档 和 re:Invent 上面的 演讲视频 ,用户只需要两步就能开启“无尽”的体验。

首先,用户需要通过 AWS Console 或者 API 为指定的 Aurora 集群开启 DB Shard Group:

接着,用 PG 客户端(比如 psql)连接 Limitless Endpoint,通过设置环境变量的方式控制表的类型,例子和 PolarDB-X 也非常像:

# Create Sharded Table
SET rds_aurora.limitless_create_table_mode='sharded';
SET rds_aurora.limitless_create_table_shard_key='{"cust_id"}';
CREATE TABLE customer (
    cust_id INT PRIMARY KEY NOT NULL,
    name ТЕХТ,
    email VARCHAR (100)
);

# Create Co-located Table
SET rds_aurora.limitless_create_table_mode='sharded';
SET rds_aurora.limitless_create_table_shard_key:='{"cust_id"}';
SET rds_aurora.limitless_create_table_collocaate_with='customer';
CREATE TABLE order (
    order_id INT NOT NULL,
    cust_id INT NOT NULL,
    amount DOUBLE NOT NULL,
    tax_rate_id DOUBLE,
    PRIMARY KEY (order_id, cust_id)
);

# Create Reference Table
SET rds_aurora.limitless_create_table_mode=='reference';
CREATE TABLE tax_rate (
    tax_rate_id INT PRIMARY KEY NOT NULL,
    city TEXT NOT NULL,
    state TEXT,
    country TEXT NOT NULL,
    tax_rate DOUBLE NOT NULL
) ;

PolarDB-X 的对象概念类似,只是操作方法上面稍有不同。用户在建表的时候指定分区键或者表组(Table Group),具有相同键值的数据就会被存放在同一个 Shard 内。不过 PolarDB-X 比 Aurora Limitless 多了一个全局二级索引,可能很快就会被“借鉴”。

网友评论

Hacker News 的热心群众对 Aurora Limitless 进行了褒贬不一的点评:有开发者认为 Limitless 是一个有野心的说法,迫不及待想要在生产环境使用;而有的开发者则认为 Limitless 只适合财富 500 企业, 并不适合初创公司 。关于 Citus 魔改换皮的猜测,引得 AWS 官方不得不下场解释了一番,顺便炒了一下 Aurora 论文的冷饭

Reddit 上也有类似的讨论。很多人在质疑这个是不是能 scale down 到 0,也有人会说性价比的问题以及什么程度的数据量才值得去采用 Aurora Limitless。

怎么说呢,连评论都有些似曾相识。虽然国内有不少人批评分布式数据库、HTAP 数据库的应用场景有限。但是实际上,不仅仅 AWS Aurora,还有 Oracle HeatWave 都在往这些地方挤。也许阿里云只是比 AWS、Oracle 更早感受到了增长的压力,不得不在技术上面做更多的投入,并且真的在部分领域实现了“遥遥领先”?从这个角度看,AWS 的产品特性会越来越像阿里云。 我们甚至可以大胆猜测,AWS Aurora 会不会在某天也推出了 HTAP 特性,通过不同的存储格式或者使用更多的内存来提升事务性引擎的分析能力。 ????

最后

Aurora Limitless 目前还在 Preview 状态,正式开放估计要 6-12 个月。而 PolarDB-X 不仅仅提供了阿里云托管的版本,还提供了可以运行在其它环境的开源版本。如果大家对分布式数据库感兴趣,又不想花钱在云上试用,不妨可以看看 KubeBlocks 这个项目。

KubeBlocks 已经完成了 PolarDB-X 的兼容性认证,支持一键拉起 PolarDB-X 集群,欢迎大家试用并留下宝贵意见!

官网:www.kubeblocks.io

GitHub:github.com/apecloud/kubeblocks

体验文档:kubeblocks.io/docs/release-0.7/user_docs/try-out-on-playground/try-kubeblocks-on-your-laptop

关于作者

张云扬,云猿生数据 COO & 联合创始人,前阿里云数据库产品总监,阿里云数据库产品及运营负责人。在职期间主要负责 RDS、MongoDB、Redis、PolarDB 等产品的用户体验、商业化和国际化,带领阿里云数据库产品第一次进入 Gartner OPDBMS 魔力象限。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

终于,AWS Aurora 也走向了融合架构,这一次阿里云 PolarDB-X 确实遥遥领先 的相关文章

  • mysql+关掉密码过期

    mysql 关掉密码过期 要在MySQL中关闭密码过期功能 可以按照以下步骤进行操作 登录到MySQL服务器 使用管理员账户 如root 连接到数据库 mysql uroot ppassword 运行以下命令来查看当前的密码过期设置 SHO
  • 拓数派加入 OpenCloudOS 操作系统开源社区,作为成员单位参与社区共建

    近日 拓数派签署 CLA Contributor License Agreement 贡献者许可协议 正式加入 OpenCloudOS 操作系统开源社区 拓数派 英文名称 OpenPie 是国内基础数据计算领域的高科技创新企业 作为国内云上
  • ERROR 5025 (HY000): Insert has filtered data in strict mode, tracking_url=http://IP

    通过http api批量插入数据的时候报Reason null value for not null column column xxx src line 解决方法 检查是否有null值存在 增加数据库字段长度 如下语句更改长度 ALTER
  • Nexus5596交换机支持3层需要的子卡

    3层子卡 nexus5596如果没有这块子卡 无法支持3层特性 TEST Cisco N5596 1 show modu Mod Ports Module Type Model Status 1 48 O2 32X10GBase T 16X
  • Kali Linux 安全渗透核心总结,444页核心知识点

    就像IT人离不开Linux系统一样 网安人也离不开Kali Linux 作为攻击性防御和渗透测试的代名词 越来越多的人开始学习Kali 如果你也对kali感兴趣 又想深入了解这方面内容 不妨收藏一下这份Kali Linux安全渗透教程 共4
  • 天猫数据分析工具推荐(天猫第三方数据平台)

    在电商迅速发展的大背景下 做好天猫数据分析能够在多方面帮助品牌商家更好地运营店铺 塑造品牌 如通过数据分析了解消费者的需求 购买偏好 这有利于品牌商家及时调整商品结构 产品推广 商品宣传等等 灵活制定品牌的销售策略 那么 天猫平台行业 品牌
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 【计算机毕业设计】病房管理系统

    当下 如果还依然使用纸质文档来记录并且管理相关信息 可能会出现很多问题 比如原始文件的丢失 因为采用纸质文档 很容易受潮或者怕火 不容易备份 需要花费大量的人员和资金来管理用纸质文档存储的信息 最重要的是数据出现问题寻找起来很麻烦 并且修改
  • Navicat 16 for MySQL:打造高效数据库开发管理工具

    随着数据的快速增长和复杂性的提升 数据库成为了现代应用开发中不可或缺的一部分 而在MySQL数据库领域 Navicat 16 for MySQL作为一款强大的数据库开发管理工具 正受到越来越多开发者的青睐 Navicat 16 for My
  • python超详细基础文件操作【建议收藏】

    文章目录 前言 发现宝藏 1 文件操作 1 1 文件打开与关闭 1 1 1 打开文件 1 1 2 关闭文件 1 2 访问模式及说明 2 文件读写 2 1 写数据 write 2 2 读数据 read 2 3 读数据 readlines 2
  • 基于java的学生宿舍管理系统设计与实现

    基于java的学生宿舍管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的学生宿舍管理系统设计与实现的研究背景和动机 在数字化时代的推动下 学生宿舍管理系统已经成为了管理学生宿舍的重要工具 学生宿舍管理系统能够帮助管理者更好地管
  • 深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析

    Python MongoDB 排序 对结果进行排序 使用 sort 方法对结果进行升序或降序排序 sort 方法接受一个参数用于 字段名 一个参数用于 方向 升序是默认方向 示例 按名称按字母顺序对结果进行排序 import pymongo
  • 深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析

    在 MongoDB 中 我们使用 find 和 find one 方法来在集合中查找数据 就像在MySQL数据库中使用 SELECT 语句来在表中查找数据一样 查找单个文档 要从MongoDB的集合中选择数据 我们可以使用 find one
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】白优校园社团网站的设计与实现

    近些年 随着中国经济发展 人民的生活质量逐渐提高 对网络的依赖性越来越高 通过网络处理的事务越来越多 随着白优校园社团网站的常态化 如果依然采用传统的管理方式 将会为工作人员带来庞大的工作量 这将是一个巨大考验 需要投入大量人力开展对社团
  • 【ES6】解构语句中的冒号(:)

    在解构赋值语法中 冒号 的作用是为提取的字段指定一个新的变量名 让我们以示例 const billCode code version route query 来说明 billCode code version 表示从 route query
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

    场景 Mysql中怎样设置指定ip远程访问连接 Mysql中怎样设置指定ip远程访问连接 navicat for mysql 设置只有某个ip可以远程链接 CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式 如果通过可视
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升
  • SAP ERP系统是什么?SAP好用吗?

    A公司是一家传统制造企业 公司曾先后使用过数个管理软件系统 但各部门使用的软件都是单独功能 导致企业日常管理中数据流与信息流相对独立 形成了 信息孤岛 随着公司近年业务规模的快速发展以及客户数量的迅速增加 企业原有的信息系统在销售预测及生产

随机推荐