Linux数据库大比拼

上传人:宝路 文档编号:2142276 上传时间:2017-07-20 格式:DOC 页数:16 大小:92KB
返回 下载 相关 举报
Linux数据库大比拼_第1页
第1页 / 共16页
Linux数据库大比拼_第2页
第2页 / 共16页
Linux数据库大比拼_第3页
第3页 / 共16页
Linux数据库大比拼_第4页
第4页 / 共16页
Linux数据库大比拼_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《Linux数据库大比拼》由会员分享,可在线阅读,更多相关《Linux数据库大比拼(16页珍藏版)》请在金锄头文库上搜索。

1、Linux 数据库大比拼当第一次有人建议我为 LinuxPlanet 写数据库管理系统的比较时,我摇了摇头,我从来没做过这样的比较,但是后来,我想:有何不可?也许一种新鲜天真的方法并不坏。因此就有本文:一种全新眼光看缤纷的 Linux 数据库世界。本文共 4 部分。 在这里比较的数据库管理器是免费的或有便宜的许可费,并且他们可在所有层次的 Linux 系统上运行,从低端硬件到高端多处理器服务器,他们已经广泛地应用世界范围的生产系统上。为了比较,我把我自己放在了运行典型的Linux 机器的境地,每天都由 DBMS 提供动力。 我将考察: mSQL MySQL PostgreSQL我将以一个这 3

2、个数据库系统的安装和配置的讨论开始,然后我将在第2 部分继续,通过用 SQL的一个小数据库的设计,指出我碰到的困难和试图使数据库系统接受的差异,我也将解释一个程序的编码,它在数据库上执行各种的真实操作,例如增加数据并产生报表,同时讨论数据库在处理上的各种差别。这个客户程序针对所有 3 个数据库系统用 C 语言实现。为此,我必须不仅学习所有系统 SQL API,还有 SQL。如果没有其他东西,这将肯定饶有兴趣地看下去。 第三部分将包含一些真实的基准测试,作为奖赏。我已经有了在 Linux 新闻组上款观看关于数据库的基准测试结果没完没了的争论的保持怀疑的乐趣,因此我将只测试客户程序做随机事情的时间

3、性能,既在理想的条件下运行跑又通过多个并发进程的时候。那时我将已经涉及 DBMS 之间的大多数差别,因此你应该有了关于他们的强项和弱项的一个良好概念。 最后的部分将是你所期待的一切:结论、覆盖的特征、实现、在 DBMS 之间的API 和性能差别。 但是现在,准备深入数据库管理的王国的探险吧。 获得并安装 PostgreSQL 位于 PostgreSQL 网站的软件小节,有一个 FTP 和 HTTP 镜像网站的列表,可从他们下载分发,也有定购 DBMS CD 的选择。构造并安装它是一个多步骤过程。 首先,如果你想要建立Postgresql 的 Perl 语言绑定,在你系统上的 Perl 5 可执

4、行文件必须已知是 perl5的名字。通常,这意味着你需要做一个符号连接。 也许要做的最重要的事情是创造一个 postgres 用户。在我的系统上,这个命令可运行: useradd - c “ PostgreSQL Administrator” - d /opt/postgresql - g users postgres 在其他系统上,命令可能有所不同。注意我假定 postgres 是在 users 组里。你可能比较喜欢给数据库主管一个它自己的组。 如果不另外说明,所有其它安装步骤需要以用户 postgres 身份来做。解开 PostgreSQL 下载包并进入源代码目录树: tar - xvzf

5、 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,将下行

6、/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 exp

7、ort 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 配置软件包;我使用

8、下列选项目: ./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 用户:获得并安装 mSQ

9、L 下载 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;我将

10、安装路径改成/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 个数据库管理系统,我当然需要一个数据库来管理他们。

11、在读完了SQL 傻瓜书 后,我有了一些如何设计现 实的数据库的基本知识,因此我拣选了一特别无聊的真实世界情形(一个因特网书 店,其他?) 并且写下了一 个小型数据库设计以便探讨一点 Sql 的能力。 在这个数据库里有 5 个表,BOOK 保存可得到的书的登记信息;CUSTOMER 包含登记的顾客。对每份订单,BOOKORDER 创建一行,参照其顾客。对每个定购的项目,在ORDER_POSITION 里引用它的订单号。作为一种奖励,针对书的排名我增加了一RATING 表。 下列的 SQL 代码可装入到一个数据库系统 的 SQL 监控程序并且被接 受应该没有任何问题。所有的表在创建前被删除因此确保

12、他们不会在创建之前已经存在。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 CUSTOM

13、ER; 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 PRIMA

14、RY 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

15、 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 IN

16、TEGER PRIMARY KEY, ARTICLE_NO INTEGER NOT NULL, SCORE NUMERIC(1,0), COMMENT CHARACTER VARYING(300), CONSTRAINT BOOK_FK FOREIGN KEY (ARTICLE_NO) REFERENCES BOOK (ARTICLE_NO) ); 当然,这是一个极其简单的数据库。它看上去真实,但是它不适用于真实世界的应。它不保存顾客记录或任何东西,并且它甚至没有书的出版商的列。它只是一个测试环境。 注意我不想花大气力强制 CUSTOMER.ISO_COUNTRY_CODE 为今天是实际有效的编码。我在代码做了一点限制以测试数据库系统是否接受他们;我没尝试使数据库无懈可击。 改变设计适应 PostgreSQL当我将遵循 ANSI 标准的 CREATE TABLE 语句装入 Postgresql的 psql 监控视程序是,我遇到的困难是很少的。我得到一些警告:外部关键字限制被接受但还没

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号