由于MongoDB不支持复杂的查询, 项目的数据库需要切换到PostgreSQL上, 因为pg支持hstore这个字段类型, 提供跟MongoDB一样的k=>v存储.
一. 安装
Linux下:
我在公司的开发机器是Arch, 安装比较顺利, 使用pacman安装即可, 现在Arch上默认的就是9.0.1了, 不需要自己编译了. 安装 完成后, 需要修改一下/etc/rc.d/postgresql脚本, 找到su – postgres -c “/usr/bin/initdb $INITOPTS -D $PGROOT/data”这一行, 在data后面加上-E utf8, 不加这个启动会失败的. 加好后, 使用/etc/rc.d/postgresql start来启动pg, 它会自动创建用户postgres和data目录.
Mac下:
家里的平台是Mac, 安装pg比较轻松, 去官网下载一个二进制包, 一路next, 默认也把pgadmin3装好了.
二. 加入hstore的支持
Linux下:
使 用su – postgres切换到postgres用户, 注意先给postgres设置一个密码, 命令为passwd postgres. 切换到postgres后, 使用psql -d DATABASE_NAME -f /usr/share/postgresql/contrib/hstore.sql加入hstore字段类型.
Mac下:
前 面的步骤都一样, 就是在执行脚本的时候, 命令应该为psql -d DATABASE_NAME -f /Library/PostgreSQL/9.0/share/postgresql/contrib/hstore.sql, 当然, 如果你安装的时候改变了路径, 这里就要相应的改一下了.
这样, 我们就把PostgreSQL装好了, 也加入了hstore的支持, 看似很简单, 可这其实是我无数次尝试后才实验出来的一个方法. 尤其是在Arch下启动pg那里, 看了很多人的blog和wiki, 都没有讲到encoding的问题, 可是我就是启动不了, 只好去改postgresql这个启动文件.
下一篇会讲一下如何使用psycopg2操作PostgreSQL和使用hstore字段, 敬请期待, 哈哈. 今天太晚了, 明天再写.