15款NOSQL数据库

一、MongoDB

介绍php

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案。当数据量达到50GB以上的时候,MongoDB的数据库访问速度是MySQL的10倍以上。MongoDB的并发读写效率不是特别出色,根据官方提供的性能测试代表,大约每秒能够处理0.5万~1.5万次读写请求。MongoDB还自带了一个出色的分布式文件系统GridFS,能够支持海量的数据存储。html

MongoDB也有一个Ruby的项目MongoMapper,是模仿Merb的DataMapper编写的MongoDB接口,使用起来很是简单,几乎和DataMapper如出一辙,功能很是强大。前端

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构很是松散,是相似json的bjson格式,所以能够存储比较复杂的数据类型。Mongo最大的特色是他支持的查询语言很是强大,其语法有点相似于面向对象的查询语言,几乎能够实现相似关系数据库单表查询的绝大部分功能,并且还支持对数据创建索引。java

所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每一个 集合在数据库中都有一个惟一的标识名,而且能够包含无限数目的文档。集合的概念相似关系型数据库(RDBMS)里的表(table),不一样的是它不须要定 义任何模式(schema)。
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,咱们不须要知道它的任何结构定义。若是须要的话,你彻底能够把不一样结构的文件存储在同一个数据库里。
存储在集合中的文档,被存储为键-值对的形式。键用于惟一标识一个文档,为字符串类型,而值则能够是各中复杂的文件类型。咱们称这种存储形式为BSON(Binary Serialized dOcument Format)。python

MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,由于MongoDB在32位模式运行时支持的最大文件尺寸为2GB。程序员

MongoDB把数据存储在文件中(默认路径为:/data/db),为提升效率使用内存映射文件进行管理。web

特性
redis

它的特色是高性能、易部署、易使用,存储数据很是方便。主要功能特性有:算法

  1. 面向集合存储,易存储对象类型的数据。
  2. 模式自由。
  3. 支持动态查询。   
  4. 支持彻底索引,包含内部对象。   
  5. 支持查询。   
  6. 支持复制和故障恢复。   
  7. 使用高效的二进制数据存储,包括大型对象(如视频等)。   
  8. 自动处理碎片,以支持云计算层次的扩展性。   
  9. 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。   
  10. 文件存储格式为BSON(一种JSON的扩展)。   
  11. 可经过网络访问。

官方网站
mongodb

http://www.mongodb.org/

二、CouchDB

介绍

Apache CouchDB 是一个面向文档的数据库管理系统。它提供以 JSON 做为数据格式的 REST 接口来对其进行操做,并能够经过视图来操纵文档的组织和呈现。 CouchDB 是 Apache 基金会的顶级开源项目。

CouchDB是用Erlang开发的面向文档的数据库系统,其数据存储方式相似Lucene的Index文件格式。CouchDB最大的意义在于它是一个面向Web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。

特性

主要功能特性有:

  1. CouchDB是分布式的数据库,他能够把存储系统分布到n台物理的节点上面,而且很好的协调和同步节点之间的数据读写一致性。这固然也得以于Erlang无与伦比的并发特性才能作到。对于基于web的大规模应用文档应用,然的分布式可让它没必要像传统的关系数据库那样分库拆表,在应用代码层进行大量的改动。
  2. CouchDB是面向文档的数据库,存储半结构化的数据,比较相似lucene的index结构,特别适合存储文档,所以很适合CMS,电话本,地址本等应用,在这些应用场合,文档数据库要比关系数据库更加方便,性能更好。  
  3. CouchDB支持REST API,可让用户使用JavaScript来操做CouchDB数据库,也能够用JavaScript编写查询语句,咱们能够想像一下,用AJAX技术结合CouchDB开发出来的CMS系统会是多么的简单和方便。其实CouchDB只是Erlang应用的冰山一角,在最近几年,基于Erlang的应用也获得的蓬勃的发展,特别是在基于web的大规模,分布式应用领域,几乎都是Erlang的优点项目。

官方网站

http://couchdb.apache.org/

三、Hbase

介绍

HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储同样,HBase在Hadoop之上提供了相似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不一样于通常的关系数据库,它是一个适合于非结构化数据存储的数据库.另外一个不一样的是HBase基于列的而不是基于行的模式。

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。   HBase是Google Bigtable的开源实现,相似Google Bigtable利用GFS做为其文件存储系统,HBase利用Hadoop HDFS做为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase一样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby做为协同服务,HBase利用Zookeeper做为对应。

HBase访问接口

  1. Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据
  2. HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用
  3. Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其余异构系统在线访问HBase表数据
  4. REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制
  5. Pig,可使用Pig Latin流式编程语言来操做HBase中的数据,和Hive相似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合作数据统计
  6. Hive,当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可使用相似SQL语言来访问HBase

特性

主要功能特性有:

支持数十亿行X上百万列

采用分布式架构 Map/reduce

对实时查询进行优化

高性能 Thrift网关

经过在server端扫描及过滤实现对查询操做预判

支持 XML, Protobuf, 和binary的HTTP

基于 Jruby( JIRB)的shell

对配置改变和较小的升级都会从新回滚

不会出现单点故障

堪比MySQL的随机访问性能

官方网站

http://hbase.apache.org/

四、cassandra

介绍

Cassandra是一个混合型的非关系的数据库,相似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构很是松散,是相似json的bjson格式,所以能够存储比较复杂的数据类型。)Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的彻底分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。不少方面均可以称之为Dynamo 2.0。

特性

和其余数据库比较,有几个突出特色:

模式灵活 :使用Cassandra,像文档存储,你没必要提早解决记录中的字段。你能够在系统运行时随意的添加或移除字段。这是一个惊人的效率提高,特别是在大型部 署上。
真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,能够指向另外一台电脑。你没必要重启任何进程,改变应用查询,或手动迁移任何数据。
多数据中心识别 :你能够调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的彻底复制。

一些使Cassandra提升竞争力的其余功能:

范围查询 :若是你不喜欢所有的键值查询,则能够设置键的范围来查询。
列表数据结构 :在混合模式能够将超级列添加到5维。对于每一个用户的索引,这是很是方便的。
分布式写操做 :有能够在任何地方任什么时候间集中读或写任何数据。而且不会有任何单点失败。

官方网站

http://cassandra.apache.org/

五、Hypertable

介绍

Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable类似的模型。在过去数年中,Google为在 PC集群 上运行的可伸缩计算基础设施设计建造了三个关键部分。第一个关键的基础设施是Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。它经过跨机器(和跨机架)的文件数据复制来达到高可用性,并所以免受传统 文件存储系统没法避免的许多失败的影响,好比电源、内存和网络端口等失败。第二个基础设施是名为Map-Reduce的计算框架,它与GFS紧密协做,帮 助处理收集到的海量数据。第三个基础设施是Bigtable,它是传统数据库的替代。Bigtable让你能够经过一些主键来组织海量数据,并实现高效的 查询。Hypertable是Bigtable的一个开源实现,而且根据咱们的想法进行了一些改进。

特性

主要功能特色:

负载均衡的处理

版本控制和一致性

可靠性

分布为多个节点

官方网站

http://hypertable.org/

六、Redis

介绍

redis是一个key-value存储系统。和Memcached相似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操做,并且这些操做都是原子性的。在此基础上,redis支持各类不一样方式的排序。与memcached同样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操做写入追加的记录文件,而且在此基础上实现了master-slave(主从)同步。

性能测试结果:

SET操做每秒钟 110000 次,GET操做每秒钟 81000 次,服务器配置以下:

Linux 2.6, Xeon X3320 2.5Ghz.

stackoverflow 网站使用 Redis 作为缓存服务器。

特色

主要功能特色:

安全性

主从复制

运行异常快

支持 sets(同时也支持 union/diff/inter)

支持列表(同时也支持队列;阻塞式 pop操做)

支持哈希表(带有多个域的对象)

支持排序 sets(高得分表,适用于范围查询)

Redis支持事务

支持将数据设置成过时数据(相似快速缓冲区设计)

Pub/Sub容许用户实现消息机制

官方网站

http://redis.io/

七、Tokyo Cabinet/Tokyo Tyant

介绍

Tokyo Cabinet(TC)和Tokyo Tyrant(TT)的开发者是日本人Mikio Hirabayashi,主要用于日本最大的SNS网站mixi.jp。TC出现的时间最先,如今已是一个很是成熟的项目,也是Key-Value数据库领域最大的热点,如今普遍应用于网站。TC是一个高性能的存储引擎,而TT提供了多线程高并发服务器,性能也很是出色,每秒能够处理4万~5万次读写操做。

TC除了支持Key-Value存储以外,还支持Hashtable数据类型,所以很像一个简单的数据库表,而且还支持基于Column的条件查询、分页查询和排序功能,基本上至关于支持单表的基础查询功能,因此能够简单地替代关系数据库的不少操做,这也是TC受到你们欢迎的主要缘由之一。有一个Ruby项目miyazakiresistance将TT的Hashtable的操做封装成和ActiveRecord同样的操做,用起来很是高效。

特性

TC/TT在Mixi的实际应用当中,存储了2000万条以上的数据,同时支撑了上万个并发链接,是一个久经考验的项目。TC在保证了极高的并发读写性能的同时,还具备可靠的数据持久化机制,同时还支持相似关系数据库表结构的Hashtable以及简单的条件、分页和排序操做,是一个很优越的NoSQL数据库。

TC的主要缺点是,在数据量达到上亿级别之后,并发写数据性能会大幅度降低,开发人员发如今TC里面插入1.6亿条2KB~20KB数据的时候,写入性能开始急剧降低。即当数据量达到上亿条的时候,TC性能便开始大幅度降低,从TC做者本身提供的Mixi数据来看,至少上千万条数据量的时候尚未遇到这么明显的写入性能瓶颈。

官方网站

http://fallabs.com/tokyocabinet/

八、Flare

介绍

TC是日本第一大SNS网站mixi.jp开发的,而Flare是日本第二大SNS网站green.jp开发的。简单地说,Flare就是给TC添加了scale(可扩展)功能。它替换了TT部分,本身另外给TC写了网络服务器。Flare的主要特色就是支持scale能力,它在网络服务端以前添加了一个Node Server,用来管理后端的多个服务器节点,所以能够动态添加数据库服务节点、删除服务器节点,也支持Failover。若是你的使用场景必须让TC能够scale,那么能够考虑Flare。

flare惟一的缺点就是他只支持memcached协议,所以当你使用flare的时候,就不能使用TC的table数据结构了,只能使用TC的key-value数据结构存储。

特性

没找到相关的介绍。

官方网站

http://flare.prefuse.org/

九、Berkeley DB

介绍

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

Berkeley DB最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的 ndbm,GNU项目的gdbm),Berkeley DB的第一个发行版在1991年出现,当时还包含了B+树数据访问算法。在1992年,BSD UNIX第4.4发行版中包含了Berkeley DB1.85版。基本上认为这是Berkeley DB的第一个正式版。在1996年中期,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。在这之后,Berkeley DB获得了普遍的应用,成为一款独树一帜的嵌入式数据库系统。2006年Sleepycat公司被Oracle 公司收购,Berkeley DB成为Oracle数据库家族的一员,Sleepycat原有开发者继续在Oracle开发Berkeley DB,Oracle继续原来的受权方式而且加大了对Berkeley DB的开发力度,继续提高了Berkeley DB在软件行业的声誉。Berkeley DB的当前最新发行版本是4.7.25。

特性

主要特色:

访问速度快

省硬盘空间

官方网站

http://www.oracle.com/us/products/database/overview/index.html?origref=http://www.oschina.net/p/berkeley+db

十、memcachedb

介绍

MemcacheDB是一个分布式、key-value形式的持久存储系统。它不是一个缓存组件,而是一个基于对象存取的、可靠的、快速的持久存储引擎。协议跟memcache一致(不完整),因此不少memcached客户端均可以跟它链接。MemcacheDB采用Berkeley DB做为持久存储组件,故不少Berkeley DB的特性的他都支持。

特性

MemcacheDB是一个分布式、key-value形式的持久存储系统。它不是一个缓存组件,而是一个基于对象存取的、可靠的、快速的持久存储引擎。 协议跟memcache一致(不完整),因此不少memcached客户端均可以跟它链接。MemcacheDB采用Berkeley DB做为持久存储组件,故不少Berkeley DB的特性的他都支持。   咱们是站在巨人的肩膀上的。MemcacheDB的前端缓存是Memcached   前端:memcached的网络层   后端:BerkeleyDB存储   

写速度:从本地服务器经过memcache客户端(libmemcache)set2亿条16字节长的key,10字节长的Value的记录,耗时 16572秒,平均速度12000条记录/秒。   

读速度:从本地服务器经过memcache客户端(libmemcache)get100万条16字节长的key,10字节长的Value的记录,耗 时103秒,平均速度10000条记录/秒。   ·支持的memcache命令

官方网站

http://memcachedb.org/

十一、Memlink

介绍

Memlink 是天涯社区开发的一个高性能、持久化、分布式的Key-list/queue数据引擎。正如名称中的memlink所示,全部数据都建构在内存中,保证了 系统的高性能 (大约是redis几倍),同时使用了redo-log技术保证数据的持久化。Memlink还支持主从复制、读写分离、List过滤操做等功能。

与Memcached不一样的是,它的value是一个list/queue。而且提供了诸如持久化,分布式的功能。听起来有点像Redis,但它号称比Redis更好,在不少Redis作得还很差的地方进行了改进和完善。提供的客户端开发包包括 c,python,php,java 四种语言。

特性

特色:

  • 内存数据引擎,性能极为高效
  • List块链结构,精简内存,优化查找效率
  • Node数据项可定义,支持多种过滤操做
  • 支持redo-log,数据持久化,非Cache模式
  • 分布式,主从同步

官方网站

http://code.google.com/p/memlink/

十二、db4o

介绍

“利用表格存储对象,就像是将汽车开回家,而后拆成零件放进车库里,早晨能够再把汽车装配起来。可是人们不由要问,这是否是泊车的最有效的方法呢。” – Esther Dyson   db4o 是一个开源的纯面向对象数据库引擎,对于 Java 与 .NET 开发者来讲都是一个简单易用的对象持久化工具,使用简单。同时,db4o 已经被第三方验证为具备优秀性能的面向对象数据库, 下面的基准测试图对 db4o 和一些传统的持久方案进行了比较。db4o 在此次比较中排名第二,仅仅落后于JDBC。经过图 1 的基准测试结果,值得咱们细细品味的是采用 Hibernate/HSQLDB 的方案和 JDBC/HSQLDB 的方案在性能方面有着显著差距,这也证明了业界对 Hibernate 的担心。而 db4o 的优异性能,让咱们相信: 更 OO 并不必定会牺牲性能。

同时,db4o 的一个特色就是无需 DBA 的管理,占用资源很小,这很适合嵌入式应用以及 Cache 应用, 因此自从 db4o 发布以来,迅速吸引了大批用户将 db4o 用于各类各样的嵌入式系统,包括流动软件、医疗设备和实时控制系统。   db4o 由来自加州硅谷的开源数据库公司 db4objects 开发并负责商业运营和支持。db4o 是基于 GPL 协议。db4objects 于 2004 年在 CEO Christof Wittig 的领导下组成,资金背景包括 Mark Leslie 、 Veritas 软件公司 CEO 、 Vinod Khosla ( Sun 公司创始人之一)、 Sun 公司 CEO 在内的硅谷高层投资人组成。毫无疑问,今天 db4objects 公司是硅谷煊赫一时的技术创新者之一。

特性

db4o 的目标是提供一个功能强大的,适合嵌入的数据库引擎,能够工做在设备,移动产品,桌面以及服务器等各类平台。主要特性以下:   开源模式。与其余 ODBMS 不一样,db4o 为开源软件,经过开源社区的力量驱动开发 db4o 产品。   原生数据库。db4o 是 100% 原生的面向对象数据库,直接使用编程语言来操做数据库。程序员无需进行 OR 映射来存储对象,大大节省了程序员在存储数据的开发时间。   高性能。 下图为 db4o 官方公布的基准测试数据,db4o 比采用 Hibernate/MySQL 方案在某些测试线路上速度高出 44 倍之多!而且安装简单,仅仅须要 400Kb 左右的 .jar 或 .dll 库文件。在接下来的系列文章中,咱们将只关注在 Java 平台的应用,可是实际上 db4o 毫无疑问会很好地在 .NET平台工做。

图:官方测试数据

易嵌入。使用 db4o 仅需引入 400 多 k 的 jar 文件或是 dll 文件,内存消耗极小。   零管理。使用 db4o 无需 DBA,实现零管理。   支持多种平台。db4o 支持从 Java 1.1 到 Java 5.0,此外还支持 .NET 、 CompactFramework 、 Mono 等 .NET 平台,也能够运行在 CDC 、 PersonalProfile 、 Symbian 、 Savaje 以及 Zaurus 这种支持反射的 J2ME 方言环境中,还能够运行在 CLDC 、 MIDP 、 RIM/Blackberry 、 Palm OS 这种不支持反射的 J2ME 环境中。   或许开发者会问,若是现有的应用环境已经有了关系型数据库怎么办?不要紧,db4o 的 dRS(db4o Replication System)可实现 db4o 与关系型数据库的双向同步(复制),如图 3 。 dRS 是基于 Hibernate 开发,目前的版本是 1.0 ,并运行在 Java 1.2 或更高版本平台上,基于 dRS 可实现 db4o 到 Hibernate/RDBMS 、 db4o 到 db4o 以及 Hibernate/RDBMS 到 Hibernate/RDBMS 的双向复制。dRS 模型如图

图:DRS模型

官方网站

http://www.db4o.com/china/

1三、Versant

介绍

Versant Object Database (V/OD) 提供强大的数据管理,面向 C++, Java or .NET 的对象模型,支持大并发和大规模数据集合。

Versant对象数据库是一个对象数据库管理系统(ODBMS:Object Database Management System)。它主要被用在复杂的、分布式的和异构的环境中,用来减小开发量和提升性能。尤为当程序是使用Java和(或)C++语言编写的时候,尤为有用。

它是一个完整的,电子基础设施软件,简化了事务的构建和部署的分布式应用程序。

做为一个卓越的数据库产品,Versant ODBMS在设计时的目标就是为了知足客户在异类处理平台和企业级信息系统中对于高性能、可量测性、可靠性和兼容性方面的需求。

Versant对象数据库已经在为企业业务应用提供可靠性、完整性和高性能方面得到了建树,Versant ODBMS所表现出的高效的多线程架构、internal parallelism 、平稳的Client-Server结构和高效的查询优化,都体现了其很是卓越的性能和可扩展性。

Versant对象数据库包括Versant ODBMS,C++和Java语言接口,XML工具包和异步复制框架。

特性

1、强有力的优点

Versant Object Database8.0,适用于应用环境中包含复杂对象模型的数据库,其设计目标是可以处理这些应用常常须要的导航式访问,无缝的数据分发,和企业级的规模。

对于不少应用程序而言,最具挑战性的方面是控制业务模型自己的内在复杂性。 电信基础设施,交通运输网络,仿真,金融工具以及其它领域的复杂性必须获得支持, 并且这种支持复杂性的方式还要可以随着环境和需求变化而不断地改进应用程序。 这些应用程序的重点是领域和这些领域的逻辑。 复杂的设计应当以对象模型为基础。将技术需求例如持久性(和SQL)与领域模型混合在一块儿的架构会带来灾难性的后果。

Versant对象数据库使您可使用那些只含有域行为信息的对象,而不用考虑持久性。同时,Versant对象数据库还能提供跨多个数据库的无缝的数据分发,高并发性,细粒度锁,顶级性能, 以及经过复制和其它技术提供的高可用性。现代Java中的对象关系映射工具已经简化了不少映射的问题, 可是它们还不能提供Versant所能提供的无缝数据分发的功能和高性能。

2、主要特性

C++、Java及.NET 的透明对象持久

支持对象持久标准,如JDO

跨多数据库的无缝数据分发

企业级的高可用性选项

动态模式更新

管理工做量少(或不须要)

端到端的对象支持架构

细粒度并发控制

多线程,多会话

支持国际字符集

高速数据采集

3、优点

对象层次结构的快速存储、检索和浏览

性能高于关系型数据库10 倍以上

减小开发时间

4、8.0的新特性

加强的多核线性扩展能力

加强的数据库管理工具(监控、数据库检查、数据重组)

支持基于LINQ的.NET绑定机制

支持.NET和JDO应用的FTS基于“Black Box”工具的数据库活动记录与分析

5、Versant对象数据库特性

动态模式更新

Versant支持缓慢模式更新,这意味着当被使用时,对象才会从旧的模式转为新的模式,就不须要映射了。全部这些都支持数据库模式的更新与敏捷开发。

跨多数据库的无缝数据分发

客户端与一个或多个数据库进行无缝交互。单个的数据库无缝地联合在一块儿,使您可以给数据分区,提升读写能力,增大整体的数据库的大小。这些数据库上的数据分发是透明的。它们被结合在一块儿造成一个

无缝的数据库,提供巨大的可扩展性。

并发控制

对象级锁确保只有在两个应用程序试图更新同一对象时才会有冲突的发生,这与基于页的锁机制不一样。基于页的锁机制可能会致使并发热点的假象。

透明的C++对象持久性

C++对象,STL类,标准C++集合如字典,映射,映射的映射,诸如此类,以原样保存在数据库中。状态变化在后台被自动追踪。当相关的事务提交后,全部的变化将会被自动发送到数据库。所以就能造成一种很是天然的,低干扰的编程风格,这样,就能实现应用程序的快速开发,同时当需求发生变化时,应用程序就可以灵活地修改。

透明的Java对象持久性

V/OD的JVI & JDO 2.0 API 提供了透明的简单对象(POJO)的持久性,包括 Java 2 持久类,接口,以及任何用户定义的类。状态变化

在后台被自动追踪。事务提交后,自动把全部变化写入数据库。所以,对于托管和非托管部署,您都能得到轻量级的编程风格。

可彻底嵌入Versant 能够被嵌入到应用程序中,数据库规模能够达到TB 级别。

而且能够自主运行,不须要任何管理。

6、企业级的特性

对象端到端

对象端到端意味着你的应用对象存在于客户端,网络上,以及数据库中。与关系型数据库不一样的是,对象在内存中和数据库中的表示之间不须要任何映射或转换。

应用的客户端缓存透明地缓存对象以提升速度。数据库支持对象,它能执行查询,创建索引,使应用可以平衡它和数据库间的进程执行。XA的支持使与其它事务数据源协调成为可能。

7、V/OD 8数据库体系架构

高可用性

经过在线进行数据库管理实现数据库的高可用性。

容错服务器

容错服务器选项能够在Versant数据库的硬件或是软件出现故障的时候,自动进行失效转移和数据恢复。容错服务器使用的是在两个数据库实例之间进行同步复制,一旦出现故障,容错服务器也会支持透明重同步。

异步数据复制

异步数据复制选项支持多个对象服务器之间的主从异步复制和点对点异步复制。可使用异步数据复制将数据复制到一个分布式恢复站点或者将数据在多个本地的对象数据库之间进行复制,以提升性能和可靠性。

高可用性备份

高可用性数据备份选项使Versant可使用EMC Symmetrix或其它企业级存储系统的磁盘镜像的特性,来对很大的数据卷进行在线备份,同时又不会影响到可用性。

在线再组织

Versant 数据库再组织选项为了会删除大量对象的应用而设计的。它使用户可以收回数据库中未使用的空间,同时使数据库保持正常运做,增长可用空间,改善数据库的性能。

8、为何要使用Versant面向对象数据库?

经过缩短研发时间来加速上市

对象关系映射代码可能占用了你的应用的40%或更多。有了Versant面向对象数据库,映射代码就再也不须要了。

极大地提升了性能和数据吞吐能力

当应用中涉及到复杂的内存对象模式,尤为是关联访问时,对象数据库要比映射到关系数据库表现得更好。例如,当应用程序须要从对象数据库里检索一个对象时,只要执行单条查询便可找到该对象。当映射到一个关系数据库时,若是对象包含多对多关联,那么就必须经过一个或多个链接才能检索到关联表中的数据。使用了对象数据库,对于通常复杂性的对象的检索,速度则提升了三倍,对于复杂性很高的对象的检索,例如多对多关联,搜索的速度则提升了三十倍。而对于集合的集合和递归联系,检索的速度有可能提升五十倍。

根据需求的变化,快速改进应用

今天,商业进程、结构和应用要求的变化的速度使得适应变化的能力变得极为重要。对象关系映射和其它适用于刚性存储结构的方法,让变化变得困难。而Versant对象数据库极大的提高了你的应用知足当前和将来的商业需求的能力。

投资回报率

当用户遇到了复杂的对象模型和大的数据集,对象数据库就是首选的解决方案。对象数据库主要的优势在于,它可以缩小代码的规模,下降研发成本,缩短上市的时间,减小或根本没有管理的要求以及下降购置硬件和服务器软件许可证的成本。性能上的优点还能够大大下降高负载动做应用所消耗的成本。大型的关系数据库成本高很是昂贵,还须要昂贵的硬件支持

官方网站

http://www.versant.com/index.aspx

1四、Neo4j

介绍

Neo4j是一个嵌入式,基于磁盘的,支持完整事务的Java持久化引擎,它在图像中而不是表中存储数据。Neo4j提供了大规模可扩展性,在一台机器上能够处理数十亿节点/关系/属性的图像,能够扩展到多台机器并行运行。相对于关系数据库来讲,图形数据库善于处理大量复杂、互链接、低结构化的数据,这些数据变化迅速,须要频繁的查询——在关系数据库中,这些查询会致使大量的表链接,所以会产生性能上的问题。Neo4j重点解决了拥有大量链接的传统RDBMS在查询时出现的性能衰退问题。经过围绕图形进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图形的数据量没有任何关系。此外,Neo4j还提供了很是快的图形算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是没法实现的。

Neo是一个网络——面向网络的数据库——也就是说,它是一个嵌入式的、基于磁盘的、具有彻底的事务特性的Java持久化引擎,可是它将结构化数据存储在网络上而不是表中。网络(从数学角度叫作图)是一个灵活的数据结构,能够应用更加敏捷和快速的开发模式。

你能够把Neo看做是一个高性能的图引擎,该引擎具备成熟和健壮的数据库的全部特性。程序员工做在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——可是他们能够享受到具有彻底的事务特性、企业级的数据库的全部好处。

因为使用了“面向网络的数据库”,人们对Neo充满了好奇。在该模型中,以“节点空间”来表达领域数据——相对于传统的模型表、行和列来讲,节点空间是不少节点、关系和属性(键值对)构成的网络。关系是第一级对象,能够由属性来注解,而属性则代表了节点交互的上下文。网络模型完美的匹配了本质上就是继承关系的问题域,例如语义Web应用。Neo的建立者发现继承和结构化数据并不适合传统的关系数据库模型:

  1.对象关系的不匹配使得把面向对象的“圆的对象”挤到面向关系的“方的表”中是那么的困难和费劲,而这一切是能够避免的。

  2.关系模型静态、刚性、不灵活的本质使得改变schemas以知足不断变化的业务需求是很是困难的。因为一样的缘由,当开发小组想应用敏捷软件开发时,数据库常常拖后腿。

  3.关系模型很不适合表达半结构化的数据——而业界的分析家和研究者都认为半结构化数据是信息管理中的下一个重头戏。

  4.网络是一种很是高效的数据存储结构。人脑是一个巨大的网络,万维网也一样构形成网状,这些都不是巧合。关系模型能够表达面向网络的数据,可是在遍历网络并抽取信息的能力上关系模型是很是弱的。

虽然Neo是一个比较新的开源项目,但它已经在具备1亿多个节点、关系和属性的产品中获得了应用,而且能知足企业的健壮性和性能的需求:

彻底支持JTA和JTS、2PC分布式ACID事务、可配置的隔离级别和大规模、可测试的事务恢复。这些不只仅是口头上的承诺:Neo已经应用在高请求的24/7环境下超过3年了。它是成熟、健壮的,彻底达到了部署的门槛。

特性

Neo4j是一个用Java实现、彻底兼容ACID的图形数据库。数据以一种针对图形网络进行过优化的格式保存在磁盘上。Neo4j的内核是一种极快的图形引擎,具备数据库产品指望的全部特性,如恢复、两阶段提交、符合XA等。

Neo4j既可做为无需任何管理开销的内嵌数据库使用;也能够做为单独的服务器使用,在这种使用场景下,它提供了普遍使用的REST接口,可以方便地集成到基于PHP、.NET和JavaScript的环境里。但本文的重点主要在于讨论Neo4j的直接使用。

Neo4j的典型数据特征:

•数据结构不是必须的,甚至能够彻底没有,这能够简化模式变动和延迟数据迁移。

•能够方便建模常见的复杂领域数据集,如CMS里的访问控制可被建模成细粒度的访问控制表,类对象数据库的用例、TripleStores以及其余例子。

•典型使用的领域如语义网和RDF、LinkedData、GIS、基因分析、社交网络数据建模、深度推荐算法以及其余领域。

围绕内核,Neo4j提供了一组可选的组件。其中有支持经过元模型构造图形结构、SAIL - 一种SparQL兼容的RDF TripleStore实现或一组公共图形算法的实现。

高性能?

要给出确切的性能基准数据很难,由于它们跟底层的硬件、使用的数据集和其余因素关联很大。自适应规模的Neo4j无需任何额外的工做即可以处理包含数十亿节点、关系和属性的图。它的读性能能够很轻松地实现每毫秒(大约每秒1-2百万遍历步骤)遍历2000关系,这彻底是事务性的,每一个线程都有热缓存。使用最短路径计算,Neo4j在处理包含数千个节点的小型图时,甚至比MySQL快1000倍,随着图规模的增长,差距也愈来愈大。

这其中的缘由在于,在Neo4j里,图遍历执行的速度是常数,跟图的规模大小无关。不象在RDBMS里常见的联结操做那样,这里不涉及下降性能的集合操做。Neo4j以一种延迟风格遍历图 - 节点和关系只有在结果迭代器须要访问它们的时候才会被遍历并返回,对于大规模深度遍历而言,这极大地提升了性能。

写速度跟文件系统的查找时间和硬件有很大关系。Ext3文件系统和SSD磁盘是不错的组合,这会致使每秒大约100,000写事务操做。

官方网站

http://neo4j.org/

1五、BaseX

介绍

BaseX 是一个XML数据库,用来存储紧缩的XML数据,提供了高效的 XPath 和 XQuery 的实现,还包括一个前端操做界面。

特性

BaseX一个比较显著地优势是有了GUI,界面中有查询窗口,可采用XQuery查询相关数据库中的XML文件;也有可以动态展现xml文件层次和节点关系的图。但我感受也就这点好处了,编程时和GUI无关了。

和Xindice相比,BaseX更能支持大型XML文档的存储,而Xindice对大型xml没有很好的支持,为管理中小型文档的集合而设计。

BaseX 是一个XML数据库,用来存储紧缩的XML数据,提供了高效的 XPath 和 XQuery 的实现,还包括一个前端操做界面。

官方网站

http://basex.org/

本文转载于网络
相关文章
相关标签/搜索