linux

位置:IT落伍者 >> linux >> 浏览文章

Linux平台数据库大比拚(3)


发布日期:2020年12月14日
 
Linux平台数据库大比拚(3)

评估大量因素

我们将要在中途改变方向在这部分我将涉及与性能无关的话题在下一个并且是最后一部分我将全面研究基准测试并以最终结论结束

一般差别

不同于PostgreSQLMySQL和mSQL不是真正的关系数据库管理系统我看到有人在新闻组里把MySQL称为只是一个快速存储工具并且mSQL甚至被称为了一个玩具不敢恭维至少mSQL实现了部分一个完整的SQL DBM应该提供的功能

如果一个人需要一个真实的RDBMS三者中唯一可行的选择是PostgreSQL如果计算原始的性能表现特别是如果对数据库所做的存取并不复杂并且大多数是自动的一个更小的系统可能更好一些因此mSQL和MySQL被宣传为网数据库系统

许可证

PostgreSQL以一个BSD风格许可证被分发在所有相关的方面均是自由的(也许对一些狂热者来说太自由了)如果版权声明被保留基本上一个人可以用该软件做任何事情

MySQL是免费的并且在某些条件下源代码允许被修改但是禁止为了商业目的的再分发

mSQL对非商业性组织的使用是免费的但在一个天评估时期以后购买一个许可证是必要的

因为这些差别在使用他们之一的企业的人们需要仔细地考虑许可条件

ANSI 标准的实现

个系统都是在叫喊是完全实现 ANSI SQL 标准的公平地讲这在我看来有点可怕当MySQL实现了开发者已经定义好的一个子集时mSQL甚至没有尝试真正遵循ANSI 标准PostgreSQL 最后定位在与 ANSI 完全兼容但是它仍然有一条长路要走

PostgreSQL确实还没有支持参考完整性(RI)但是只测试了DBMS的事务(transaction)另外新的SQL特征像SQLSTATE变量也没有实现

MySQL既不支持事务也不保证参考完整性对事务存取数据库表能明确地为锁定和解锁

mSQL缺乏 ANSI SQL 的大多数特征它仅仅实现了一个最最少的API没有事务和参考完整性

APIs

所有个系统测试的API大部分对处理是透明的发生任何问题通常是由于不正确的文档而不是API本身

mSQL和MySQL都没有嵌入式SQL(ESQL)预处理器功能随着ESQL的诞生现在我相当喜欢它但是使用mSQL 和 MySQL 本身提供的C API并不困难有同样光标的含义但以一个不同的方法实现并且把字符串传递给C函数仅比在代码中使用码嵌入式 SQL语句稍难一点儿

除了提到的ESQL APIPostgreSQL带有C APIC++联编JDBCODBCPerl联编Python和Tcl联编(bindings)

MySQL对Win平台有附加的ODBC支持语言联编 (接口)至少有C++EiffelJavaPerlPythonPHP和Tcl可以得到

mSQL与Lite(一种类似C的脚本语言与分发一起发行)紧密结合可以得到一个称为 WmSQL的一个网站集成包它是JDBCODBCPerl和PHP API

注意我没有测试那些任何附加的绑定和特征他们的质量和文档的表述不是很好能获得很多对这个系统的第三方扩展本文不再赘述

文档和更多

PostgreSQL以DocBook SGML格式记录文档手册分为管理员指南程序员指南用户指南和一本教程另外FAQ和各种各样的说明文件涉及一些话题软件的好多领域缺乏足够的文档

MySQL以GNU Texinfo格式记录文档手册看起来完全

mSQL有一个单个文件的手册(没有超文本)它有PostScript和HTML形式作为能从一个商业软件产品的的角度所期望的它覆盖了所有的特征

认证和一般的安全

这时我还没谈及的一个话题但是需要在这个比较中提及的是存取认证ANSI SQL 对于存取控制提供很复杂且很精致的机制 也就是GRANT和REVOKE语句

PostgreSQL和MySQL能理解这些标准语句但内部处理存取控制是不同的可以得到mSQL的网站集成包中的一个认证增强程序(WmSQL)但是在它基本形态中大多数数据库系统似乎没有任何内置的存取控制支持不像safe_mysqld和postmastermSQL数据库守护程序假定有root运行的它可以可能造成安全隐患

任何大型数据库都需要一个安全概念就像它需要一个彻底的数据库设计一样不可能说他们中支持认证系统(即 PostgreSQL或MySQL)的哪一个是更安全的这里 任何事情均取决于设计

上一篇:一些基础的 Linux 问题

下一篇:当Linux分区出错时的处理