数据库是Linux应用中的主要部分Linux上的主要数据库包括商业数据库: OracleSybaseDBInformix自由软件数据库: MySQLPostgreSQLMsql等
商业数据库
由于商业数据库有很好的技术支持这里只简单介绍一下
() IBM DB (/data/db/linux/)
() Informix (/informix/products/linux/) Informix目前支持Linux是Informix SEESQL/CConnect
() Oracle (/iplatform/linux/) Oracle目前支持Linux的是Oralce ii
() Sybase (/products/databaseservers/linux/l) Sybase目前支持Linux的是Adaptive Server Enterprise
()Ingres (/products/betas/ingres_linux/) CA目前支持Linux的是Ingres II数据库
自由软件数据库
MYSQL
MysQL是瑞典的TcX公司负责开发和维护的它是一个真正的多用户多线程SQL数据库服务器MysQL是以一个客户机/服务器结构实现其功能的它由一个服务器守护程序mysqld和很多不同的客户程序和库组成SQL是一种标准化的语言它使得存储更新和存取信息更容易MySQL主要特点是快速健壮和易用MySQL的官方发音是My Ess Que Ell(不是MYSEQUEL)目前MySQL的最新版本是MySQL的网址是MySQL的标志是一个小海豚
()MySQL的优点
它使用的核心线程是完全多线程支持多处理器
有多种列类型和字节长度自有符号/无符号整数FLOATDOUBLECHARVARCHARTEXTBLOBDATETIMEDATETIMETIMESTAMPYEAR和ENUM类型
它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速通常在查询初始化后不该有任何内存分配没有内存漏洞
全面支持SQL的GROUP BY和ORDER BY子句支持聚合函数(COUNT()COUNT(DISTINCT)AVG()STD()SUM()MAX()和MIN())你可以在同一查询中混来自不同数据库的表
支持ANSI SQL的LEFT UTER JOIN和ODBC
所有列都有缺省值你可以用INSERT插入一个表列的子集那些没用明确给定值的列设置为他们的决省值
MySQL可以工作在不同的平台上支持CC++JavaPerlPHPPython和TCL API
() MySQL的缺点
MySQL最大的缺点是其安全系统主要是复杂而非标准另外只有到调用mysqladmin来重读用户权限时才发生改变
MySQL的另一个主要的缺陷之一是缺乏标准的RI(Referential IntegrityRI)机制Rl限制的缺乏(在给定字段域上的一种固定的范围限制)可以通过大量的数据类型来补偿
MySQL没有一种存储过程(Stored Procedure)语言这是对习惯于企业级数据库的程序员的最大限制
MySQL不支持热备份
MySQL的价格随平台和安装方式变化Linux的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的第三方案则必须付许可费Unix或Linux自行安装免费Unix或Linux第三方安装美元
需要一个应用组件美元
mSQL
mSQL(mini SQL)是一个单用户数据库管理系统个人使用免费商业使用收费由于它的短小精悍使其开发的应用系统特别受到互联网用户青睐mSQL(mini SQL)是一种小型的关系数据库性能不是太好对SQL语言的支持也不够完全但在一些网络数据库应用中是足够了由于mSQL较简单在运行简单的SQL语句时速度比MySQL略快而MySQL在线程和索引上下了功夫运行复杂的SQL语句时比mSQLPostgreSQL等都要快一些MSQL的网址是au最新版本是MSQL的标志是一个山羊
安全性方面mSQL通过ACL文件设定各主机上各用户的访问权限缺省是全部可读/写mSQL缺乏ANSI SQL的大多数特征它仅仅实现了一个最最少的API没有事务和参考完整性mSQL与Lite(一种类似C的脚本语言与分发一起发行)紧密结合可以得到一个称为WmSQL的一个网站集成包它是JDBCODBCPerl和PHP API
PostgreSQL
PostgreSQL是属于对象关连式的数据库管理系统(ORDBMS)PostgreSQL的前身叫做Ingres是于年至年间由着名的柏克莱大学所发展出来的由于PostgreSQL是用C语言写成的所以在不同的Unix平台上移植非常方便PostgreSQL可以在LinuxFreeBSDSCO UnixHP UnixSolarisAIX等平台上运行PostgreSQ的网址是最新版本是PostgreSQL的官方发音是PostgresQLPostgreSQ的标志是一个大象
()PostgreSQL的主要优点
对事务的支持与MySQL相比经历了更为彻底的测试
PostgreSQL支持存储过程对于一个严肃的商业应用来说作为数据库本身有众多的商业逻辑的存在此时使用存储过程可以在较少地增加数据库服务器的负担的前提下对这样的商业逻辑进行封装并可以利用数据库服务器本身的内在机制对存储过程的执行进行优化此外存储过程的存在也避免了在网络上大量的原始的SQL语句的传输这样的优势是显而易见的
PostgreSQL支持视图视图的存在同样可以最大限度地利用数据库服务器内在的优化机制而且对于视图权限的合理使用事实上可以提供行级别的权限这是MySQL的权限系统所无法实现的
PostgreSQL支持触发器触发器的存在不可避免的会影响数据库运行的效率但是与此同时触发器的存在也有利于对商业逻辑的封装可以减少应用程序中对同一商业逻辑的重复控制合理地使用触发器也有利于保证数据的完整性
PostgreSQL支持约束约束的作用更多地表现在对数据完整性的保证上合理地使用约束也可以减少编程的工作量
PostgreSQL支持子查询虽然在很多情况下在SQL语句中使用子查询效率低下而且绝大多数情况下可以使用带条件的多表连接来替代子查询但是子查询的存在在很多时候仍然不可避免而且使用子查询的SQL语句与使用带条件的多表连接相比具有更高的程序可读性
PostgreSQL支持Rtrees这样可扩展的索引类型可以更方便地处理一些特殊数据支持ODBC
PostgreSQL可以更方便地使用UDF(用户定义函数)进行扩展
()PostgreSQL的主要缺点
PostgreSQL运行速度明显低于MySQL因为MySQL使用了线程而PostgreSQL使用的是进程在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多
PostgreSQL目前仍不完全适应×小时运行这是因为你必须每隔一段时间运行一次VACUUM
PostgreSQL在权限系统上不过完善PostgreSQL只支持对于每一个用户在一个数据库上或一个数据表上的INSERTSELECT和UPDATE/DELETE的授权而MySQL允许你定义一整套的不同的数据级表级和列级的权限
由于PostgreSQL生成每页的速度要比MySQL慢所以不足以用来作高流量网站应用Postgres没有与MySQL的mysql_insertid()等价的函数调用如果在MySQL的数据库中插入一行数据MySQL将返回这行主关键字的ID而在Postgres中完成这样一个操作需要绕许多圈子如果大量应用就会降低效率
PostgreSQL还欠缺一些比较高端的数据库管理系统需要的特性比如对大对象的有效支持以及查询缓沖等提高数据库性能的机制等
Linux下的数据库系统还有一些如dbm是linux下的一种非关系数据库它实际上是文件形式的哈希表每一对名字/值项称为一个记录 dbm有好几个版本如ndbmgdbm等
总结以上我们主要介绍了Linux环境下的一些主要的数据库其他自由软件数据库还有GadflyBeagleSQLBerkely DBGNU SQL等