您的位置:首页 > 数据库

Ubuntu 安装 PostgreSQL 插件 pgbson

2014-12-26 16:25 405 查看
pgbson 是我在网上找到的一个 postgresql 插件,使得 postgresql 可以支持 bson 类型。
pgbson 可以在 Github 上找到源码: https://github.com/maciekgajewski/postgresbson
我在 Git@OSC 上做了一个镜像:http://git.oschina.net/pythonshell/postgresbson 
pgbson 利用 mongodb 里面 bson 的 c++ driver ,对 bson 数据进行 decode 和 encode 工作,在此基础上,封装了自己的操作函数。
mongoDB 的 Github 组织主页在: https://github.com/mongodb
mongoDB 的 c++ bson driver 在:https://github.com/mongodb/mongo-cxx-driver

本文叙述 Ubuntu 14.10 环境下安装 pgbson 的过程。
安装 pgbson 之前需要先安装好官方的 postgresql ,具体过程可以参考我之前写的《Ubuntu 上编译安装 PostgreSQL》一文。
如果你是按照我之前的文章安装的 PostgreSQL ,那么建议安装 pgbson 的过程也使用 postgres 用户完成。

1. 首先确认 pgbson 所需要的依赖都安装好了,有 cmake gcc 和 boost 库
     $ sudo apt-get install cmake boost-all-dev
2. 保证 postgres 的可执行文件在 bash shell 的路径内。 pgbson 安装前需要知道 postgres 安装在哪里。
     如果和我安装 PostgreSQL 一文中一样,安装在 /home/postgres/pgsql/bin 目录下,可以在终端输入如下的命令:
     $ PATH=$PATH:/home/postgres/pgsql/bin
     上述方法只会在目前临时性改变变量 PATH 的值,以后登录, PATH 的值又会恢复到之前,设置登录时修改 PATH 的方法有很多种,网上可以搜到。
3. 获得 pgbson 的源码:
     我这里使用工具 git (在 postgres 用户目录下执行这个命令):
     $ git clone http://git.oschina.net/pythonshell/postgresbson
4. 新建编译目录,使用 cmake 进行编译:
     postgres@ubuntu:~$ mkdir postgresbson-build
     postgres@ubuntu:~$ cd postgresbson-build
     postgres@ubuntu:~/postgresbson-build$ cmake ../postgresbson
     postgres@ubuntu:~/postgresbson-build$ make     # 编译过程一切顺利,没有报错
     postgres@ubuntu:~/postgresbson-build$ make install    # 如果你的 postgresql 是安装在系统里,而不是用户目录下,在这里你很可能需要在命令的最前面加上 sudo
     postgres@ubuntu:~/postgresbson-build$ make test     # 测试,这里我的 array tools 部分的测试没能通过,目前原因未知。

至此, pgbson 插件就安装好了。

安装后的使用,可以参考 pgbson 的 README.md 文件里的说明。
在运行以下 SQL 语句之前,用户需要把 postgresql 的守护程序启动,如我安装在用户目录下,则运行如下的命令(注意执行命令时所在的目录):
postgres@ubuntu:~/pgsql$ bin/postgres -D data/ >logfile 2>&1 &
postgres@ubuntu:~/pgsql$ bin/psql


Example

CREATE EXTENSION pgbson;
CREATE TABLE data_collection ( data BSON );
CREATE INDEX ON data_collection( bson_get_text(data, 'name'));

INSERT INTO data_collection VALUES ('{"name":"John", "age":32}'), ('{"name":"Spike", "spieces":"Dog"}');

select * from data_collection where bson_get_text(data, 'name') = 'Spike';
data
-----------------------------------------
{ "name" : "Spike", "spieces" : "Dog" }
(1 row)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Ubuntu postgresql 插件