admin

  • 重要更新

    SQL Server 2022基于Linux版本(公测版)也已经发布了。在过去的几年,微软在更加彻底的拥抱云计算、拥抱开源、拥抱Linux。延伸阅读:SQL Server 2022公测发布:全面支持云服务的数据库

    PolarDB-X发布了5.4.14版,新增数据Locality、数据热点诊断、并行DML优化、和AUTO_INCREMENT兼容性、冷热数据存储分离、Flashback Query等功能 ;对应的开源版本也发布了对应的2.1版本。

    另一个有意思的事情说一下:PingCAP在上周末发了一篇关于腾讯PCG(平台与内容事业群)使用TiDB的实践经验介绍的文章,今早看到已经删除了,文章内容本来是不错的,但是,文章中直接提到TDSQL的一些缺点以及问题,作为选择TiDB的佐证之一,所以外人看来就是,腾讯自己的数据库不行,而因此选择了TiDB,并为TiDB站台……。看到这个文章,第一感受是,腾讯内部是比较开放的,不同的团队/事业部有比较强的架构选择权。再一想,也看出,大概腾讯内部也比较“拧巴”,多个数据库技术团队有着比较大的竞争(也可能是一种良性的竞争)。在很久以前,TiDB是在腾讯云上线过,且是以接近一方的HTAP产品上线的,后来不确定由于什么原因最终下线,也看到腾讯和TiDB的合作一直也比较“坎坷”,PingCAP发这篇文章的时候,应该意识到,是很容易出问题的,具体的文章,八卦的同学,可以通过互联网搜索查看,应该还有一些“快照”。

    AWS RDS和GCP MySQL支持MySQL小版本8.0.29。不是什么大的事情,不过可以看到,AWS和Google云的托管型产品对于开源MySQL的支持,基本上保持1~2个月的跟进速度,MySQL官方8.0.29 GA时间为4月26日,AWS RDS和GCP都已经支持该小版本。

    沙利文联合头豹研究院发布了《2021年中国分布式数据库市场报告》,在中国分布式数据库市场综合竞争表现——Frost Radar (弗若斯特雷达)TM中,腾讯云、OceanBase、PingCAP、华为云、Amazon、阿里云、南大通用、星环科技、天云数据、百度智能云、金山云等在领导者象限。

    更新详情

    • [阿里云] RDS PostgreSQL支持空间自动扩容
    • [阿里云] RDS PostgreSQL支持数据库代理
    • [阿里云] Redis云盘版现已经支持Redis 7.0
    • [阿里云] PolarDB支持用户创建和使用Federated引擎表
    • [阿里云] PolarDB-X 支持了全局唯一、连续、单调递增的New Sequence
    • [阿里云] 阿里云数据库宣布2022年团队共有15篇论文被数据库三大国际顶级会议SIGMOD、VLDB、ICDE收录,其中8篇来自于阿里云和达摩院的独立研究,7篇来自于阿里云与北京大学、浙江大学、香港科技大学等高校紧密合作的联合研究
    • [阿里云] PolarDB-X开源版本发布2.1版本,支持 X-Paxos、自动分区、OSS 冷热数据分离等功能
    • [OceanBase] 推出历史库集群版解决客户历史数据的读取和更新问题。通过大容量机械盘的低成本存储方案,有效的降低客户历史数据的存储成本。同时兼顾客户对于历史库的查询功能
    • [腾讯云] TDSQL-C MySQL 版支持查询和下载慢日志明细,支持下载 csv 和原生格式
    • [腾讯云] Redis服务全新升级,发布高性能版本,单节点可提供50W+吞吐,性能是原生Redis的4倍,同时推出全球复制功能
    • [AWS] RDS MySQL支持小版本5.7.38、8.0.29。AWS RDS MySQL一直保持了与官方开源版本1个月左右的进度,即官方GA之后,AWS一个月就会完成响应的版本发布,例如5.7.38版本GA的时间是04月26
    • [AWS] NoSQL Workbench支持了DynamoDB的CreateTable、UpdateTable和DeleteTable等操作
    • [AWS] Amazon EMR Serverless正式GA
    • [AWS] RDS支持将Event信息投递到加密的Amazon SNS topics
    • [GCP] Cloud SQL MySQL支持小版本8.0.29。Oracle MySQL官方改版为最新GA版本,发布时间为4月26日
    • [GCP] Spanner提供的Change streams功能正式GA
    • [GCP] BigQuery支持列级别的数据保护(priview)
    • [AWS] ElastiCache for Memcached开始支持TLS传输,实现传输过程加密[Azure] SQL Server 2022公测版本基于Linux版本也正式发布。
    • [其他] Percona推出Percona Platform,融合了之前的PMM以及DBaaS相关产品,主要支持MySQL、PostgreSQL、MongoDB 
    • [其他] 沙利文联合头豹研究院发布了《2021年中国分布式数据库市场报告》,其中中国分布式数据库市场综合竞争表现——Frost Radar (弗若斯特雷达)TM中,腾讯云、OceanBase、PingCAP、华为云、Amazon、阿里云、南大通用、星环科技、天云数据、百度智能云、金山云等在领导者象限云南红塔银行新一代核心系统使用OceanBase

    其他

    [AWS] 发布新一代芯片Graviton3,是面向计算密集型场景设计,声称相比上一代性价比提升为40%。

  • Oracle对MySQL5.7的扩展支持到2023年10月就结束了,之后可能不再发布新的版本,是时候更多的了解MySQL 8.0了。同时,再看看各个云厂商对于用户和角色的支持情况。

    从8.0开始,MySQL开始支持“角色”,帮助用户更好的进行权限管理,使用角色功能,可以批量、规模化的管理用户的权限。如果,需要较大规模新建用户,并对其权限进行管理的时候,这个功能将大大简化权限增加、减少时候的管理工作。

    另外,在8.0版本中,MySQL对角色的设计上,非常的“偷懒”,因此,还有很多的隐藏的打开方式,附带的也留下了一些坑需要注意。

    基础使用示例

    基础的:

    • “角色”是代表”一组权限”(例如,某个数据库的读权限、写权限等)的对象,可以将角色赋予某个用户后,该用户使用该角色运行时,则具备这”一组权限”。
    • 当角色的权限发生变化(例如,收回或者新增权限)时,对应用户(使用该角色时)的权限也会跟着改变,这对于规模化的用户、权限管理是很方便的。

    我们看看如下场景与示例:

    (more…)
  • 在上周,SQL Server 2022版本(16.x)正式进入公测状态,大家都可以下载并安装了。当前只支持Windows,被称为CTP 2.0版本(community technology preview ),包含了企业版的所有功能,可以试用180天。于是第一时间下载并进行了体验,一起来看看,新版本有哪些新的功能吧。

    01 全面支持与Azure云建立链接

    SQL Server 2022版本在复制与容灾、分析增强、S3存储兼容支持、Azure Arc、Azure Defender等方面,全面的与Azure云在建立链接。

    通过Azure Synapse Link for SQL(公测支持将SQL Server 2022版本与云端Azure Synapse Analytics无缝集成,从而实现分析、BI和ML等数据处理能力。还可以通过Azure SQL Managed Instance的Link功能,实现将云端实例作为本地SQL Server的副本,提供只读或者容灾使用。

    SQL Server安装时,可以直接安装Azure Arc agent;支持使用Azure AD进行数据库的认证;支持使用Azure Defender for SQL来保护SQL Server。

    支持了S3-协议的对象存储:从2012版本开始,已经支持了备份到Azure Blob Storage,2022版本开始支持到S3兼容的存储进行备份;同时,通过,PolyBase功能可以支持S3兼容存储的访问,支持使用T-SQL直接访问parquet文件的数据。

    02新增了账本数据库(ledger database)功能

    2022版本中,新增支持了ledger database功能,提供数据不可篡改的证明。其模式类似于AWS QLDB。具体的,在数据库所有记录的变更都通过递归哈希的Merkle tree记录(被称为Database digests),用户可以通过其他独立的存储保存该Database digests,独立存储可以使用Azure Blob Storage或其他写入后不可修改的存储中。在重要的审计、第三方商务流程记录等场景下,可以使用账本数据库对数据进行不可篡改的存储。

    03 持续提升数据库性能

    • 备节点上支持与主节点上一样的Query Store功能,帮助用户管理与诊断Query的执行计划相关的问题
    • 开始支持Query Store hints功能(注:之前仅Azure云端版本支持)
    • 增强了Memory Grant Feedback (MGF) 功能
    • 提升了大内存场景下的内存管理能力,避免OOM发生;提供了大内存场景下,内存池并行扫描的能力
    • 提供了参数-自感知缓存执行计划能力,帮助SQL Server自动化的处理由于参数分布带来的无法使用最优执行计划的问题
    • 创建表语句新增了XML_COMPRESSION选项,提供XML压缩能力
    • 提供新的硬件感知和使用能力,例如使用高级向量扩展指令集(Advanced Vector Extensions)
    • DOP功能提供新的参数DOP_FEEDBACK,帮助更加自动化管理DOP参数的配置
    • 提供了Cardinality estimation feedback,帮助定位由于基数预估不准确导致的性能问题
    • 提供了基于Query Store功能的强制执行计划选择能力

    04 持续增强可用性与可管理性

    • 提供了”contained availability group”,在AG层面提供了自己的元数据管理、并且包含了需要的一些系统数据库等内容
    • 支持了AG参数REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT的修改
    • 在SQL Server初始安装时,可以直接安装Azure Arc agent
    • 进一步优化了ADR功能(Accelerated Database Recovery),开启后数据库在异常恢复时能够更快,提升整体可用性
    • 提升快照备份能力,新增了使用T-SQL冻结IO操作
    • 新增参数降低数据库收缩(空间回收)是对数据库并发读写的影响
    • 新增了数据库级别变量实现异步的统计信息更新,以降低对数据库并发读写的影响
    • 支持数据备份到S3兼容的存储中,也可以直接从这类存储中恢复数据

    05 增强了数据库安全

    • 支持使用Azure Defender for SQL保护SQL Server
    • 基于最小权限原则,对于某些管理任务新增了新的内置权限与角色
    • 提供了更细粒度(包括database、schema、table或column级别)的UNMASK权限管理
    • 更好的支持了对秘钥(数字证书和秘钥)向Azure Blob Storage的备份
    • 支持新的TDS 8.0协议,兼容TLS 1.3
    • 增强了Always encrypted数据的加密查询能力,包括 JOIN, GROUP BY, and ORDER BY等

    06 其他功能与细节方面的增强

    • 新增更多的JSON相关的函数:ISJSON、JSON_ARRAY、JSON_OBJECT、JSON_PATH_EXISTS等
    • 新增了部分处理时序数据的函数,例如DATE_BUCKET、GENERATE_SERIES等
    • 新增SELECT…WINDOW语法
    • ALTER TABLE ADD CONSTRAINT支持中断后续执行
    • 新增部分聚合和字符处理函数:GREATEST、LEAST、STRING_SPLIT
    • Azure Data Studio、VS Code最新版本都开始支持SQL Server 2022;SSMS发布最新的19.0版本;

    总结在2022版本中,继续增加了性能、安全性、可管理性,最重要就是增强了与Azure云的联系,帮助用户用好本地数据库的同时,具备较为便捷的向Azure云端迁移的能力。相关参考阅读:

    > What’s new in SQL Server 2022 (16.x) Preview :

    https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2022?view=sql-server-ver16

    > Get SQL Server 2022 Preview Evaluation Edition

    https://go.microsoft.com/fwlink/?linkid=2162126

  • 重要更新

    腾讯云发布自研数据库KeeWiDB,兼容Redis :名称看起来有点奇怪,但应该是”K-V”的发音吧。能力上包括 (a) 使用了持久化内存,应该是optane,在性能有较好保障的情况下,扩展了内存空间 (b) 提供内存、持久内存、SSD三级自动冷热数据存储,降低Redis使用成本。与阿里云发布的Tair比较类似,Tair更加专注于不同版本解决不同的问题,性能增强型专注于解决更高的性能问题,持久内存型则提供较高的性价比,容量存储型则通过ESSD大大扩展存储空间。如果KeeWiDB提供的“自动分级”,那么还是一定程度上可以简化用户使用 。

    字节NoSQL团队发布Abase2–新一代高可用 NoSQL 数据库:Abase是字节内部自研高可用 KV 存储 ,支撑包括推荐、广告、搜索、抖音、西瓜、飞书、游戏等公司内几乎所有业务线的 KV场景。Abase2则新增了资源池化、多租户、多写、CRDT 的软硬件一体化的版本。除了内部使用,也在考虑在火山云上推出

    MySQL发布8.0.29版本之后,Xtrabackup备份会失败:由于新版本对redo log的修改不兼容之前的版本,所以会导致使用当前版本的Xtrabackup备份失败。Percona也在准备发布新的版本支持,如果后续生产环境使用8.0.29以及以后的版本,也需要注意对应的Xtrabackup也要升级

    阿里云彭祥成为MariaDB的voting board member:MariaDB一直是一个独特的存在,在中国市场的推广一直都不好,还需要更强的策略在中国市场才有更多机会,采访中提到站点镜像、用户组、Kubernetes operator等都是不错的机会点,不过对于改变中国MariaDB市场的现状的作用,还有待观察

    SQL Server 2022版进入公测阶段;PostgreSQL 15 Beta 1版本发布

    Cloudflare推出数据库服务D1:基于SQLite的云数据库服务,与Cloudflare自身的一系列云服务组成一个面向开发者的小的云产品矩阵。当前处于邀请测试阶段

    国家级数据云平台—“人民云”(www.peopleyun.cn)正式上线:基础技术平台由人民数据管理(北京)有限公司与北京世纪互联宽带数据中心有限公司共同构建。定位为大数据“存、管、用”的安全云、自主可控的信创云、国资监管的国资云、开放共赢的行业云。为全国各级各地党政机关、央国企及各行各业的数字化转型提供全生命周期服务及解决方案。

    更新详情

    • [阿里云] RDS PostgreSQL集成Babelfish支持SQL Server数据库的迁移
    • [阿里云] DTS新增支持Db2 for LUW到PolarDB MySQL和ADB MySQL的数据同步功能
    • [腾讯云] 云数据库 PostgreSQL支持了透明加密功能、支持了PostgreSQL 14版本 
    • [AWS] ElastiCache/MemoryDB for Redis服务支持JSON格式
    • [AWS] RDS MySQL/PG/MariaDB/Oracle开始支持db.m6i、db.r6i系列规格实例,在此之前6代实例仅支持基于AWS自研的Graviton实例
    • [AWS] Redshift新增快照隔离(Snapshot isolation)支持
    • [Azure] Azure MySQL(FS)托管服务的小版本升级功能GA
    • [Azure] 发布Azure MySQL(FS)发布80 vCore规格( Business Critical)
    • [Azure] Azure Synapse Link for SQL公测,帮助用户在Azure SQL Database、SQL Server 2022将数据迁移到Azure Synapse Analytics等环境
    • [Azure] SQL Database支持Ledger能力,可以通过一定验证过程确保数据不被篡改
    • [GCP] 支持使用Informatica Data Loader向BigQuery加载数据
  • 在上周的Google I/O大会上,GCP(Google云平台)正式对外发布了数据库AlloyDB(Preview版本)。这里对AlloyDB的架构也做一个较为深入的分析,看看与当前的云原生数据库PolarDB、Aurora有哪些异同。

    01 AlloyDB 整体架构图

    AlloyDB是GCP上的一个全托管的云数据库服务,当前完全兼容PostgreSQL 14,提供企业级的性能、扩展性与可用性。声称是标准PostgreSQL性能的4倍,AWS同类服务的两倍(应该是指RDS PostgreSQL和Aurora PostgreSQL),如果是分析查询,则可能有100倍的性能加速。另外,在介绍时,还特别提到,价格非常透明,这应该是针对当前AWS数据库大多数都对IOPS独立并按量计费而说的。

    根据当前资料,其整体架构如下:

    高清大图下载地址:

    https://cloud-database-tech.github.io/images/alloydb-arch-with-qr-code.png

    02 AlloyDB与Aurora、PolarDB有什么异同

    • 简单来说,其架构与现有的云原生数据库Aurora、PolarDB都非常相似。使用了存储计算分离,分布式存储提供了多节点挂载能力。分布式存储,会带来海量存储能力,以及非常强的IO吞吐能力;多点挂载,大大增强了数据库的读扩展能力,同时因为底层使用同一个存储,所以也不再有数据拷贝和延迟等问题。
    • 在实现上,体现了”the log is the database”,尽可能只传输日志,避免数据块的传输与复制。例如,计算节点与存储节点的不再传输数据块(当然,就多了一个日志应用的过程)。这一点与Aurora类似,但是PolarDB在日志下推上,做得比较少,而是选择将存储以”较为标准”的文件系统提供给计算节点,数据库本身的各个模块还是比较完整的,这带来的好处是,对数据库的侵入要稍微小一些,对于新版本的支持和不同的数据库的支持会更加简单和一致。Aurora和AlloyDB的这种做法,则是将数据库的解构更加彻底,将数据库的日志模块一定程度下沉到存储层。在AlloyDB在实现时,还将这个部分彻底的做了分布式,通过多个不同的日志处理进程(LPS)进行分布式并发处理。
    • 这种日志处理的下推,也让数据库在进行崩溃恢复的时候,相比传统的一体化架构要快非常多,也就让数据库所提供的SLA可以更高。因为没有checkpoint,也应该就没有什么fuzzy或者sharp一说了,后端的LPS进程会持续的将redo apply到本地存储,分布式存储上的数据块的版本总是非常新的。而不用像传统数据库,数据库crash后,所有的没有刷写到磁盘的脏数据块(内存中该数据库已经更新,但是还没有刷写到磁盘)都需要通过redo应用到最新状态,所以,传统数据库在崩溃恢复时总是需要一定的时间,而且内存越大,这个时间可能会越长。
    • 另外,AlloyDB的日志存储使用了较为独立的存储,也就是文中提到了”log storage”或者”log store”。考虑日志与数据块的读写特性都不相同,使用独立的存储在性能优化上,会更加有效。一般来说,日志写入通常是append-only的,而且是”同步”操作,需要非常低的延迟,另外,在AlloyDB的设计中,日志写入后,需要立刻读取并应用到数据块中。只需要将内存中已经更新过的数据块覆盖写入本地存储就可以了。而数据块的处理,通常来说是一个异步的过程(不阻塞数据库的写入),并且会有大量的随机读,这与日志数据的访问有很大的不同。这里的一个猜测是,日志存储和数据块存储可能使用同一套存储架构,但是可能使用面向不同场景的优化和参数,如果有Google的人,希望求证一下。
    • 计算节点使用了”ultra-fast cache”,猜测一下,可能是使用了与PolarDB类似的optane存储作为加速,虽然使用optane卡的场景不同。这也是另一个希望求证的点。
    • AlloyDB的数据块请求是带有LSN号的,而每个可用区(Zone)内都有完整的数据块,所以,在各个可用区的节点(可能是read replica)总是可以在本地可用区获得最新的数据块。也就是无需像Aurora使用的多数派协议,数据块的读取需要3份(写入四份,4+3>6),当然Aurora也对这里做了很多的优化(例如,通过一个bookkeeping记录写入数据和node的对应关系,尽可能将多数派读取变成一次单节点的读取[参考])。
    • AlloyDB下沉到存储的日志处理服务(LPS),也做了彻底的分布式。日志存储在一个底层的相对独立的日志存储中,日志处理服务则是一个分布式的、相对”无状态”的进程,因为也做了存算分离,所以有非常好的扩展性。另外,在日志处理的分片上,AlloyDB通过将底层的数据块分成一个个独立的分片(Shard,应该类似于PolarDB或其他系统中的chunk),每个分片由一个独立的LPS处理,一个LPS可以根据系统压力情况处理一个或多个分片。这样就通过分布式的方式解决了日志应用的问题。并且,这个日志应用是在各个不同的可用区独立运行。
    • 关于数据副本数量的问题:Aurora是3*2的副本设计,每个可用区两个副本,每次写入应该是3个副本,读取可能需要4个副本,这种性能应该比较差,达到的效果是宣传”AZ+1”的容灾能力,也就是一个可用区失败,再加一个副本失败,依旧可以恢复数据。在实现上,Aurora对于底层副本感知是要更强的,并与上层实现结合起来了。但是AlloyDB使用Google底层统一的存储,这里看到的数据分布在三个zone,有三个副本,但实际上,每个zone的数据是存储在一个分布式存储的,这个分布式存储数据的副本数情况,并没有对数据库暴露。这里可以猜测,可能是两个副本或者更多,对于数据库这里IO敏感型的应用,应该比较难使用EC算法去做去重。所以,实际上,一份数据,可能会有超过6份的副本数。
    • 另外,这里看到,Block storage部分是可以通过一些智能化的方式,对数据块进行分级,降低整体的存储成本的,这应该是底层存储的数据分层能力。

    03 AlloyDB的写操作

    这里通过一个写操作来看看,AlloyDB的整个处理流程。客户端通过TCP连接,连接到主实例,然后将变更SQL发送到主实例。主节点进行SQL解析、并在内容中更新数据和索引页,同时,准备好WAL日志。在事务提交时,则同步地将日志写入低延迟的日志存储,这些日志则会被日志处理进程(LPS)异步的消费并处理。

    存储层被分成了三个部分:日志存储、日志处理服务、数据块存储。日志存储本身是顺序写,并对写入延迟要求很高,会直接影响事务处理的性能。AlloyDB专门针对该模式/场景进行了优化,以提供一个高性能的、低延迟的日志存储服务。

    多个日志处理服务(LPS)则会根据”Shard”(一组数据库的数据块)机制,对不同的日志进行处理。先从存储层读取需要处理的数据块(随机读),然后将redo日志应用到这些数据块,并回写(持久化)数据块到存储中,并最终删除日志存储中的日志记录。

    04 AlloyDB的读操作

    读操作有两种情况,一个是从主节点提供服务,一个是从读节点(read replica)提供服务。如果查询所需要的数据都在内存中,那么就和单机的PostgreSQL实例一样,进行SQL解析、执行计划生成、查询执行,并响应用户。为了加速查询处理,AlloyDB在数据库中额外集成了一个”ultra-fast block cache”。

    如果,需要的数据块在上面的两级缓存中都不存在,则需要到存储中获取。在把请求发送给存储层的时候,需要附带把LSN(log-sequence number)号也作为请求的一部分,而底层存储则返回满足该LSN对应事务能够看到数据块。

    从整体存储层来看,LPS进程也会参与数据块的请求的处理。LPS进程也有自己的缓存,如果请求的数据块在这个缓存中,则会立刻返回给上层节点。如果,这里再次缓存缺失,则再向数据块存储读取数据块并响应请求。

    这里,LPS进程需要存储一个”列表”,用于记录日志已经提交,但是,还没有应用到底层的块记录。对于此类数据块的请求,则需要先完成日志应用再返回。虽然,此类情况不应该经常出现,因为如果是一个最近日志没有应用的块,缓存应该不太会把这样的页面清除。

    05 其他

    • 虽然是Preview,但已经是目前看到的最具诚意的Preview了:任何用户立刻就可以开通使用,并且给予了非常大的免费额度,具体的,计算节点每月免费不超过1.5万美元、存储节点不超过650美元的资源。
    • 另外,注意到,GCP会说这是一个”fully-managed, PostgreSQL-compatible database”,而不会过多的强调这是一个云原生的数据库系统。对于用户来说,这就是一个具备高性能、高可用以及高可靠的PostgreSQL。至于,是不是Cloud-Native的,Google似乎对于这个概念并不那么”感冒”。
    • 通过实现”non-disruptive instance resizing”、Vacuum优化管理、Crash Recovery的速度提升,这个服务推出就是99.99%的SLA。
    • 更底层使用的是Google内部统一的分布式存储层,经过Gmail、Youtube等大型系统的验证,性能/稳定性等经过了验证。这一点上,AlloyDB与PolarDB、Aurora是不一样的。PolarDB和Aurora都选择了实现自己面向数据库的分布式存储系统,而AlloyDB选择了更加通用的存储层,再面向数据库进行优化。这两个路线,客户价值都是直接的,但哪个方案的生命力会更加持久,可能需要几十年的时间去观察。
    • 与AlloyDB一起,GCP还推出一个Oracle到PostgreSQL的迁移服务,只是这个服务看起来推出的也比较仓促,比较困难的结构迁移部分,使用了一个第三方的开源产品来实现。一方面可以看到这个,迁移是非常重要的模块,另一方面也看到,这一块做起来其实比较难。从这里看到,AlloyDB考虑优先推出PostgreSQL版本的一个重要原因,是认为:Oracle数据库的迁移至关重要,且PostgreSQL是Oracle迁移的重要目标数据库。
    • 目前,发布的内容来看,关于数据库内部的并发访问/多版本管理的内容比较少,这部分应该是另一个复杂的点。期待后续的文章。

    06 一些已知的不确定的点

    • ultra-fast cache是什么介质?如何被使用?
    • 对于其他zone(非primary节点所在的zone),他的WAL日志(在log storage上)从哪里获取?WAL一定是具备跨zone的容灾能力的,这里WAL的容灾是在数据层去做的(日志写时写两份或者三份),还是log storage去做的?
    • 与上面的问题相关的另一个重要的问题,LPS进程是全局的还是属于某个Zone的?
    • log storage是针对日志场景专门进行优化的,其模式是,append-only、延迟敏感并直接影响效率,这里的疑问是,做了哪些优化?

    如果有Google的同学,可以一起讨论一下。

    参考

    • AlloyDB for PostgreSQL under the hood: Intelligent, database-aware storage
    • AlloyDB for PostgreSQL
    • Introducing AlloyDB for PostgreSQL: Free yourself from expensive, legacy databases
  • 阿里云RDS已经发展超过十年,在演进的过程中,其架构和规格已经变得比较复杂,本文尝试通过一张架构图,较为完整的概况RDS所支持的主要的架构类型、规格,帮助开发者从高可用、成本、可靠性等角度选择适合自己业务的RDS类型与规格。

    1. 阿里云RDS的架构与规格大图

    下图从高可用类型、数据可靠性、资源复用率、规格大小、规格代码等角度,较为完整的概况了当前RDS主要的架构与规格:

    从高可用区架构上,分为单节点(基础版)、双节点(高可用版)以及三节点企业版、集群版(仅SQL Server AlwaysOn)。从资源共享与隔离上,则分为通用型、独享型、共享型和独占物理机(可以理解为是特殊的独享型)。从磁盘使用上的不同,则分为云盘版和本地盘版。

    当前,RDS最大规格为104核CPU,768GB内存。其中通用型,最大为12核CPU;共享型最大为32核CPU。

    (more…)