随着因特网web2.0该网站的兴起。非关系型数据库,如今已经成为一个很是受欢迎的新领域。非关系数据库产品的发展很是迅速。而在处理传统的关系数据库web2.0现场。特别是大规模,高并发SNS类型web2.0纯动态网站已经显得力不从心。暴露了很是多难以克服的问题。如:对数据库高并发读写的需求、对海量数据的高效率存储和訪问的需求、对数据库的高可扩展性和高可用性的需求等等,如下我就跟你们几种常见的nosql数据库。
php
一、MongoDBhtml
介绍
MongoDB是一个基于分布式文件存储的数据库。前端
由C++语言编写。java
主要解决的是海量数据的訪问效率问题。为WEB应用提供可扩展的高性能数据存储解决方式。当数据量达到50GB以上的时候,MongoDB的数据库訪问速度是MySQL的10倍以上。python
MongoDB的并发读写效率不是特别出色,依据官方提供的性能測试代表。大约每秒可以处理0.5万~1.5万次读写请求。MongoDB还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储。
MongoDB也有一个Ruby的项目MongoMapper,是模仿Merb的DataMapper编写的MongoDB接口,使用起来很easy,差点儿和DataMapper如出一辙。功能很强大。
MongoDB是一个介于关系数据库和非关系数据库之间的产品。是非关系数据库其中功能最丰富。最像关系数据库的。他支持的数据结构很松散,是相似json的bjson格式。所以可以存储比較复杂的数据类型。web
Mongo最大的特色是他支持的查询语言很强大,其语法有点相似于面向对象的查询语言。差点儿可以实现相似关系数据库单表查询的绝大部分功能,而且还支持对数据创建索引。redis
所谓“面向集合”(Collenction-Orented)。意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。算法
每个 集合在数据库中都有一个惟一的标识名,并且可以包括无限数目的文档。集合的概念相似关系型数据库(RDBMS)里的表(table),不一样的是它不需要定 义不论什么模式(schema)。
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件。咱们不需要知道它的不论什么结构定义。假设需要的话。你全然可以把不一样结构的文件存储在同一个数据库里。sql
存储在集合中的文档,被存储为键-值对的形式。mongodb
键用于惟一标识一个文档。为字符串类型。而值则可以是各中复杂的文件类型。咱们称这样的存储形式为BSON(Binary Serialized dOcument Format)。
MongoDB服务端可执行在Linux、Windows或OS X平台。支持32位和64位应用。默认port为27017。推荐执行在64位平台,因为MongoDB在32位模式执行时支持的最大文件尺寸为2GB。
MongoDB把数据存储在文件里(默认路径为:/data/db),为提升效率使用内存映射文件进行管理。
特性
它的特色是高性能、易部署、易使用,存储数据很方便。
主要功能特性有:
面向集合存储,易存储对象类型的数据。
模式自由。
支持动态查询。
支持全然索引。包括内部对象。
支持查询。
支持复制和故障恢复。
使用高效的二进制数据存储,包含大型对象(如视频等)。
本身主动处理碎片。以支持云计算层次的扩展性。
支持RUBY,PYTHON。JAVA。C++。PHP,C#等多种语言。
文件存储格式为BSON(一种JSON的扩展)。
可经过网络訪问。
官方站点
http://www.mongodb.org/
二、CouchDB
介绍
Apache CouchDB 是一个面向文档的数据库管理系统。它提供以 JSON 做为数据格式的 REST 接口来对其进行操做,并可以经过视图来操纵文档的组织和呈现。
CouchDB 是 Apache 基金会的顶级开源项目。
CouchDB是用Erlang开发的面向文档的数据库系统。其数据存储方式相似Lucene的Index文件格式。CouchDB最大的意义在于它是一个面向Web应用的新一代存储系统,其实。CouchDB的口号就是:下一代的Web应用存储系统。
特性
主要功能特性有:
CouchDB是分布式的数据库,他可以把存储系统分布到n台物理的节点上面,并且很是好的协调和同步节点之间的数据读写一致性。这固然也得以于Erlang无与伦比的并发特性才干作到。对于基于web的大规模应用文档应用,然的分布式可以让它没必要像传统的关系数据库那样分库拆表。在应用代码层进行大量的修改。
CouchDB是面向文档的数据库,存储半结构化的数据,比較相似lucene的index结构,特别适合存储文档,所以很是适合CMS,电话本。地址本等应用,在这些应用场合,文档数据库要比关系数据库更加方便。性能更好。
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訪问接口
Native Java API,最常规和高效的訪问方式,适合Hadoop MapReduce Job并行批处理HBase表数据
HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用
Thrift Gateway。利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其它异构系统在线訪问HBase表数据
REST Gateway。支持REST 风格的Http API訪问HBase, 解除了语言限制
Pig,可以使用Pig Latin流式编程语言来操做HBase中的数据,和Hive相似,本质终于也是编译成MapReduce Job来处理HBase表数据,适合作数据统计
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)。这是一个高可用的文件系统,提供了一个全局的命名空间。它经过跨机器(和跨机架)的文件数据复制来达到高可用性。并所以免受传统 文件存储系统没法避免的不少失败的影响。比方电源、内存和网络port等失败。第二个基础设施是名为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 次,server配置例如如下:
Linux 2.6, Xeon X3320 2.5Ghz.
stackoverflow 站点使用 Redis 作为缓存server。
特色
主要功能特色:
安全性
主从复制
执行异常快
支持 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提供了多线程高并发server,性能也很出色,每秒可以处理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写了网络server。Flare的主要特色就是支持scale能力,它在网络服务端以前加入了一个Node Server。用来管理后端的多个server节点,所以可以动态加入数据库服务节点、删除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一致(不完整),因此很是多memcachedclient都可以跟它链接。MemcacheDB採用Berkeley DB做为持久存储组件,故很是多Berkeley DB的特性的他都支持。
特性
MemcacheDB是一个分布式、key-value形式的持久存储系统。它不是一个缓存组件。而是一个基于对象存取的、可靠的、高速的持久存储引擎。 协议跟memcache一致(不完整),因此很是多memcachedclient都可以跟它链接。
MemcacheDB採用Berkeley DB做为持久存储组件。故很是多Berkeley DB的特性的他都支持。 咱们是站在巨人的肩膀上的。
MemcacheDB的前端缓存是Memcached 前端:memcached的网络层 后端:BerkeleyDB存储
写速度:从本地server经过memcacheclient(libmemcache)set2亿条16字节长的key,10字节长的Value的记录。耗时 16572秒,平均速度12000条记录/秒。
读速度:从本地server经过memcacheclient(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作得还很差的地方进行了改进和无缺。提供的client开发包包含 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 的目标是提供一个功能强大的,适合嵌入的数据库引擎。可以工做在设备,移动产品,桌面以及server等各类平台。
主要特性例如如下: 开源模式。与其它 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 的双向复制。
官方站点
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支持缓慢模式更新,这意味着当被使用时,对象才会从旧的模式转为新的模式,就不需要映射了。所有这些都支持数据库模式的更新与敏捷开发。
跨多数据库的无缝数据分发
client与一个或多个数据库进行无缝交互。单个的数据库无缝地联合在一块儿,使您能够给数据分区,提升读写能力,增大总体的数据库的大小。这些数据库上的数据分发是透明的。
它们被结合在一块儿造成一个
无缝的数据库,提供巨大的可扩展性。
并发控制
对象级锁确保仅仅有在两个应用程序试图更新同一对象时才会有冲突的发生,这与基于页的锁机制不一样。基于页的锁机制可能会致使并发热点的假象。
透明的C++对象持久性
C++对象。STL类,标准C++集合如字典,映射,映射的映射。诸如此类。以原样保存在数据库中。状态变化在后台被本身主动追踪。
当相关的事务提交后,所有的变化将会被本身主动发送到数据库。所以就能造成一种很天然的,低干扰的编程风格,这样,就能实现应用程序的高速开发,同一时候当需求发生变化时。应用程序就行灵活地改动。
透明的Java对象持久性
V/OD的JVI & JDO 2.0 API 提供了透明的简单对象(POJO)的持久性,包含 Java 2 持久类,接口,以及不论什么用户定义的类。状态变化
在后台被本身主动追踪。
事务提交后。本身主动把所有变化写入数据库。
所以,对于托管和非托管部署,您都能得到轻量级的编程风格。
可全然嵌入Versant 可以被嵌入到应用程序中,数据库规模可以达到TB 级别。
并且可以自主执行,不需要不论什么管理。
6、企业级的特性
对象端到端
对象端到端意味着你的应用对象存在于client,网络上,以及数据库中。与关系型数据库不一样的是,对象在内存中和数据库中的表示之间不需要不论什么映射或转换。
应用的client缓存透明地缓存对象以提快速度。
数据库支持对象。它能运行查询,创建索引,使应用能够平衡它和数据库间的进程运行。XA的支持使与其余事务数据源协调成为可能。
7、V/OD 8数据库体系架构
高可用性
经过在线进行数据库管理实现数据库的高可用性。
容错server
容错server选项可以在Versant数据库的硬件或是软件出现问题的时候,本身主动进行失效转移和数据恢复。容错server使用的是在两个数据库实例之间进行同步复制。一旦出现问题,容错server也会支持透明重同步。
异步数据复制
异步数据复制选项支持多个对象server之间的主从异步复制和点对点异步复制。可以使用异步数据复制将数据拷贝到一个分布式恢复网站或者将数据在多个本地的对象数据库之间进行复制,以提升性能和可靠性。
高可用性备份
高可用性数据备份选项使Versant可以使用EMC Symmetrix或其余企业级存储系统的磁盘镜像的特性,来对很是大的数据卷进行在线备份,同一时候又不会影响到可用性。
在线再组织
Versant 数据库再组织选项为了会删除大量对象的应用而设计的。
它使用户能够收回数据库中未使用的空间,同一时候使数据库保持正常运做。添加可用空间,改善数据库的性能。
8、为何要使用Versant面向对象数据库?
经过缩短研发时间来加速上市
对象关系映射代码可能占用了你的应用的40%或不少其它。有了Versant面向对象数据库。映射代码就再也不需要了。
极大地提升了性能和数据吞吐能力
当应用中涉及到复杂的内存对象模式。尤为是关联訪问时。对象数据库要比映射到关系数据库表现得更好。好比,当应用程序需要从对象数据库里检索一个对象时,仅仅要运行单条查询就能够找到该对象。当映射到一个关系数据库时。假设对象包括多对多关联。那么就必须经过一个或多个链接才干检索到关联表中的数据。使用了对象数据库。对于通常复杂性的对象的检索。速度则提升了三倍。对于复杂性很是高的对象的检索。好比多对多关联,搜索的速度则提升了三十倍。而对于集合的集合和递归联系。检索的速度有可能提升五十倍。
依据需求的变化,高速改进应用
今天。商业进程、结构和应用要求的变化的速度使得适应变化的能力变得极为重要。对象关系映射和其余适用于刚性存储结构的方法,让变化变得困难。而Versant对象数据库极大的提高了你的应用知足当前和将来的商业需求的能力。
投资回报率
当用户遇到了复杂的对象模型和大的数据集,对象数据库就是首选的解决方式。对象数据库基本的长处在于,它能够缩小代码的规模,减小研发成本,缩短上市的时间,减小或根本没有管理的要求以及减小购置硬件和server软件许可证的成本。
性能上的优点还能够大大减小高负载动做应用所消耗的成本。
大型的关系数据库成本高很昂贵。还需要昂贵的硬件支持
官方站点
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既可做为无需不论什么管理开销的内嵌数据库使用。也能够做为单独的server使用,在这样的使用场景下,它提供了普遍使用的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/