Linux数据库大比拼
这个工作可让学生分组负责收集整理,登在小黑板上,每周一换。要求学生抽空抄录并且阅读成诵。其目的在于扩大学生的知识面,引导学生关注社会,热爱生活,所以内容要尽量广泛一些,可以分为人生、价值、理想、学习、成长、责任、友谊、爱心、探索、环保等多方面。如此下去,除假期外,一年便可以积累40多则材料。如果学生的脑海里有了众多的鲜活生动的材料,写起文章来还用乱翻参考书吗? 当第一次有人建议我为LinuxPlanet写数据库管理系统的比较时,我摇了摇头,我从来没做过这样的比较,但是后来,我想:有何不可?也许一种新鲜天真的方法并不坏。因此就有本文:一种全新眼光看缤纷的Linux数据库世界。本文共4部分。

  在这里比较的数据库管理器是免费的或有便宜的许可费,并且他们可在所有层次的Linux系统上运行,从低端硬件到高端多处理器服务器,他们已经广泛地应用世界范围的生产系统上。为了比较,我把我自己放在了运行典型的Linux机器的境地,每天都由 DBMS提供动力。

  我将考察:

  mSQL
  MySQL
  PostgreSQL

  我将以一个这3个数据库系统的安装和配置的讨论开始,然后我将在第2部分继续,通过用SQL的一个小数据库的设计,指出我碰到的困难和试图使数据库系统接受的差异,我也将解释一个程序的编码,它在数据库上执行各种的真实操作,例如增加数据并产生报表,同时讨论数据库在处理上的各种差别。这个客户程序针对所有3个数据库系统用C语言实现。为此,我必须不仅学习所有系统SQL API,还有SQL。如果没有其他东西,这将肯定饶有兴趣地看下去。

  第三部分将包含一些真实的基准测试,作为奖赏。我已经有了在Linux 新闻组上款观看关于数据库的基准测试结果没完没了的争论的保持怀疑的乐趣,因此我将只测试客户程序做随机事情的时间性能,既在理想的条件下运行跑又通过多个并发进程的时候。那时我将已经涉及DBMS之间的大多数差别,因此你应该有了关于他们的强项和弱项的一个良好概念。

  最后的部分将是你所期待的一切:结论、覆盖的特征、实现、在DBMS之间的API和性能差别。

  但是现在,准备深入数据库管理的王国的探险吧。

  获得并安装 PostgreSQL

  位于PostgreSQL 网站的软件小节,有一个FTPHTTP镜像网站的列表,可从他们下载分发,也有定购DBMS CD的选择。构造并安装它是一个多步骤过程。

  首先,如果你想要建立PostgresqlPerl语言绑定,在你系统上的Perl 5 可执行文件必须已知是perl5的名字。通常,这意味着你需要做一个符号连接。

  也许要做的最重要的事情是创造一个postgres用户。在我的系统上,这个命令可运行:

  useradd - c PostgreSQL Administrator - d /opt/postgresql - g users postgres

  在其他系统上,命令可能有所不同。注意我假定postgres是在users组里。你可能比较喜欢
给数据库主管一个它自己的组。

  如果不另外说明,所有其它安装步骤需要以用户postgres身份来做。

  解开PostgreSQL下载包并进入源代码目录树:

  tar - xvzf postgresql-6.5.
  cd postgresql-6.5.2

  用root用户,创建PostgreSQL目录并把交给postgres用户:
  mkdir /opt/pgsql
  chown postgres.users /opt/pgsql

  进入源代码目录并配置软件包。我用下列选择:

  ./configure -- prefix=/opt/pgsql -- with-perl

  进行构造和安装过程:
我国古代的读书人,从上学之日起,就日诵不辍,一般在几年内就能识记几千个汉字,熟记几百篇文章,写出的诗文也是字斟句酌,琅琅上口,成为满腹经纶的文人。为什么在现代化教学的今天,我们念了十几年书的高中毕业生甚至大学生,竟提起作文就头疼,写不出像样的文章呢?吕叔湘先生早在1978年就尖锐地提出:“中小学语文教学效果差,中学语文毕业生语文水平低,……十几年上课总时数是9160课时,语文是2749课时,恰好是30%,十年的时间,二千七百多课时,用来学本国语文,却是大多数不过关,岂非咄咄怪事!”寻根究底,其主要原因就是腹中无物。特别是写议论文,初中水平以上的学生都知道议论文的三要素是论点、论据、论证,也通晓议论文的基本结构:提出问题――分析问题――解决问题,但真正动起笔来就犯难了。知道是这样,就是讲不出为什么。根本原因还是无。于是便翻开作文集锦之类的书大段抄起来,抄人家的名言警句,抄人家的事例,不参考作文书就很难写出像样的文章。所以,词汇贫乏、内容空洞、千篇一律便成了中学生作文的通病。要解决这个问题,不能单在布局谋篇等写作技方面下功夫,必须认识到死记硬背的重要性,让学生积累足够的 cd .. /doc
make install
cd .. /src
make all
make install
单靠记还不行,还得,姑且称之为先死后活吧。让学生把一周看到或听到的新鲜事记下来,摒弃那些假话套话空话,写出自己的真情实感,篇幅可长可短,并要求运用积累的成语、名言警句等,定期检查点评,选择优秀篇目在班里朗读或展出。这样,即巩固了所学的材料,又锻炼了学生的写作能力,同时还培养了学生的观察能力、思维能力等等,达到一石多鸟的效果。
  现在是执行一些附加的系统配置的时间了。

  作为root,将下行
  /opt/pgsql/lib
  加入/etc/f并运行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的人至少需要有PGLIBPGDATA的设置。

  Source .profile文件:
  source .profile
  运行后期安装:
  initdb
  获得并安装 MySQL

  MySQL的最新版本可从MySQL下载页。有很多可选择的镜像站点。你需要执行下列步骤:

  解开包并进入源代码目录树:
  tar - xvzf mysql-3.22.
  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不比下载PostgreSQLMySQL那样简单, 但是,其分发更小。从Hughes技术网页开始并且寻更进一步的指令。为了下载mSQL,首先需要在该站点注册并且通过一个基于CGI的下载系统,如有必要允许你在一些镜像站点间选择。构造和安装的mSQL的步骤如下:

  解开包并进入源代码目录:
  tar - xvzf msql-2.0.
  cd msql-2.0.11

  产生目标定义:
  make target
  进入你平台的目标目录:
  cd targets/Linux-2.2.12-i586
  配置软件包:
  ./setup
  编辑;我将安装路径改成linux安装数据库/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监控程序并且被接受应该没有任何问题。所有的表在创建前被删除因此确保他们不会在创建之前已经存在。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。