👇PolarDB-MP: A Multi-Primary Cloud-Native Database via Disaggregated Shared Memory(最佳论文)
🏛机构:阿里巴巴
➡️领域:Information systems → Relational database model
📚摘要:提出了PolarDB-MP,多主结构+云原生数据库,旨在解决主从数据库中写入吞吐量受限问题
关于什么是主从数据库
- 主数据库:位于核心结点,处理所有写操作,将写操作同步到从数据库
- 从数据库:位于辅助结点,处理所有读操作,接收来自主数据库的更新从而保持一致
🌘这种做法的好处在于提高了读性能,坏处在于写必须经过主数据库→限制了写性能
关于PolarDB-MP
- 是多主数据库,即允许多个结点成为主数据库,分散了写的负载
- 利用了==分离式共享内存和存储==架构
- 分离式架构:计算资源与存储资源分开设置在不同结点,二者都可独立扩展
- 共享内存/存储:多个结点可访问同一组内存/存储资源,本模型实质上每个结点可访问所有数据
- 允许事务在单个节点上处理
关于PolarDB-MP的核心组件Polar Multi-Primary Fusion Server (PMFS)
- 设计思想:建立在分离式内存共享上,负责全局事务调节+缓冲区融合,采取了远程直接内存访问
- 主要功能:事务融合(跨结点事务一致),缓冲区融合(跨结点内存共享),锁融合(跨界点并发控制)
关于PolarDB-MP引入的LLSN设计:为不同结点生成的写前日志,建立一个部分顺序的结构
👇Amazon MemoryDB: A Fast and Durable Memory-First Cloud Database
🏛机构:Amazon
➡️领域:Information systems → Main memory engines
📚摘要:提出了基于云内存的数据库服务Amazon MemoryDB for Redis
- 关于Amazon MemoryDB for Redis的主要特点
- 内存高性能:MemoryDB将数据直接放在内存中,可以高速读写
- 高耐久性:除了将数据放在内存中,MemoryDB还会异步地将数据复制到外存中,防丢失
- 与Redis:MemoryDB基于Redis,兼容Redis(在Redis上运行的app可直接在MemoryDB上运行)
- 可扩展性:用户可按需(负载增加时)扩展存储/计算资源
- 高可用性:可多区部署,多区备份
👇Extending Polaris to Support Transactions
🏛机构:微软
➡️领域:Information systems → Data management systems
📚摘要:对Polaris系统的增强
关于Polaris:一个云原生的分布式查询处理器
- 传统的Polaris:仅支持只读事务(查询)
- 增强的Polaris:支持所有常规事务(插入/删除/更新/加载)
关于日志结构存储
- 原理:当插入/跟新/删除时,先把变更按顺序写入日志,一段时间后合并执行日志以更改实际数据
- 不可变性:一旦数据被写入,就不会再发生改变,新的数据不会覆盖而是追加 (避免了频繁磁盘修改)
🌊增强的Polaris正是采用了日志结构存储,利用其不可变性,大大提高了写入效率
其它Polaris的技术特性
- 使用快照隔离语义(Snapshot Isolation/一种事务隔离级别)来保持数据一致,支持多表/多语句事务
- 支持T-SQL,即为微软的Fabric平台提供完整的T-SQL支持
👇BigLake: BigQuery’s Evolution toward a Multi-Cloud Lakehouse
🏛机构:Google
➡️领域:Information systems → Data management systems engines
📚摘要:介绍了BigLake的设计及其在Google Cloud的BigQuery中的演变
BigQuery是啥:Google Cloud的云原生分布式查询处理器
现今遇到的挑战
数据管理的复杂性:很多企业需要统一管理数据仓库/数据湖,但这又是俩不同结构的系统
结构 简单说明 数据库 用于实时存储、管理结构化数据,支持事务处理。 数据仓库 集成多个数据源,用于大规模数据分析和报表生成。 数据湖 存储原始、未处理的多种格式数据,支持大数据分析和机器学习。 如何整合不同格式的数据和表格
非结构化数据的处理:AI/ML工作负载处理需要处理的正是非结构化的数据,如何让它们高效处理?
多云部署:很多企业会用不同的云平台,如何让多个云平台运行相同服务?
BigLake:通过以下创新,是的数据仓库和数据湖得以结合
- BigLake Tables:使得BigQuery能处理分析不同格式的数据
- BigLake Object Tables:使BigQuery能处理非结构化数据,从而进行AI/ML处理
- Omni平台:使得BigQuery可以在非谷歌云平台运行
👇Predicate Caching: Query-Driven Secondary Indexing for Cloud Data Warehouses
🏛机构:Amazon
➡️领域:
- Information systems → Data scans
- Online analytical processing engines
- Data warehouses
📚摘要:提出了云数据仓库中提高查询性能的新方法,叫做谓词缓存
背景
- 云数据仓库(比如Amazon Redshift)已成为查询处理的标准
- 用户和系统经常发送相同的查询,导致查询性能遇到瓶颈
- 当前系统的优化有赖于查询结果的缓存,但结果缓存会因为插入/删除/更新而过时
为了解决上述问题,提出了谓词缓存(一种新的二级索引)
- 是啥:一种用于优化数据库查询性能的二级索引技术
- 干啥:解决传统缓存方法,在处理重复查询时面临的缓存过时问题
谓词缓存的原理:以如下为例子阐述
UserID (基础表) Name Age 1 Alice 25 2 Bob 30 3 Carol 35 4 Dave 40 SELECT * FROM Users WHERE Age > 30; -- 查询结果如下
UserID (结果表) Name Age 3 Carol 35 4 Dave 40
- 传统的查询:缓存结果表的结果,下次发起相同查询时(若基础表没更新)直接输出缓存
- 谓词缓存查询:不会缓存结果,转而缓存基础表中满足查询条件的对象的范围,例如
- 缓存:执行上述查询,缓存会记录范围[35, 40]
- 更新:当基础表发生改变时,缓存也只要改变谓词范围(相比换掉整个结果表好得多)
- 再查询:利用缓存的范围信息,快速定位符合的数据
谓词缓存的其它特性
- 可在查询执行时动态构建(摘要里也没细说)
- 谓词缓存是轻量级的(还是那句话,比缓存整张表好多了),并且能够在线维护