The Road of Hacking PostgreSQL (1)

   最 近在写一些大规模数据存储和查询的小程序,发现很多核心的技术还是来自于我们的数据库技术。然后,真正到做的时候才晓得原来自己对于数据库很多本质的东西 的理解并不透彻。我感觉,数据库技术真正核心的是数据的物理存储,外存内存交互,索引这些东西。而关系代数,SQL语言这些都是其次的。诸如现在的 Google的bigTable等东西,其实最本质的技术还是在数据库领域。和真正做数据库的同学聊了一会,觉得自己真的应该好好研究一下现在已经成熟的 数据库产品。作为学习数据库的同学都知道PostgreSQL在数据库界的地位了,同时它又是开源的。

    在 Windows上安装PostgreSQL已经很简单了,因为官方网站已经提供了Windows版本的下载。不过我的目的是学习PostgreSQL的源 代码,那么肯定是要下原始的代码,然后自己编译,安装,运行。整个编译运行环境还是必须得是Unix/Linux,所以我首先尝试再Cygwin下安装。

Cygwin 的安装最好齐全,诸如什么flex,bison,g++,readline,cygserver,perl这些肯定是要安装的了。我下的 PostgreSQL版本是最新的postgresql-8.3.5。接下来的configure,make和make install都比较正常。不过奇怪的是,cygwin的bash执行时间长了,居然和卡巴斯基2009冲突,卡巴斯基的avp.exe一直占用50%左 右的CPU,并且使得cygwin的bash始终卡住。后来我关掉卡巴斯基就OK了。编译过程也不算太长,比起之前编译的insight好短很多了。

    网上有很多《Cygwin下面安装postgreSQL》 文章,都抄来抄去的那一篇。于是我也按上面的办法开始安装。不过有点奇怪的就是我执行cygserver-config的时候居然找不到 cygrunsrv.exe。通过Google找到它,然后copy都cygwin/bin目录下。initdb都OK了。接下来又发生奇怪的事情。 pg_ctl.exe,createuser.exe,createdb.exe执行之后都直接返回,没有任何提示信息。但是数据库并没有启动起来。后来 在Windows命令控制台下执行,提示说什么PQMesssege**函数再cygpg.dll定位不到。在cygwin/bin目录的确已经有 cygpg.dll啊。难道是PostgreSQL和当前的cygwin版本不匹配?

然 后我又从cygwin的setup下了cygwin自带的postgreSQL-8.2.9。似乎它要通过什么cygport来打 patch,compile,install。敲入命令之后,再执行,结果到了后来还是遇到error了,中止了。这个时候我就快崩溃了。。。

    我 能想到唯一的解决方案就是装一个纯正的Linux算了。于是下了Ubuntu 8.10和VMWare。不过我没有装VMWare Workstation,那个家伙光是安装文件都有500MB,而且盗版还要招破解序号,太麻烦了。我装的是VMWare Player 2.5.1,只有40多M,免费软件。它除了不能制作vmx虚拟机文件外,其他的功能都齐全。至于vmx虚拟机文件可以从http://www.easyvmx.com 在线订做,1分钟就搞定了,下载之后也只有几K的空文件。用VMWare Player打开就可以安装Ubuntu了。下面就是我的VMWare Player跑起来的一个截图,做得小巧,不错!

image

默认的Ubuntu安装之后,还有很多软件没有安装齐备。就连g++都没有,VIM也只有tiny common文件。那么又要开始漫长的下载和安装必要的Ubuntu程序文件了。。。这个时候我再回到Windows下试试我的cygwin。发 现,pqsql目录下,除了bin外,还有一个lib,里面有很多dll,而且居然还有刚报错的那个cygpq.dll。我估计pg_ctl.exe等需 要的应该是这里面的dll,于是拷贝所有的dll到了bin目录下。然后pg_ctl.exe,createuser.exe,createdb.exe 都work了!!!

image

搞了我一个晚上和一个上午,总算把postgreSQL跑通了。这里附带一篇psql的用法(http://www.chinalinuxpub.com/doc/psql/app-psql.html),否则进入psql都还不知道怎么敲命令呢。

    好了,从下一篇《The Road of Hacking PostgreSQL》开始,我就深入PostgreSQL源代码的内部做分析和介绍了。最近我还再继续看我最钟爱的《X档案》,最后借用它的结束语也是:To be continued….

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页