OrioleDB: 新一代PostgreSQL存储引擎

PostgreSQL 12 引入了可插拔式的表存储方法接口,允许为不同的表选择不同的存储机制,例如用于 OLTP 操作的堆表(HEAP、默认)、用于 OLAP 操作的列式表(Citus),以及用于超快速搜索处理的内存表。

PostgreSQL 这一特性类似于 MySQL 的插件式存储引擎,例如 InnoDB、MyISAM。

今天给大家介绍一个云原生的 PostgreSQL 存储引擎:OrioleDB。

功能特性

OrioleDB 旨在解决 PostgreSQL 默认 HEAP 表在 OLTP(在线事务处理)场景中的一些性能瓶颈,并引入现代数据库存储技术的设计理念,提供更高的并发性能、更低的延迟,并减少存储开销。

在这里插入图片描述
OrioleDB 以扩展插件形式提供,基于 PostgreSQL 协议发布,提供的核心特性包括:

  • 基于现代存储技术(SSD、NVRAM)设计,优化多核 CPU 和 NUMA 架构下的资源分配,提升吞吐量。
  • 基于 Undo Log 的 MVCC,将旧版本数据存储在独立的 Undo Log 而不是主表中。事务回滚或旧版本清理时直接操作 Undo Log,避免主表数据膨胀。同时还支持 64 位事务 ID,避免了回卷问题。
  • 聚簇索引,默认使用聚簇索引(类似 MySQL/InnoDB),数据按主键顺序存储,减少随机 I/O,提升范围查询性能。
  • 压缩存储,支持页级数据压缩,降低存储成本。
  • 分布式支持,Copy-on-Write 检查点提供结构一致的数据快照,兼容 SSD 特性,并支持紧凑的行级 WAL 记录。基于行级 WAL 日志和 Raft 共识算法,支持并行回放和 Active-Active 多主架构,适合分布式部署。

使用示例

目前,OrioleDB 还处于 Beta 阶段,最简单的使用方法就是利用 Docker:

docker run -d --name orioledb -p 5432:5432 orioledb/orioledb

然后安装扩展插件并创建数据表:

-- 创建扩展插件
CREATE EXTENSION orioledb;-- 创建表
CREATE TABLE blog_post
(id int8 NOT NULL,title text NOT NULL,body text NOT NULL,author text NOT NULL,published_at timestamptz  NOT NULL DEFAULT CURRENT_TIMESTAMP,views bigint NOT NULL,PRIMARY KEY(id)
) USING orioledb; -- 使用OrioleDB存储引擎-- 创建索引
CREATE INDEX blog_post_published_at ON blog_post(published_at);

OrioleDB 使用聚簇索引,因此主键的选择对于性能至关重要;如果没有指定主键字段,数据库会基于 ctid 字段创建一个隐藏的替代主键。

接下来就可以执行一些 DML 操作:

INSERT INTO blog_post (id, title, body, author, views)
VALUES (1, 'Hello, World!', 'This is my first blog post.', 'John Doe', 1000);SELECT * FROM blog_post ORDER BY published_at DESC LIMIT 10;

更详细的使用介绍和注意事项可以参考以下官方文档:

https://www.orioledb.com/docs

性能比较

以下是一些 OrioleDB 和默认 HEAP 存储引擎的性能比较:

测试一:只读测试显示 OrioleDB 存储引擎的性能是 PostgreSQL 默认引擎的 4 倍。

在这里插入图片描述

测试二:读写测试显示 OrioleDB 存储引擎的性能是 PostgreSQL 默认引擎的 4.5 倍。

在这里插入图片描述

测试三:OrioleDB 存储引擎的磁盘读取(IOPS)是 PostgreSQL 默认引擎的 1/6。

在这里插入图片描述

测试四:OrioleDB 存储引擎的磁盘写入比 PostgreSQL 默认引擎大幅减少。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑自动关机故障维修案例分享

电脑基本配置: C P U: AMD A10 9700 内存:8G 硬盘:金邦512G固态硬盘 主板:华硕 A320M-F 显卡:集成(核心显卡) 操作系统:Win10专业版 故障描述: 使用一段时间会黑屏…

JVM垃圾收集器相关面试题(1)

垃圾收集与内存管理摘要 一.核心垃圾收集算法对比 算法原理优点缺点适用场景标记-清除两次遍历(标记存活对象→清除未标记对象)实现简单内存碎片化、双遍历效率低老年代(结合整理)标记-复制内存对半分,存活对象复制到…

栈(LIFO)算法题

1.删除字符串中所有相邻的重复字符 注意,我们需要重复处理,而不是处理一次相邻的相同元素就结束了。对示例来说,如果只进行一次处理,结果为aaca,但是处理之后又出现了相邻的重复元素,我们还得继续处理&…

conda的基本使用及pycharm里设置conda环境

创建conda环境 conda create --name your_env_name python3.8 把your_env_name换成实际的conda环境名称,python后边的根据自己的需要,选择python的版本。 激活conda环境 conda activate your_env_name 安装相关的包、库 conda install package_name …

Python基于深度学习的多模态人脸情绪识别研究与实现

一、系统架构设计 A[数据采集] --> B[预处理模块] B --> C[特征提取] C --> D[多模态融合] D --> E[情绪分类] E --> F[系统部署] F --> G[用户界面] 二、数据准备与处理 1. 数据收集 - 视频数据:FER2013(静态图像&#xff0…

synchronized与 Java内置锁(未写完)

文章目录 一、 synchronized 关键字二、Java对象结构1. 对象头2. 对象体3. 对齐字节4. 对象头中的字段长度5. Mark Word 的结构信息6. 使用 JOL 工具查看对象的布局 三、Java 内置锁机制3.1 内置锁的演进过程1. 无锁状态2. 偏向锁状态3. 轻量级锁状态4. 重量级锁状态 一、 sync…

LLM(3): Transformer 架构

Transformer 架构是当前大语言模型的主力架构和基础技术,本文以通俗易懂的方式,对此作简要介绍。 1.4 介绍 Transformer 架构 大多数现代的大规模语言模型(LLMs)依赖于 Transformer 架构,这是一种在 2017 年的论文《…

11.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--整合日志

网关作为微服务架构的入口,承载着各服务间的请求转发与安全校验,其日志信息尤为关键。通过整合网关日志,可以将分散在不同系统中的访问记录、错误提示和异常信息集中管理,为问题排查提供全景视角。在排查故障时,统一日…

88.HarmonyOS NEXT 性能监控与调试指南:构建高性能应用

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT 性能监控与调试指南:构建高性能应用 文章目录 HarmonyOS NEXT 性能监控与调试指南:构建高性能应用1. 性能监…

012---状态机的基本知识

1. 摘要 文章为学习记录。主要介绍状态机概述、状态转移图、状态编码、状态机写法、状态机代码示例。 2. 状态机概述 状态机 (Finite State Machine),也称为同步有限状态机,用于描述有先后顺序或时序规律的事情。 “同步”&…

deepseek+kimi做ppt教程记录

1.首先注册deepseek和kimi deepseek官网:https://chat.deepseek.com/ kimi官网:https://kimi.moonshot.cn/ 以下以一篇工作总结报告为例 2.使用deepseek生成ppt大纲 让deepseek生成kimi生成ppt所需要的内容时,需要注意提示词内容,…

Java Module介绍

Java模块系统自Java 9开始引入,旨在提供更强大的封装机制、清晰的依赖关系定义以及可靠的配置。Java平台本身也被模块化了,提供了多个核心模块以及其他用于支持不同功能的模块。以下是一些重要的Java标准模块: java.base - 这是最基础的模块…

SOME/IP:用Python实现协议订阅、Offer、订阅ACK与报文接收

文章目录 前言一、代码层次二、详细代码1. eth_scapy_sd.py2、eth_scapy_someip.py3、network_define.py4、packet_define.py5、unpack_define.py6、someip_controller.py 前言 1、需要pip安装scapy库 2、需要修改根据实际情况配置network_define.py 3、执行someip_controller…

【Linux内核系列】:文件系统收尾以及软硬链接详解

🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 世界上只有一种个人英雄主义,那么就是面对生活的种种失败却依然热爱着生活 内容回顾 那么在之前的学习中,我们…

最新版Chrome浏览器加载ActiveX控件技术--allWebPlugin中间件一键部署浏览器扩展

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

基于SpringBoot和MybatisPlus实现通用Controller

基于SpringBoot和MybatisPlus实现通用Controller,只需要创建实体类和mapper接口,单表增删改查接口就已经实现,提升开发效率 1.定义通用controller package com.xian.controller;import cn.hutool.core.map.MapUtil; import com.baomidou.my…

Axure大屏可视化原型模板及素材:数据可视化的高效解决方案

数据可视化已成为企业决策、运营分析、市场洞察的重要工具。数据可视化大屏,作为数据展示和交互的直观平台,能够实时呈现关键数据,帮助企业快速做出决策。Axure作为原型设计领域的领先工具,以其丰富的组件库、强大的交互设计能力和…

YOLOE:实时查看任何事物

摘要 https://arxiv.org/pdf/2503.07465v1 目标检测和分割在计算机视觉应用中得到了广泛应用,然而,尽管YOLO系列等传统模型高效且准确,但它们受限于预定义的类别,阻碍了在开放场景中的适应性。最近的开放集方法利用文本提示、视觉…

【品铂科技工业生产应用案例解析】

品铂科技(Pinpoint)在工业领域的高精度定位解决方案已广泛应用于电力、钢铁、仓储、化工、地铁等场景,以下为典型应用案例及技术方案: 一、‌电力行业:上海闵行电厂人员定位‌ 白鹤滩水力发电站 ‌项目需求‌&#x…

7-Zip 功能介绍

7-Zip 是一款开源、高效的文件压缩与解压缩工具,支持多种格式,以高压缩率和灵活性著称。以下是其核心功能: 多格式支持 压缩 / 解压:支持 7z(默认格式,压缩率极高)、ZIP、RAR、GZIP、BZIP2、TAR…