Linux数据库大比拚(三)

评估大量因素
  我们将要在中途改变方向。在这部分,我将涉及与性能无关的话题。在下一个并且是最后一部分,我将全面研究基准测试并以最终结论结束。
  
  一般差别
  不同于PostgreSQL,MySQL和mSQL不是真正的关系数据库管理系统。我看到有人在新闻组里把MySQL称为“只是一个快速存储工具”,并且mSQL甚至被称为了一个玩具--不敢恭维。至少mSQL实现了部分一个完整的SQL DBM应该提供的功能。
  
  如果一个人需要一个真实的RDBMS,三者中唯一可行的选择是PostgreSQL。如果计算原始的性能表现,特别是如果对数据库所做的存取并不复杂并且大多数是自动的,一个更小的系统可能更好一些。因此,mSQL和MySQL被宣传为网数据库系统。
  
  许可证
  PostgreSQL以一个BSD风格许可证被分发,在所有相关的方面均是自由的(也许对一些狂热者来说太自由了),如果版权声明被保留,基本上一个人可以用该软件做任何事情。
  
  MySQL是免费的并且在某些条件下源代码允许被修改,但是禁止为了商业目的的再分发。
  
  mSQL对非商业性组织的使用是免费的;但在一个14天评估时期以后,购买一个许可证是必要的。
  
  因为这些差别,在使用他们之一的企业的人们需要仔细地考虑许可条件。
  
  ANSI 标准的实现
  这3个系统都是在叫喊是完全实现 ANSI SQL 标准的,公平地讲,这在我看来有点可怕。当MySQL实现了开发者已经定义好的一个子集时,mSQL甚至没有尝试真正遵循ANSI 标准。PostgreSQL 最后定位在与 ANSI 完全兼容,但是它仍然有一条长路要走。
  
  PostgreSQL确实还没有支持参考完整性(RI),但是只测试了DBMS的事务(transaction)。另外,新的SQL特征像SQLSTATE变量也没有实现。
  
  MySQL既不支持事务也不保证参考完整性;对事务存取数据库表能明确地为锁定和解锁。
  
  mSQL缺乏 ANSI SQL 的大多数特征,它仅仅实现了一个最最少的API,没有事务和参考完整性。
  
  APIs
  所有3个系统测试的API大部分对处理是透明的,发生任何问题通常是由于不正确的文档,而不是API本身。
  
  mSQL和MySQL都没有嵌入式SQL(ESQL)预处理器功能。随着ESQL的诞生,现在我相当喜欢它,但是使用mSQL 和 MySQL 本身提供的C API并不困难。有同样光标的含义,但以一个不同的方法实现,并且把字符串传递给C函数仅比在代码中使用码嵌入式 SQL语句稍难一点儿。 
  除了提到的ESQL API,PostgreSQL带有C API、C++绑定、JDBC、ODBC、Perl绑定、Python和Tcl绑定。
  
  MySQL对Win32平台有附加的ODBC支持;语言联编 (接口)至少有C++、Eiffel、Java、Perl、Python、PHP和Tcl可以得到。
  
  mSQL与Lite(一种类似C的脚本语言,与分发一起发行)紧密结合,可以得到一个称为 W3-mSQL的一个网站集成包,它是JDBC、ODBC、Perl和PHP API。
  
  注意我没有测试那些任何附加的绑定和特征;他们的质量和文档的表述不是很好。能获得很多对这3个系统的第三方扩展;本文不再赘述。
  
  文档和更多
  PostgreSQL以DocBook SGML格式记录文档。手册分为管理员指南、程序员指南、用户指南和一本教程。另外,FAQ和各种各样的说明文件涉及一些话题。软件的好多领域缺乏足够的文档。
  
  MySQL以GNU Texinfo格式记录文档;手册看起来完全。
  
  mSQL有一个单个文件的手册(没有超文本),它有PostScript和HTML形式。作为能从一个商业软件产品的的角度所期望的,它覆盖了所有的特征。
  
  认证和一般的安全
  这时我还没谈及的一个话题,但是需要在这个比较中提及的是存取认证。ANSI SQL 对于存取控制提供很复杂且很精致的机制, 也就是GRANT和REVOKE语句。
  
  PostgreSQL和MySQL能理解这些标准语句,但内部处理存取控制是不同的。可以得到mSQL的网站集成包中的一个认证增强程序(W3-mSQL),但是在它基本形态中,大多数数据库系统似乎没有任何内置的存取控制支持。不像safe_mysqld和postmaster,mSQL数据库守护程序假定有root运行的,它可以可能造成安全隐患。
  
  任何大型数据库都需要一个安全概念,就像它需要一个彻底的数据库设计一样。不可能说他们中支持认证系统(即 PostgreSQL或MySQL)的哪一个是更安全的;这里, 任何事情均取决于设计。
  
  在本系列的第四部分,本文做作者集中精力研究DBMS的性能测量和工具的全面总结。 
  

时间: 2024-08-24 18:14:08

Linux数据库大比拚(三)的相关文章

linux数据库大比拚(一)

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

Linux数据库大比拚(二)

为了测试并比较3个数据库管理系统,我当然需要一个数据库来管理他们.在读完了<SQL傻瓜书>后,我有了一些如何设计现实的数据库的基本知识,因此我拣选了一特别无聊的真实世界情形(一个因特网书店,其他?)并且写下了一个小型数据库设计以便探讨一点Sql的能力.      在这个数据库里有5个表,BOOK保存可得到的书的登记信息:CUSTOMER包含登记的顾客.对每份订单,BOOKORDER创建一行,参照其顾客.对每个定购的项目,在ORDER_POSITION里引用它的订单号.作为一种奖励,针对书的排名

《Linux 高级程序设计(第三版)》——1.3 部分常用工具简介

1.3 部分常用工具简介 Linux 高级程序设计(第三版)1.3.1 tar打包器 如果要发布包含大量程序和文档的程序,则需对其进行打包压缩.在Shell命令行下,可以使用的文件压缩工具有:gzip.bzip2和zip.相应的压缩和解压工具如表1-5所示. tar类型的文件是几个文件和(或)目录在一个文件中的集合,tar命令用来创建备份和归档.tar使用的选项有以下几项. -c:创建一个新归档. -x:从归档中抽取文件.即解压缩. -j:压缩/解压bz2格式tar文件. -z:压缩/解压gz格

微软计划推Linux数据库 彻底颠覆前任CEO哲理

3月8日消息,据外电报道,微软周一推出了Linux版SQL Server预览版,并将于2017年中全面发布这款产品.把数据库软件SQL Server向开放源代码的Linux操作系统进行开放,微软的这一做法旨在吸引大企业用户,从甲骨文手中夺取市场份额. SQL Server是微软的旗舰数据库软件.长期以来,该产品与Windows Server操作系统一直是微软盈利性最强的企业产品.在前任首席执行官史蒂夫·鲍尔默(Steve Ballmer)统治微软时期,该公司与Linux一直势不两立.鲍尔默曾经说

分库 分区 分表-数据库大表是分库,分区,还是分表?

问题描述 数据库大表是分库,分区,还是分表? 10C 数据库大表是分库,分区,还是分表?数据库大表是分库,分区,还是分表?数据库大表是分库,分区,还是分表? 解决方案 要根据实际情况来,有的数据读的多,写的少,有的数据写的多读的少,有的数据查询多,读写都少.不同情况有不同的措施. 解决方案二: 大表首先是分区.降低文件io,然后再对应数据的分表 解决方案三: 1.当数据库压力很大时分区集群,比如有成千上完客户端同一时间频繁访问数据库,每个字段内容又很大时,比如网站的文章库 2.当有大量陈年数据在

《Linux 高级程序设计(第三版)》——2.2 GCC/GDB编译调试工具基础

2.2 GCC/GDB编译调试工具基础 Linux 高级程序设计(第三版) GCC/G++是GNU最优秀的自由软件之一,它主要提供C/C++程序的编译工作.Linux下的C.C++程序开发过程中,一般都采用GCC/G++/GDB工具.将C语言程序编译成一个可执行文件一般都需经过以下4个步骤. (1)预处理(Preprocessing):对源代码文件中的文件包含.宏定义.预编译语句进行分析和替换. (2)编译(Compilation):根据编译器的语法规则,将高级语言转换为以.s为后缀的汇编语言文

数据分析 大数据-数据库大数据的优化方法

问题描述 数据库大数据的优化方法 数据库的数据库达到数百亿上千亿的时候,查询数据库中数据会发生长时间卡顿,怎么才能优化?使大数据查询流畅??? 解决方案 那么大数量级的没做过,不过根据查询条件设置分区表是个不错的选择 解决方案二: 大数据量高并发访问的数据库优化方法大数据量高并发访问的数据库优化方法大数据量高并发的数据库优化 解决方案三: 如果没有分布式的条件,那可以考虑分库,但是分库也带来了查询的复杂性,综合考虑吧,另外就是查询时,按一定条件查询,不要全部查询,建好索引 解决方案四: 数据库

高人自有妙计:罗龙九六招制服云数据库大流量峰值

在9月20日-21日举办的大流量高并发互联网应用实践在线峰会上,阿里云数据库专家罗龙九(花名:玄惭)分享的主题是<云数据库大流量峰值保障最佳实践>,他结合历年双十一活动中云数据库保障经验,从弹性扩容.访问链路.架构设计.高可用配置.性能优化.参数优化六个方面详解讲解云数据库大流量峰值保障的最佳实践.  以下为在线分享观点整理. 弹性扩容 多数用户在双十一到来之前都会进行弹性扩容,常见的弹性扩容分为两类:本机升降级和跨机升降级.例如现在有一个6G/6C的RDS数据库想要升级到12G/12C,如果

db2-求数据库大神帮忙,SQL优化

问题描述 求数据库大神帮忙,SQL优化 小弟数据库方面的知识非常浅薄,只会写sql语句实现查询,但是确不会做优化,以下有两个sql语句,在数据库中执行的非常慢,DB2,有没有数据库大神,帮忙优化一下,不胜感激. --单证号是否连续 select * from ( select double(replace(c.doc_nbr, 'QZ', '')) as nbr,c.doc_id, b.pip_nbr,c.inv_code,'1' as t from op_bill a,op_bill_deta