NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

以 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:007265

评论

发布
暂无评论

是时候学习Linux了

Simon

Linux

操作系统bochs安装及使用

allworldg

操作系统

面试必杀技,讲一讲Spring中的循环依赖

程序员DMZ

spring

面试官:你说你懂i++跟++i的区别,那你知道下面这段代码的运行结果吗?

程序员DMZ

JVM i++

易观郭炜:流动水系数造未来

易观大数据

MySQL关于日期为零值的处理

Simon

MySQL

枚举算法练习例题(Python版)

罗罗诺亚

Python 算法 枚举

spring Cloud Eureka Rest接口重写

xcbeyond

Java SpringCloud Eureka

Java-技术专题-synchronized关键字

洛神灬殇

SpringCloud服务注册中心双节点集群(Eureka集群)

xcbeyond

Java 架构 微服务 Eureka 集群

ARTS week 4

锈蠢刀

云上安全工作乱如麻,等保2.0来一下

华为云开发者联盟

安全 华为云 等保 云平台 多云服务

CRM往事丨三件事,所有SaaS的缩影

人称T客

实践案例丨教你一键构建部署发布前端和Node.js服务

华为云开发者联盟

node.js 后端 服务器 代码 华为云鲲鹏

恢复青春气息,就靠这套人像美肤算法了

博文视点Broadview

算法 计算机视觉 图像识别 人像

影响音视频延迟的关键因素(一):流媒体系统

ZEGO即构

TCP udp RTC HLS RTMP

为啥PHP in_array(0,['a', 'b', 'c']) 返回为true?

架构精进之路

php 弱类型语言

跨域问题(CORS / Access-Control-Allow-Origin)

xcbeyond

Java CORS 跨域

海量并发也没那么可怕,运维准点下班全靠它!

华为云开发者联盟

容器 网络 并发 华为云

SWARM学习1——Kademlia分布式路由表协议

AIbot

区块链 DHT 分布式存储 分布式文件存储 分布式路由

区块链、人工智能……警惕非法金融借创新概念迷惑投资人

CECBC

区块链 金融

程序范式的意义

soolaugust

架构 程序设计

一个数据库管理员的自我救赎之路

华为云开发者联盟

数据库 华为云 数据库迁移 企业上云 DRS

如果你每次面试前都要去背一篇Spring中Bean的生命周期,请看完这篇文章

程序员DMZ

spring 生命周期

关于日期及时间字段的查询

Simon

MySQL sql查询

nginx 报错 accept4 () failed (24:Too many open files)

Java联盟

nginx

我的敏捷历程 —— 兼评《敏捷整洁之道 - 回归本源》

FollowFlow

敏捷开发 Agile 极限编程 XP

MySQL索引问题探究手记

架构精进之路

MySQL 索引

钓鱼网站:详解hosts文件

xcbeyond

Java 域名解析 hosts

MySQL5.7升级到8.0过程详解

Simon

MySQL

一个虚拟世界里栽树的公司及其启示

郭华

技术 商业模式 电影

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