多款强大高效的开源海量数据库推荐

作者:190 hihi 来源:ChinaZ源码报导 浏览: 2011-9-2 10:11:33 字号:
[摘要]几大数据库厂商在数据库领域处于垄断地位的时候,出现了以MySQL、PostgreSQL为代表的开放源代码的数据库系统,推动了开源软件事业的发展。开源数据库系统并不是一个新事物,如Postgres(PostgreSQL的前身)已经有20多年的发展历史了。

  随着开放源码软件的使用越来越广泛,像Linux操作系统一样,开放源码的数据库出现也有其必然性。在当Oracle、IBM、Microsoft、Sybase等几大数据库厂商在数据库领域处于垄断地位的时候,出现了以MySQL、PostgreSQL为代表的开放源代码的数据库系统,推动了开源软件事业的发展。开源数据库系统并不是一个新事物,如Postgres(PostgreSQL的前身)已经有20多年的发展历史了。

  就像昨天,做电子商务的淘宝,也在开源数据库插了一脚,发布了海量开源数据库OceanBase,笔者今天就介绍几款包括OceanBase在内的开源数据库。

  1、MYSQL

  MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。对于Mysql的前途,没有任何人抱乐观的态度。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

  MySQL的技术特点:

  1. 它使用的核心线程是完全多线程,支持多处理器。
  2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。
  3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。
  4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。
  5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
  6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。
  7. MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。

  2、PostgreSQL

    PostgreSQL是一种运行在Unix和Linux操作系统(在NT平台借助Cygnus也可以运行)平台上的免费的开放源码的关系数据库。最早是由美国加州大学伯克利分校开发的,开始只是作为一个演示系统发表,但是随着时间的推移,逐步分发,得到很多实际的应用,才逐步流行起来。

  PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、多版本并发控制。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。并且,因为许可证的灵活,任何人都可以以任何目的免费使用,修改,和分发 PostgreSQL, 不管是私用,商用,还是学术研究使用。
 

  PostgreSQL的技术特点:

  1. 支持SQL.作为关系数据库,它支持SQL89标准也支持部分SQL92大部分功能。
  2. 有丰富的数据类型。许多数据类型是一些商业数据库都没有提供的。
  3. 面向对象。它包含了一些面向对象的技术,如继承和类。
  4. 支持大数据库,它不同于一般的桌面数据库,能够支持几乎不受限制大小的数据库,而且性能稳定。
  5. 方便集成web,提供一些接口方便 PHP,Perl等语言操作数据库。
  6. 事务处理。相对一些其他免费数据库如MySQL,他提供了事务处理,可以满足一些商业领域的数据需要。
  7. PostgreSQL运行速度明显低于MySQL.因为MySQL使用了线程,而PostgreSQL使用的是进程。在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多。

  3. Firebird

  Firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。 给中小型企业提供了一个很好的工具,一些需要小的数据库的软件!

  2000年7月,Borland(即现在的Inprise)公司公布了其数据库产品Interbase的源代码。Firebird数据库就是从该数据库中派生出来的。当时,Interbase是与客户/服务器版本的Delphi产品捆绑在一些销售的。现在,Interbase已经变成了一只开放源码中的“火鸟”。

  Firebird的技术特点:

  Firebird相对MySQL和PostgreSQL来说比较小,其RPM版本只有3.0MB.这也使其可以称得上是理想的“嵌入式数据库”,可用于与其它应用程序服务器和应用程序捆绑。Firebird具有大部分成熟数据库所具有的功能,比如支持存储过程、SQL兼容等。如果用户有使用DB2或PostgreSQL的经验,就会发现Firebird与它们的语法非常相似,数据类型和数据处理方式也很类似。 Firebird的设计思想是小型、快速和最小化的管理。这对于需要一个数据库用于存储数据,但又不想花太多时间来调整数据性能的开发人员很适用。实际上在很多情况下,我们并不需要存储程序或复杂的表之间的关联。这时会发现Firebird在大小和功能之间找到了一个理想的平衡点。

  现在有两个版本的Firebird服务器软件可供下载,分别是Firebird Super Server和Firebird Classic Server.简单来说,二者的区别在于设计的方法不同。Super Server使用线程同时为多个客户连接提供服务,而Classic Server使用的则是Interbase的方法,采用为每个连接提供一个独立服务器进程的方式。如果想对二者的区别有更多的了解,可查看http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_ss_vs_classic.对于“嵌入式数据库”的用户,这两个版本之间没有太大的区别。从理论上讲,如果应用程序的用户很多,那么Super Server将是一个较好的选择。

  4、Berkeley DB

  Berkeley DB 是一个高性能的,嵌入数据库编程库,和C语言,C++,Java,Perl,Python,PHP,Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统包括大多数Unix类操作系统和Windows操作系统以及实时操作系统。

  像MySQL这类基于C/S结构的关系型数据库系统虽然代表着目前数据库应用的主流,但却并不能满足所有应用场合的需要。有时我们需要的可能只是一个简单的基于磁盘文件的数据库系统。这样不仅可以避免安装庞大的数据库服务器,而且还可以简化数据库应用程序的设计。Berkeley DB正是基于这样的思想提出来的。

  Berkeley DB的技术特点:

  Berkeley DB是一个开放源代码的内嵌式数据库管理系统,能够为应用程序提供高性能的数据管理服务。应用它程序员只需要调用一些简单的API就可以完成对数据的访问和管理。与常用的数据库管理系统(如MySQL和Oracle等)有所不同,在Berkeley DB中并没有数据库服务器的概念。应用程序不需要事先同数据库服务建立起网络连接,而是通过内嵌在程序中的Berkeley DB函数库来完成对数据的保存、查询、修改和删除等操作。

  Berkeley DB为许多编程语言提供了实用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。所有同数据库相关的操作都由Berkeley DB函数库负责统一完成。这样无论是系统中的多个进程,或者是相同进程中的多个线程,都可以在同一时间调用访问数据库的函数。而底层的数据加锁、事务日志和存储管理等都在Berkeley DB函数库中实现。它们对应用程序来讲是完全透明的。俗话说:“麻雀虽小五脏俱全。”Berkeley DB函数库本身虽然只有300KB左右,但却能够用来管理多达256TB的数据,并且在许多方面的性能还能够同商业级的数据库系统相抗衡。就拿对数据的并发操作来说,Berkeley DB能够很轻松地应付几千个用户同时访问同一个数据库的情况。此外,如果想在资源受限的嵌入式系统上进行数据库管理,Berkeley DB可能就是惟一正确的选择了。

  Berkeley DB作为一种嵌入式数据库系统在许多方面有着独特的优势。首先,由于其应用程序和数据库管理系统运行在相同的进程空间当中,进行数据操作时可以避免繁琐的进程间通信,因此耗费在通信上的开销自然也就降低到了极低程度。其次,Berkeley DB使用简单的函数调用接口来完成所有的数据库操作,而不是在数据库系统中经常用到的SQL语言。这样就避免了对结构化查询语言进行解析和处理所需的开销。

  5、SQLite

  SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

  SQLite 是用 C 语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。SQLite 支持多数 SQL92 标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite 还非常健壮。其创建者保守地估计 SQLite 可以处理每天负担多达 100,00 次点击率的 Web 站点,并且 SQLite 有时候可以处理 10 倍于上述数字的负载。

  SQLite的技术特点:

  SQLite 对 SQL92 标准的支持包括索引、限制、触发和查看。SQLite 不支持外键限制,但支持原子的、一致的、独立和持久 (ACID) 的事务(后面会提供有关 ACID 的更多信息)。这意味着事务是原子的,因为它们要么完全执行,要么根本不执行。事务也是一致的,因为在不一致的状态中,该数据库从未被保留。事务还是独立的,所以,如果在同一时间在同一数据库上有两个执行操作的事务,那么这两个事务是互不干扰的。而且事务是持久性的,所以,该数据库能够在崩溃和断电时幸免于难,不会丢失数据或损坏。SQLite 通过数据库级上的独占性和共享锁定来实现独立事务处理。这意味着当多个进程和线程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写入操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。

  总结:目前的开源数据库还不能在功能和处理能力方面追上商业级产品,但价格的侵蚀力无法回避,开源数据库迅速增长的市场份额甚至让数据库领域的三巨头,Oracle、IBM、微软都感到忐忑不安。开源数据库的用户在增长,并正在被越来越多的用户所采用。在嵌入式数据库领域,开源数据库优势更加明显。分析师称开放源码正在迅速被数据库技术所采用。开放源码“从2000年被怀疑到2005年已经发展成为全球的主流技术”。低成本甚至免费的开源数据库时代即将来临。

  6、OceanBase

  OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图(view),研发团队把有限的资源集中到关键点上,当前 OceanBase主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入。

  OceanBase技术特点:

  淘宝Oceanbase设计之初对淘宝的在线存储需求进行分析发现:淘宝的数据总量比较大,未来一段时间,比如五年之内的数据规模为百TB级别,千亿条记录,另外,数据膨胀很快,传统的分库分表对业务造成很大的压力,必须设计自动化的分布式系统;然而,在线存储每天的修改量很小,大多数情况下单机的内存就能存放下。因此,我们采用将动态数据和静态数据分离的办法。

  动态数据的数据量小,采用集中式的方法解决,这样,状态数据维持从一个分布式的问题转化为单机的问题;静态数据的数据量大,采用分布式的方法解决,因为静态数据基本不变,实现时不需要复杂的线程同步机制,另外,保证静态数据的多个副本之间一致性是比较容易的,简化了子表的分裂和合并操作。

sssss
Tags: 开源数据库   OceanBase   PostgreSQL   MySQL  
责任编辑:190
编辑推荐排行