开源数据库系统对比

来源:互联网 发布:淘宝网店数量 编辑:程序博客网 时间:2024/06/10 04:58

开源数据库系统对比
**************************************************************
Derby
http://db.apache.org/derby/
    【JDK6自带数据库,IBM捐给apache】
    Derby可以工作在【嵌入式】模式下,或在完全的【客户端/服务器模式】下
    100% Java实现
 100% Java类型4 JDBC驱动
 SQL92E标准支持大部分SQL 99特性
 ACID完全的事务独立的事务支持
 J2EE支持JNDI,连接池和XA
 视图,临时表和保存
 BLOB和CLOB数据类型
 行和表锁定
 有价值的基本查询优化
 服务器端指示约束
 触发器和存储过程
 为服务器端函数,触发器或存储过程等操作在数据库里存储Java代码
 能排除CD-ROM里的只读数据库
 数据的导入和导出
 快速数据库加密选项

**************************************************************
H2
http://www.h2database.com
   【性能最好的100% Java实现数据库】
   最好性能和最强有力的数据库H2
 (1)性能、小巧

(2)同时支持【网络版】和【嵌入式版本】,另外还提供了内存版

(3)有比较好的兼容性,支持相当【标准的sql标准】(实际上也不存在一个数据库能够100%符合标准)

(4)【提供了非常友好的基于web的数据库管理界面】

(5)支持hibernate
**************************************************************
SqlLite 【SharpPlus Sqlite Developer】

    1. ACID事务
  2. 零配置 – 无需安装和管理配置
  3. 储存在单一磁盘文件中的一个完整的数据库
  4. 数据库文件可以在不同字节顺序的机器间自由的共享
  5. 支持数据库大小至2TB
  6. 足够小, 大致3万行C代码, 250K
  7. 比一些流行的数据库在大部分普通数据库操作要快
  8. 简单, 轻松的API
  9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
  10. 良好注释的源代码, 并且有着90%以上的测试覆盖率
  11. 独立: 没有额外依赖
  12. 【Source完全的Open, 你可以用于任何用途, 包括出售它】
  13. 支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python


支持事件
不需要配置,不需要安装,也不需要管理员
【支持大部分SQL92】
一个完整的数据库保存在磁盘上面一个文件
同一个数据库文件可以在不同机器上面使用
【最大支持数据库到2T】
字符和BLOB的支持仅限制于可用内存
整个系统少于3万行代码,少于250KB的内存占用(gcc)
【大部分应用比目前常见的 客户端/服务端 的数据库快】
没有其它依赖
源代码开放, 代码95%有较好的注释
简单易用的API. 官方带有TCL的编译版本。其它的单独提供

【php 从 5.x 开始默认内置编译了SQLite】

    SQLite的SQL从很大程度上实现了ANSI SQL92标准. 特别的SQLite支持视图, 触发器, 事务, 支持嵌套SQL. 这些都会在下面应用的过程中讲到, 故这边先暂时放下, 而主要说说SQLite所不支持的一些SQL.

1.         不支持Exists, 虽然支持in(in是Exists的一种情况)

2.         不支持多数据库, 如: create table db1.table1 as select * from db2.table1;

3.         不支持存储过程

4.         不支持Alter View/Trigger/Table

5.         不支持Truncate, 在SQLite中Delete不带Where字句时和Truncate的效果是一样的.

6.         不支持Floor和Ceiling函数, 还有其他蛮多的函数

7.         没有Auto Increment(自增)字段, 但是SQLite其实是支持Auto Increment的, 即在将该字段设置为” INTEGER PRIMARY KEY”的时候.

8.         不支持If Exists

SQLite提供了对Transaction的支持。应用Transaction即保证了数据的完整性,也会提高运行速度,因为多条语句一起提交给数据库的速度会比一条一条的提交方式更快。

对二进制数据,SQLite不能直接保存。但可以先将二进制的数据转换成ASCII编码,然后再保存。Base64编码机制是最常见的把二进制数据转换成ASCII编码的手段。在SQLite的C语言代码encode.c中提供了Base64编码的功能。对Java而言,在参考链接六中提供的Apache的XML RPC项目中可以找到一个Base64编码的例子。


**************************************************************

 HSQLDB   
        【集成于OpenOffice.org 2.0】
        Hsqldb是一个开放源代码的JAVA数据库,
 其具有标准的SQL语法和JAVA接口,
        具有Server模式,进程内模式(In-Process)和内存模式(Memory-Only)三种。
   HSQLDB具有以下特点:

   是一个开放源代码的JAVA数据库

   具有标准的SQL语法和JAVA接口

   HSQLDB可以自由使用和分发

   非常简洁和快速的

   【具有内存数据库,独立数据库和C/S数据库三种方式】

   【可是在APPLET中使用】

   更多的细节:

   索引可以被创建和自动使用

   支持事务处理

   允许表关联

   完整性引用和约束

   【支持JAVA存储过程和函数】

   数据库可以生成SQL脚本

   使用用户名,密码,访问权限等安全机制
 
**************************************************************

oracle Berkeley DB
   它是一个经典的C-library模式的toolkit,
   【嵌入式(Embedded)】
   Berkeley DB为许多编程语言提供了实用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。
   能够用来管理多达256TB的数据,并且在许多方面的性能还能够同商业级的数据库系统相抗衡
   限制  总容量256TB,单条容量4GB;对网络支持能力不佳。

BDB数据库不同与其他几种数据库–关系型(Relational databases),面向对象型(Object-oriented databases),网络数据库(Network databases),它是一种嵌入式(embeded databases)数据库。

下面先简要说说BDB与其它几种数据库的区别:
(1)它们几乎都无一例外的采用了结构化查询语言(SQL),而BDB没有。
(2)它们几乎都无一例外的采用了客户/服务器模型,而BDB采用的是嵌入式模型。
Berkeley DB虽然是开源的产品,但对某些条件下的商业性应用,却不是免费的,而且价格颇为昂贵。

 

原创粉丝点击