惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
K
Kaspersky official blog
Forbes - Security
Forbes - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
Scott Helme
Scott Helme
S
Securelist
美团技术团队
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
AI
AI
L
Lohrmann on Cybersecurity
S
Security Affairs
Cloudbric
Cloudbric
SecWiki News
SecWiki News
爱范儿
爱范儿
雷峰网
雷峰网
Engineering at Meta
Engineering at Meta
C
Cyber Attacks, Cyber Crime and Cyber Security
大猫的无限游戏
大猫的无限游戏
N
News and Events Feed by Topic
I
InfoQ
S
Secure Thoughts
AWS News Blog
AWS News Blog
A
About on SuperTechFans
Schneier on Security
Schneier on Security
酷 壳 – CoolShell
酷 壳 – CoolShell
The Last Watchdog
The Last Watchdog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Check Point Blog
P
Palo Alto Networks Blog
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Google DeepMind News
Google DeepMind News
Latest news
Latest news
I
Intezer
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
D
Docker

Mox的笔记库

2026PPoPP MLIR Tutorial学习 | Mox的笔记库 MacOS配置《明日方舟:终末地》 | Mox的笔记库 2025:向内生长 | Mox的笔记库 由mlir::ExecutionEngine引发的跨系统问题 | Mox的笔记库 WSL2配置Cuda-Tile环境记录(未完待续) | Mox的笔记库 Vibe Coding手搓项目记录 | Mox的笔记库 给Debian上包——以DuckDB为例 | Mox的笔记库 UCPD.sys事件存档 | Mox的笔记库 换新电脑之Mac mini M4从购买到配置 | Mox的笔记库 Mac配置MLX-C开发环境 | Mox的笔记库 RISC-V meets RDBMS——RISC-V架构上可运行数据库一览 | Mox的笔记库 DuckDB Sort实现调查 | Mox的笔记库 修复Redis在树莓派5上无法运行的问题 | Mox的笔记库 如何在MLIR中自定义类型并且输出运行 | Mox的笔记库 网站网络结构变更记录 | Mox的笔记库 SIGMOD25论文阅读:BPF-DB:——A Kernel-Embedded Transactional Database Management System For eBPF Applications Apache Arrow Gandiva项目解析 | Mox的笔记库 VLDB24论文阅读:Cloud-Native Database Systems and Unikernels——Reimagining OS Abstractions for Modern Hardware NoisePage源码分析(未完待续) | Mox的笔记库 VLDB20论文阅读:Mainlining Databases——Supporting Fast Transactional Workloads on Universal Columnar Data File Formats VLDB17论文阅读:Relaxed Operator Fusion for In-Memory Databases:Making Compilation, Vectorization, and Prefetching Work Together At Last 论文阅读:How not to structure your database-backed web applications——a study of performance bugs in the wild SIGMOD24阅读:ROME——Robust Query Optimization via Parallel Multi-Plan Execution 文章阅读:First Past the Post-Evaluating Query Optimization in MongoDB SIGMOD文章阅读:Apache Calcite——A Foundational Framework for Optimized Query Processing Over Heterogeneous Data Sources VLDB23论文阅读:Analyzing the Impact of Cardinality Estimation on Execution Plans in Microsoft SQL Server SIGMOD22论文阅读:Efficient Massively Parallel Join Optimization for Large Queries VLDB论文阅读:Weaving Relations for Cache Performance VLDB22论文阅读:ConnectorX——Accelerating Data Loading From Databases to Dataframes 论文阅读:UniKraft-Fast, Specialized Unikernels the Easy Way 当DuckDB遇上RISC-V | Mox的笔记库 SIGMOD25论文阅读:An Elephant Under The Microscope——Analyzing The Interaction Of Optimizer Components In PostgreSQL 论文阅读:Compile-Time Analysis of Compiler Frameworks for Query Compilation VLDB23阅读:Bringing Compiling Databases to RISC Architectures SIGMOD24文章阅读:Query Compilation Without Regrets | Mox的笔记库 淦!MLIR输出Hello World不应该这么难! | Mox的笔记库 2024:拥挤年代的想象与创造 | Mox的笔记库 如何给自己的博客添加MLIR和LLVM IR语法高亮 | Mox的笔记库 博客重构:从Hexo到Astro | Mox的笔记库 VLDB19-Parsing Gigabytes of JSON per Second论文阅读 CIDR25:Runtime-Extensible Parsers阅读 | Mox的笔记库 SIGMOD24文章阅读:VeriTxn | Mox的笔记库 MLIR学习资料整理 | Mox的笔记库 VLDB23文章阅读——Exploiting Cloud Object Storage for High-Performance Analytics VLDB24——OLAP on Modern Chiplet-Based Processors走马观花阅读 如何让数据库中的Python跑的更快-VLDB22-YeSQL文章阅读 | Mox的笔记库 你好,世界! | Mox的笔记库 如何愉快的运行一个MLIR程序 | Mox的笔记库 让系统研究更有意义:HarmonyOS NEXT的教训和经验——讲座回顾 | Mox的笔记库 VLDB22:YeSQL文章阅读(已废弃) | Mox的笔记库 UNSW 24T3 COMP9336上课记录 | Mox的笔记库 Velox开发环境配置踩坑记录 | Mox的笔记库 LingoDB源码编译与分析 | Mox的笔记库 论文阅读:Declarative Sub-Operators for Universal Data Processing 论文阅读:Designing an Open Framework for Query Optimization and Compilation MLIR Toy Tutorial实践记录 | Mox的笔记库 2024年7月RSSHub开发体验 | Mox的笔记库 LLVM-Kaleidoscope实操踩坑记录 | Mox的笔记库 澳洲大学计算机硕士比较 | Mox的笔记库 论文阅读——CDUL:CLIP-Driven Unsupervised Learning for Multi-Label Image Classification CVPR2023-CLIP算法调研 | Mox的笔记库 论批量快速添加图片与视频水印的事 | Mox的笔记库 基于元信息写入的服务器压力测试 | Mox的笔记库 家庭组网IPv6+Mesh折腾 | Mox的笔记库 MjAyMw==,希望,前进与平庸之道 | Mox的笔记库 code-server初体验 | Mox的笔记库 从Nginx到Caddy | Mox的笔记库 RMM观察与初探 | Mox的笔记库 计算机网络课设——UDP/TCP/TLS Socket实验 | Mox的笔记库 JQuery的XSS初探 | Mox的笔记库 生产实习记录 | Mox的笔记库 Fedora-CoreOS配置与试用(2023年) | Mox的笔记库 Electron学习笔记 | Mox的笔记库 ServerSentEvent学习 | Mox的笔记库 报告翻译:容器云的安全挑战 | Mox的笔记库 Vagrant配置Metarget靶场环境 | Mox的笔记库 OpenAI-whisper折腾 | Mox的笔记库 202202,困惑,混乱与未曾设想之路 | Mox的笔记库 2022年Hack the box:Tier1免费区全解 | Mox的笔记库 Navidrome部署记录 | Mox的笔记库 长安杯2021-snake复现 | Mox的笔记库 报告概要翻译:OBFUSCATING C++ PROGRAMS VIA CONTROL FLOW FLATTENING 从零开始的Django CVE-2022-28346复现 | Mox的笔记库 2022CISCN(西北区赛)-The shinning | Mox的笔记库 Docker+QEMU+Arm64(Ubuntu)+环境配置(2022版) | Mox的笔记库 Arch Linux运行树莓派系统(2022年) | Mox的笔记库 2022CISCN初赛-ez_usb-复盘WriteUp | Mox的笔记库 Arch Linux迁移计划 | Mox的笔记库 Django事务使用 | Mox的笔记库 记录第一次EduSRC上报 | Mox的笔记库 Jetbrain问题应急处理 | Mox的笔记库 Celery5.2学习&配置 | Mox的笔记库 Waline部署记录 | Mox的笔记库 Frida hook初次实战 | Mox的笔记库 NodeMCU-MicroPython配置实录 | Mox的笔记库 Log4j2漏洞复现 | Mox的笔记库 2022长安“战疫”网络安全卫士守护赛回顾 | Mox的笔记库 2021年12月 Vivo千镜杯回顾 | Mox的笔记库 Windows的WSL2+Docker初探 | Mox的笔记库 Hexo部署安装全流程回顾 | Mox的笔记库
EDBT25论文阅读:PhoebeDB——A Disk-Based RDBMS Kernel for High-Performance and Cost-Effective OLTP
MocusEZ · 2025-07-22 · via Mox的笔记库

PhoebeDB是云和恩墨(enmotech)的数据库项目,这篇论文发表于EDBT 2025的Industry and Application Track,其中有些技术特性还是很有意思的

论文地址:https://openproceedings.org/2025/conf/edbt/paper-292.pdf

技术背景

一款以OLTP为主,在操作层面支持HTAP的,与PostgreSQL高度兼容单机数据库,主要针对SSD存储与大内存普及情况下的高性能OLTP的解决方案(这点和Umbra很像,但Umbra更侧重于OLAP)

实现细节

冷热分层存储

image-20250721205251333

image-20250721205420352

热数据放入内存,冷数据放入硬盘,这里面有一套判断与维护的机制

存储用的数据结构是B-Tree(有别于TiKV的LSM-Tree),采用的时PAX格式用于HTAP

Swizzle Point(指针转换/指针混编)

image-20250721205435246

实现了一套类似Leanstore的SwizzlePoint机制,关于SwizzlePoint不了解的可以看看AI怎么说

Google Gemini:

在计算机科学中,“swizzle pointer”(指针转换/指针混编)通常指的是将一种形式的引用(通常是基于名称、位置或文件偏移量的引用)转换为另一种形式的引用(通常是直接的内存地址指针)的操作。这个过程最常发生在数据从持久存储(如磁盘文件)加载到内存中时。

以下是关于 swizzle pointer 的几个关键点:

1. 目的

  • 提高性能: 当数据从磁盘加载到内存后,如果对象之间仍然使用基于磁盘地址或ID的引用,每次访问都需要进行查找或翻译,这会带来性能开销。通过将这些引用转换为直接内存指针,可以实现内存速度的访问,显著提高程序运行效率。
  • 处理持久化数据: 当我们把内存中的数据结构(比如一个链表或树)保存到磁盘时,不能直接保存内存地址,因为下次加载时这些地址很可能不再有效。所以,在保存时需要进行“反转换”(unswizzling),将内存指针转换为独立于位置的引用(例如,文件偏移量、唯一ID或数组索引)。当数据再次加载到内存时,就需要进行“swizzle”操作,将这些独立于位置的引用重新转换为新的内存指针。

2. 过程

Swizzling(加载/反序列化时):

  • 将非内存引用转换为内存指针: 当数据从磁盘文件(如数据库、可执行文件或自定义数据结构文件)加载到内存中时,数据内部可能包含指向其他数据片段的引用,这些引用不是直接的内存地址。例如,它可能是一个文件中的偏移量,或者一个对象的唯一ID。
  • “swizzle pointer”操作会将这些非内存引用“翻译”成当前加载到内存中的对象的实际内存地址。这样,程序就可以直接通过指针来访问相关数据,而不需要额外的查找或解析步骤。

Unswizzling(保存/序列化时):

  • 将内存指针转换为非内存引用: 当内存中的数据结构需要被保存到磁盘时,内存中的直接指针必须被“unswizzle”(反转换)回一种与位置无关的形式,这样即使数据被加载到不同的内存地址,引用关系也能保持有效。

3. 应用场景

  • 数据库管理系统(DBMS): 在数据库中,对象通常通过对象ID (OID) 或磁盘地址来引用。当这些对象被加载到内存中的缓冲区时,为了提高访问速度,它们的内部引用会被“swizzle”成内存地址。当数据需要写回磁盘时,这些地址又会被“unswizzle”回原始的OID或磁盘地址。
  • 持久化对象系统: 在一些面向对象的系统中,对象可以在内存和磁盘之间进行透明的存取。指针转换是实现这种透明性的关键技术之一。
  • 可执行文件加载: 当操作系统加载一个可执行文件到内存时,文件中的相对地址和符号引用会通过指针转换被解析成实际的内存地址。
  • 序列化和反序列化: 在将复杂数据结构序列化(保存)和反序列化(加载)时,指针转换是处理内部引用和链接的常用方法。

4. 注意事项

  • 复杂性: 如果数据结构中存在循环引用,指针转换会变得更加复杂,需要仔细管理旧引用和新地址之间的映射关系。
  • 安全性: 不当的指针转换实现可能导致安全漏洞,例如允许攻击者访问预期范围之外的内存地址。
  • 性能权衡: 尽管指针转换可以提高运行时性能,但转换本身会带来一定的开销,特别是在频繁加载和卸载数据时。因此,需要根据具体应用场景进行权衡。

总结来说,“swizzle pointer” 是一种优化技术,它通过在数据从持久存储加载到内存时,将位置无关的引用转换为直接内存指针,从而提高程序访问数据结构中对象的速度。

Co-routine Pool for High Concurrency(高并发协程池)

image-20250721210051402

我的理解就相当于时间片分配,协程(Coroutine)根据需要分配到不同的线程(感觉比较像Go语言中的协程概念?),这种方案可以有效利用异步IO,当线程结束时触发GC与页面交换(Page Swap)机制,同时也会删除些WAL

MVCC事务

image-20250721210537011

拥有完整的MVCC事务,承诺拥有和PostgreSQL一致的事务隔离级别,这一块概念我没看太明白(坑以后再填Doge)

其事务不需要全局的Hasthtable进行锁管理,似乎可以分开管理

实验结果

在CentOS 9上运行TPC-C实验集,比PostgreSQL快27倍,tpmC指标为1370万(13.7 million)

编译基础设施:GCC 11

CPU:Intel(R) Xeon(R) Gold 5320 CPUs

image-20250721210911748

结语

感觉除了Kernel By-Pass和NUMA,把能用于提升事务的数据库技术都给用上了

该数据库目前还在演进中,期待日后会有更多惊喜


avatar

探索未曾设想的道路