分享
 
 
 

Linux数据库大比拚

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

本文简介

当第一次有人建议我为LinuxPlanet写数据库管理系统的比较时,我摇了摇头,我从来没做过这样的比较,但是后来,我想:有何不可?也许一种新鲜天真的方法并不坏。因此就有本文:一种全新眼光看缤纷的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语言绑定,在你系统上的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用户

获得并安装 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

据库设计

编者按:这是涉及可自由地获得的Linux DBMS的系列文章的第二部分。

为了测试并比较3个数据库管理系统,我当然需要一个数据库来管理他们。在读完了《SQL傻瓜书》后,我有了一些如何设计现实的数据库的基本知识,因此我拣选了一特别无聊的真实世界情形(一个因特网书店,其他?)并且写下了一个小型数据库设计以便探讨一点Sql的能力。

在这个数据库里有5个表,BOOK保存可得到的书的登记信息;CUSTOMER包含登记的顾客。对每份订单,BOOKORDER创建一行,参照其顾客。对每个定购的项目,在ORDER_POSITION里引用它的订单号。作为一种奖励,针对书的排名我增加了一RATING表。

下列的SQL代码可装入到一个数据库系统的SQL监控程序并且被接受应该没有任何问题。所有的表在创建前被删除因此确保他们不会在创建之前已经存在。

DROP TABLE BOOK;

CREATE TABLE BOOK (

ARTICLE_NO INTEGER PRIMARY KEY,

AUTHOR_FIRST_NAMES CHARACTER(30),

AUTHOR_LAST_NAMES CHARACTER(30),

TITLE CHARACTER(30),

ISBN CHARACTER(13) UNIQUE,

WHOLESALE_PRICE NUMERIC(4,2),

RETAIL_PRICE NUMERIC(4,2),

COPIES_AVAILABLE INTEGER

);

DROP TABLE CUSTOMER;

CREATE TABLE CUSTOMER (

CUSTOMER_NO INTEGER PRIMARY KEY,

FIRST_NAMES CHARACTER(30),

LAST_NAMES CHARACTER(30),

STREET CHARACTER(30),

HOUSE_NO SMALLINT,

POSTCODE CHARACTER(7),

TOWN CHARACTER(30),

ISO_COUNTRY_CODE CHARACTER(2)

);

DROP TABLE BOOKORDER;

CREATE TABLE BOOKORDER (

ORDER_NO INTEGER PRIMARY KEY,

CUSTOMER_NO INTEGER NOT NULL,

ORDERED DATE,

DELIVERY DATE,

STATUS CHARACTER(8)

CHECK (STATUS IN (′ACCEPTED′,

′DELAYED′,

′SHIPPED′,

′RETURNED′,

′PAID′)),

CONSTRAINT CUSTOMER_FK FOREIGN KEY (CUSTOMER_NO)

REFERENCES KUNDE (KUNDENNAME)

);

DROP TABLE ORDER_POSITION;

CREATE TABLE ORDER_POSITION (

POSITION_NO INTEGER PRIMARY KEY,

ORDER_NO INTEGER NOT NULL,

ARTICLE_NO INTEGER NOT NULL,

NUMBER SMALLINT,

CONSTRAINT ORDER_FK FOREIGN KEY (ORDER_NO)

REFERENCES BOOKORDER (ORDER_NO),

CONSTRAINT BOOK_FK FOREIGN KEY (ARTICLE_NO)

REFERENCES BOOK (ARTICLE_NO)

);

DROP TABLE RATING;

CREATE TABLE RATING (

RATING_NO INTEGER PRIMARY KEY,

ARTICLE_NO INTEGER NOT NULL,

SCO

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有