本文简介
当第一次有人建议我为LinuxPl.net写数据库管理系统的比较时,我摇了摇头,我从来没做过这样的比较,但是后来,我想:有何不可?也许一种新鲜天真的方法并不坏。因此就有本文:一种全新眼光看缤纷的Linux数据库世界。本文共4部分。
在这里比较的数据库管理器是免费的或有便宜的许可费,并且他们可在所有层次的Linux系统上运行,从低端硬件到高端多处理器服务器,他们已经广泛地应用世界范围的生产系统上。为了比较,我把我自己放在了运行典型的Linux机器的境地,每天都由 DBMS提供动力。
我将考察:
mSQL
MySQL
PostgreSQL
我将以一个这3个数据库系统的安装和配置的讨论开始,然后我将在第2部分继续,通过用SQL的一个小数据库的设计,指出我碰到的困难和试图使数据库系统接受的差异,我也将解释一个程序的编码,它在数据库上执行各种的真实操作,例如增加数据并产生报表,同时讨论数据库在处理上的各种差别。这个客户程序针对所有3个数据库系统用C语言实现。为此,我必须不仅学习所有系统SQL API,还有SQL。如果没有其他东西,这将肯定饶有兴趣地看下去。
第三部分将包含一些真实的基准测试,作为奖赏。我已经有了在Linux 新闻组上款观看关于数据库的基准测试结果没完没了的争论的保持怀疑的乐趣,因此我将只测试客户程序做随机事情的时间性能,既在理想的条件下运行跑又通过多个并发进程的时候。那时我将已经涉及DBMS之间的大多数差别,因此你应该有了关于他们的强项和弱项的一个良好概念。
最后的部分将是你所期待的一切:结论、覆盖的特征、实现、在DBMS之间的API和性能差别。
但是现在,准备深入数据库管理的王国的探险吧。
获得并安装 PostgreSQL
位于PostgreSQL 网站的软件小节,有一个FTP和HTTP镜像网站的列表,可从他们下载分发,也有定购DBMS CD的选择。构造并安装它是一个多步骤过程。
首先,如果你想要建立Postgresql的Perl语言联编(binding),在你系统上的Perl 5 可执行文件必须已知是perl5的名字。通常,这意味着你需要做一个符号连接。
也许要做的最重要的事情是创造一个postgres用户。在我的系统上,这个命令可运行:
useradd - c “ PostgreSQL Administrator” - d /opt/postgresql - g users postgres
在其他系统上,命令可能有所不同。注意我假定postgres是在users组里。你可能比较喜欢给数据库主管一个它自己的组。
如果不另外说明,所有其它安装步骤需要以用户postgres身份来做。
解开PostgreSQL下载包并进入源代码目录树:
tar - xvzf postgresql-6.5.2.tar.gz
cd postgresql-6.5.2
用root用户,创建PostgreSQL目录并把交给postgres用户:
mkdir /opt/pgsql
chown postgres.users /opt/pgsql
进入源代码目录并配置软件包。我用下列选择:
./configure -- prefix=/opt/pgsql -- with-perl
进行构造和安装过程:
cd .. /doc
make install
cd .. /src
make all
make install
现在是执行一些附加的系统配置的时间了。
作为root,将下行
/opt/pgsql/lib
加入/etc/ld.so.conf并运行ldconfig。
安装Perl联编,当用root登录后:
cd interface/perl5
make install
设置postgres账号。将下列行增加到.profile文件中:
PATH=$PATH:/opt/pgsql/bin
MANPATH=$MANPATH:/opt/pgsql/man
PGLIB=/opt/pgsql/lib
PGDATA=/opt/pgsql/data
export PATH MANPATH PGLIB PGDATA
LC_COLLATE=C
LC_CTYPE=C
export LC_COLLATE LC_CTYPE
最后3行对init过程和也许某些测试是必要的试。对实际的用户,他们当然应该设置到适当的现场,但是每个使用 PostgreSQL的人至少需要有PGLIB和PGDATA的设置。
Source .profile文件:
source .profile
运行后期安装:
initdb
获得并安装 MySQL
MySQL的最新版本可从MySQL下载页。有很多可选择的镜像站点。你需要执行下列步骤:
解开包并进入源代码目录树:
tar - xvzf mysql-3.22.26a.tar.gz
cd mysql-3.22.26a
配置软件包;我使用下列选项目:
./configure -- prefix=/opt/mysql
构造它:
make
安装它;用root用户:
make install
然后你需要配置安装:
作为root用户,创建授权数据库表:
scripts/mysql_install_db
作为root,启动服务器:
/opt/mysql/bin/safe_mysqld &
作为root,创建mysql用户:
useradd - c “ MySQL Administrator” - d /opt/mysql - g users mysql
作为root,把安装树属权赋给mysql用户:
chown - R mysql.users /opt/mysql
获得并安装 mSQL
下载mSQL不比下载PostgreSQL或MySQL那样简单, 但是,其分发更小。从Hughes技术网页开始并且寻找更进一步的指令。为了下载mSQL,首先需要在该站点注册并且通过一个基于CGI的下载系统,如有必要允许你在一些镜像站点间选择。构造和安装的mSQL的步骤如下:
解开包并进入源代码目录:
tar - xvzf msql-2.0.11.tar.gz
cd msql-2.0.11
产生目标定义:
make target
进入你平台的目标目录:
cd targets/Linux-2.2.12-i586
配置软件包:
./setup
编辑site.mm;我将安装路径改成/opt/msql。
构造它:
make all
作为root 用户安装它:
make install
在构造和安装的mSQL以后,你需要配置它:
作为root,创建msql用户:
useradd - c “mSQL Administrator” - d /opt/msql - g users msql
作为root,把目录属权交给msql用户:
chown - R msql.users /opt/msql