写点什么

以 Git 为数据源、具备版本控制的数据源 Dolt 新增了 PostgreSQL 风味

  • 2024-01-04
    北京
  • 本文字数:1091 字

    阅读完需:约 4 分钟

大小:507.35K时长:02:53
以 Git 为数据源、具备版本控制的数据源 Dolt 新增了 PostgreSQL 风味

DoltgreSQL 以版本控制数据库 Dolt 为基础构建,为 Postgre 数据库模式及数据提供类 Git 的日志、差异、分支及合并功能。

 

Dolt 作为 SQL 数据库,允许用户像是 Git 代码库一样进行克隆、fork、分支及合并。通过 Dolt,应用程序开发者可以为用户创建分支,合并工作流,比如发送 pull 请求修复数据中的错误。同理,Dolt 可以通过数据库分支、变更应用,在暂存环境中测试,并最终部署回生产环境的这种简单模型修改生产数据库。

 

Dolt 从创建之初就采用了 MySQL 的语法和面向命令行的范式,Git 用户对此必然不会感到陌生。

 

DoltgreSQL 专注于数据库服务体验,提供可定制且易于部署的服务器。此外,该公司表示这款数据库不提供命令行支持,以更好地与 PostgreSQL 的一般用户体验保持一致。

 

DoltgreSQL 的工作原理是模拟 PostgreSQL 服务器,将接收到的命令转化为 AST 后提供给底层的 Dolt 服务器。如此一来便能实现快速的启动和运行,同时还可利用 Dolt 已提供的能力和功能。

 

这种在 Dolt 基础之上的构建新功能的优势在于可借助后者的稳定性和可靠性,减少开发的范围和工作量。

 

DoltHub 称他们研究了不同的方式,其中包括编写外来数据包装器、构建全新 PostgreSQL 存储后端,甚至是 fork PostgreSQL 本身。这些方式中有些存在太大的局限性,有些(如 fork PostgreSQL)则需要数年之久的开发时间。

 

至于负面方面,这种仿 Git 方法的缺点在于其无法运行实际的 PostgreSQL 二进制文件。正如前文所述,DoltgreSQL 是将 PostgreSQL 语法转换为 AST 表示法,并在 Dolt 层中运行。

 

在完成安装 DoltgreSQL 之后,用户可以使用 psql 命令行客户端连接到数据库。若要查询数据库状态,则可运行这行语句:

select * from dolt_status;
复制代码

这行语句会列出所有现存表,并指定这些表为新表或暂存表等等。若要将一个表添加到暂存区域,则可运行这行语句:

call dolt_add('my_table_name');
复制代码

若要提交变更,则运行:

call dolt_commit('-m', 'updated schema');
复制代码

而 select * from dolt_log;语句则是等同于 git log

 

Doltgres 仍处于试验阶段且存在一些限制情况,其中包括不支持 DoltHub 和 DoltLab、没有身份验证或用户管理、对 SSL 连接的支持有限、不支持复制、群集等。

 

虽然 Dolt 的“数据版 Git”这一价值主张听起来很有吸引力,但数据库专家 J. Andrew Rogers 在 Hacker News 上指出,这一目标与多版本并发控制(MVCC)几十年来的尝试并无二致,而且还存在几个重要缺点。Dolt 首席执行官 Tim Sehn 强调,与原生 MySQL 在 sysbench 基准的运行相对比,Dolt 仅比 MySQL 略慢一点。


原文链接:

Git-for-Data, Version-Controlled Database Dolt Gets PostgreSQL-Flavor

2024-01-04 08:007858

评论

发布
暂无评论
发现更多内容

音视频理论(2)- 音视频传输协议之 RTMP

liuzhen007

签约计划第二季

JavaScript 数据结构之 Number

devpoint

ES6 math 内容合集 签约计划第二季

音视频实战(2)- 如何在网页端给视频添加硬水印

liuzhen007

签约计划第二季

为什么不上台?(5/28)

赵新龙

28天写作

音视频学习从理论到实战

liuzhen007

内容合集 签约计划第二季 技术专题合集

Android 框架解析:EventBus 3.0 如何实现事件总线

拭心

android Framework 内容合集 签约计划第二季 shixinzhang

架构实战营毕业总结

Geek_d18264

架构实战营

搭建基本Jest测试框架,解读覆盖率实现原理

梁龙先森

签约计划第二季

JavaScript 数据结构之 Object

devpoint

ES6 Object 内容合集 签约计划第二季

.NET 6新东西--PeriodicTimer

喵叔

28天写作 12月日更

架构实战营毕业总结

白开水又一杯

#架构实战营

http协议

en

HTTP

勿拖延

Nydia

如何通过Kubernetes事件来报告错误

Robert Lu

#Kubernetes#

Android 框架解析:EventBus 3.0 的特点与如何使用

拭心

android Framework 内容合集 签约计划第二季

音视频理论(3)- 视频中图片和文字渲染坐标问题

liuzhen007

签约计划第二季

Prometheus Exporter (十七)JMX Exporter

耳东@Erdong

JMX Prometheus 28天写作 exporter 12月日更

音视频实战(5)- FFmpeg 处理音视频常见问题集锦

liuzhen007

签约计划第二季

JavaScript 数据结构之 Map

devpoint

set map ES6 内容合集 签约计划第二季

JavaScript数据结构实用集

devpoint

JavaScript 数据结构 内容合集 签约计划第二季

Rust 元宇宙 13 —— 客户端连接

Miracle

rust 元宇宙

实用机器学习笔记四:数据标注

打工人!

机器学习 学习笔记 12月日更 实用机器学习

Go并不需要Java风格的GC

Robert Lu

Go 垃圾回收

音视频实战(3)- Mac 系统 MediaInfo 多实例媒体信息分析

liuzhen007

签约计划第二季

音视频实战(4)- 常见流媒体服务器方案对比分析

liuzhen007

签约计划第二季

如何有效处理素材

将军-技术演讲力教练

Camtasia添加光标效果教程

淋雨

Camtasia

华为中国大学生ICT大赛2021实践赛网络赛道晋级赛试题解析(答案版)

小韩

华为 网络 ICT

从0到1普及前端知识 | 内容合集

你好bk

内容合集 签约计划第二季

netty系列之:手持framecodec神器,创建多路复用http2客户端

程序那些事

Netty HTTP 程序那些事 http2 12月日更

JavaScript 数据结构之 Set

devpoint

set ES6 内容合集 签约计划第二季

以 Git 为数据源、具备版本控制的数据源 Dolt 新增了 PostgreSQL 风味_数据库_Sergio De Simone_InfoQ精选文章