VidarDB PostgreSQL扩展模块为RocksDB实现外来数据包装(FDW

2020-06-03 11:02:36

这个PostgreSQL扩展为RocksDB实现了外来数据包装器(FDW)。此回购已在PostgreSQL维基中列出。

RocksDB是一个基于日志结构合并树(LSM树)的高性能键值存储。RocksDB可以高效地使用多个CPU核心和快速存储。这是第一个将基于LSM树的存储引擎连接到PostgreSQL的外来数据包装器。因为RocksDB是一个可嵌入的键值存储,所以您不需要运行另一个服务器就可以使用此扩展。

此扩展也可用于具有类似RocksDB的API的其他系统,但请在将此扩展用于其他系统之前检查兼容性。

此扩展由VidarDB团队开发和维护。您可以通过Github报告错误或问题。

我们使用PostgreSQL-11和RocksDB-6.2.4(使用GCC-7.4.0构建)在Ubuntu Server18.04上测试了这个外来数据包装器。

#添加存储库/etc/apt/Soures.list.d/pgdg.list<;<;end deb http://apt.postgresql.org/pub/repos/apt/bionic-pgdg main end#获取签名密钥并导入itwget https://www.postgresql.org/media/keys/ACCC4CF8.ascsudo apt-key add ACCC4CF8.asc#从新存储库获取元数据apt-get update#install postgresql和dev library sudo apt-get install postgresql-11sudo apt-get install。

git克隆-b v6.2.4 https://github.com/facebook/rocksdb.git CD ROKdbsudo DEBUG_LEVEL=0 make Shared_lib install-sharedsudo sh-c&34;cho/usr/local/lib>;>;/etc/ld.so.conf";sudo ldconfig。

要为VidarDB构建外部数据包装器,请在上面的make命令中添加标志VIDARDB=true。

在使用此外来数据包装器之前,我们需要将其添加到postgresql.conf中的Shared_PRELOAD_LIBRARY:

卸载该扩展时,先下发以下命令,然后在PostgreSQL终端中通过show data_directory;找到PostgreSQL数据文件夹,删除数据。

此扩展没有任何参数。创建扩展和相应的服务器后,您可以使用RocksDB作为PostgreSQL的外部存储引擎。

下面是一个简单的示例(您可以运行';sudo-u postgres psql-U postgres';连接本地PostgreSQL服务器):

CREATE DATABASE示例;\c示例CREATE EXTENSION KV_FDW;CREATE SERVER KV_SERVER外部数据包装器KV_FDW;CREATE EXPENT TABLUAL(id INTEGER,NAME TEXT)服务器KV_SERVER;INSERT INSIGNAL VALUMENT(20757123,#39;Rafferty&39;);SELECT*FROM SELENT;INSERT INTERNAL INSTUMENT值(20767234,#39;琼斯;#39;)。删除外表学生;删除服务器KV_SERVER;删除扩展名KV_FDW;\c Postgres删除数据库示例;

我们已经测试了某些典型的SQL语句,稍后将添加更多测试用例。测试脚本位于test/sql文件夹中,建议将其放在非根目录中。可以在test/Expect文件夹中找到相应的结果。您可以通过以下方式运行测试:

SUDO服务PostgreSQL重新启动CD PostgresForeignDataWrapper sudo-u postgres psql-U postgres-a-f test/sql/create.sql sudo-u postgres psql-U postgres-d kvtest-a-f test/sql/test.sql sudo-u postgres psql-U postgres-d kvtest-a-f test/sql/clear.sql。

如果您需要调试源代码,可能需要在调试模式下启动PostgreSQL:

我们也可以在Docker容器中使用RocksDB运行PostgreSQL,您可以在这里参考。