15一个NoSql数据库

随着因特网web2.0该网站的兴起。非关系型数据库,现在已经成为一个非常受欢迎的新领域。非关系数据库产品的发展非常迅速。而在处理传统的关系数据库web2.0现场。特别是大规模,高并发SNS类型web2.0纯动态网站已经显得力不从心。暴露了非常多难以克服的问题。如:对数据库高并发读写的需求、对海量数据的高效率存储和訪问的需求、对数据库的高可扩展性和高可用性的需求等等,以下我就跟大家几种常见的nosql数据库。

1、MongoDB

介绍

MongoDB是一个基于分布式文件存储的数据库。

由C++语言编写。

主要解决的是海量数据的訪问效率问题。为WEB应用提供可扩展的高性能数据存储解决方式。当数据量达到50GB以上的时候,MongoDB的数据库訪问速度是MySQL的10倍以上。

MongoDB的并发读写效率不是特别出色,依据官方提供的性能測试表明。大约每秒能够处理0.5万~1.5万次读写请求。MongoDB还自带了一个出色的分布式文件系统GridFS,能够支持海量的数据存储。

MongoDB也有一个Ruby的项目MongoMapper,是模仿Merb的DataMapper编写的MongoDB接口,使用起来很easy,差点儿和DataMapper一模一样。功能很强大。

MongoDB是一个介于关系数据库和非关系数据库之间的产品。是非关系数据库其中功能最丰富。最像关系数据库的。他支持的数据结构很松散,是类似json的bjson格式。因此能够存储比較复杂的数据类型。

Mongo最大的特点是他支持的查询语言很强大,其语法有点类似于面向对象的查询语言。差点儿能够实现类似关系数据库单表查询的绝大部分功能,并且还支持对数据建立索引。

所谓“面向集合”(Collenction-Orented)。意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。

每一个 集合在数据库中都有一个唯一的标识名,而且能够包括无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不须要定 义不论什么模式(schema)。

模式自由(schema-free),意味着对于存储在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/

2、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/

3、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/

4、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/

5、Hypertable

介绍

Hypertable是一个开源、高性能、可伸缩的数据库。它採用与Google的Bigtable相似的模型。在过去数年中,Google为在 PC集群 上执行的可伸缩计算基础设施设计建造了三个关键部分。

第一个关键的基础设施是Google File System(GFS)。这是一个高可用的文件系统,提供了一个全局的命名空间。它通过跨机器(和跨机架)的文件数据复制来达到高可用性。并因此免受传统 文件存储系统无法避免的很多失败的影响。比方电源、内存和网络port等失败。第二个基础设施是名为Map-Reduce的计算框架,它与GFS紧密协作。帮
助处理收集到的海量数据。

第三个基础设施是Bigtable,它是传统数据库的替代。Bigtable让你能够通过一些主键来组织海量数据,并实现高效的 查询。

Hypertable是Bigtable的一个开源实现,而且依据我们的想法进行了一些改进。

特性

主要功能特点:

负载均衡的处理

版本号控制和一致性

可靠性

分布为多个节点

官方站点

http://hypertable.org/

6、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/

7、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/

8、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/

9、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

10、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/

11、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/

12、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/

13、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工具包和异步复制框架。

特性

一、强有力的优势

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

对于非常多应用程序而言,最具挑战性的方面是控制业务模型本身的内在复杂性。 电信基础设施。交通运输网络,仿真,金融工具以及其他领域的复杂性必须得到支持。 并且这样的支持复杂性的方式还要可以随着环境和需求变化而不断地改进应用程序。 这些应用程序的重点是领域和这些领域的逻辑。

复杂的设计应当以对象模型为基础。将技术需求比如持久性(和SQL)与领域模型混合在一起的架构会带来灾难性的后果。

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

二、主要特性

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

支持对象持久标准,如JDO

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

企业级的高可用性选项

动态模式更新

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

端到端的对象支持架构

细粒度并发控制

多线程,多会话

支持国际字符集

快速数据採集

三、优势

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

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

降低开发时间

四、8.0的新特性

增强的多核线性扩展能力

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

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

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

五、Versant对象数据库特性

动态模式更新

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

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

client与一个或多个数据库进行无缝交互。单个的数据库无缝地联合在一起,使您可以给数据分区,提高读写能力,增大整体的数据库的大小。这些数据库上的数据分发是透明的。

它们被结合在一起形成一个

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

并发控制

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

透明的C++对象持久性

C++对象。STL类,标准C++集合如字典,映射,映射的映射。诸如此类。以原样保存在数据库中。状态变化在后台被自己主动追踪。

当相关的事务提交后,全部的变化将会被自己主动发送到数据库。因此就能形成一种很自然的,低干扰的编程风格,这样,就能实现应用程序的高速开发,同一时候当需求发生变化时。应用程序就行灵活地改动。

透明的Java对象持久性

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

在后台被自己主动追踪。

事务提交后。自己主动把全部变化写入数据库。

因此,对于托管和非托管部署,您都能获得轻量级的编程风格。

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

而且能够自主执行,不须要不论什么管理。

六、企业级的特性

对象端到端

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

应用的client缓存透明地缓存对象以提快速度。

数据库支持对象。它能运行查询,建立索引,使应用可以平衡它和数据库间的进程运行。XA的支持使与其他事务数据源协调成为可能。

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

高可用性

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

容错server

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

异步数据复制

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

高可用性备份

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

在线再组织

Versant 数据库再组织选项为了会删除大量对象的应用而设计的。

它使用户可以收回数据库中未使用的空间,同一时候使数据库保持正常运作。添加可用空间,改善数据库的性能。

八、为什么要使用Versant面向对象数据库?

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

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

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

当应用中涉及到复杂的内存对象模式。尤其是关联訪问时。对象数据库要比映射到关系数据库表现得更好。比如,当应用程序须要从对象数据库里检索一个对象时,仅仅要运行单条查询就可以找到该对象。当映射到一个关系数据库时。假设对象包括多对多关联。那么就必须通过一个或多个连接才干检索到关联表中的数据。使用了对象数据库。对于一般复杂性的对象的检索。速度则提高了三倍。对于复杂性非常高的对象的检索。比如多对多关联,搜索的速度则提高了三十倍。而对于集合的集合和递归联系。检索的速度有可能提高五十倍。

依据需求的变化,高速改进应用

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

投资回报率

当用户遇到了复杂的对象模型和大的数据集,对象数据库就是首选的解决方式。对象数据库基本的长处在于,它可以缩小代码的规模,减少研发成本,缩短上市的时间,减少或根本没有管理的要求以及减少购置硬件和server软件许可证的成本。

性能上的优势还可以大大减少高负载动作应用所消耗的成本。

大型的关系数据库成本高很昂贵。还须要昂贵的硬件支持

官方站点

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

14、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/

15、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/

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-08-27 04:19:42

15一个NoSql数据库的相关文章

用 Python 写一个 NoSQL 数据库

本文译自 What is a NoSQL Database? Learn By Writing One In Python. 完整的示例代码已经放到了 GitHub 上, 请 点击这里, 这仅是一个极简的 demo, 旨在动手了解概念. 如果对译文有任何的意见或建议,欢迎 提 issue 讨论, 批评指正. 后续如有更新,可见 博客 . NoSQL 这个词在近些年正变得随处可见. 但是到底 "NoSQL" 指的是什么? 它是如何并且为什么这么有用? 在本文, 我们将会通过纯 Pytho

15个nosql数据库

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

用 Python 写一个 NoSQL 数据库Python

NoSQL 这个词在近些年正变得随处可见. 但是到底 "NoSQL" 指的是什么? 它是如何并且为什么这么有用? 在本文, 我们将会通过纯 Python (我比较喜欢叫它, "轻结构化的伪代码") 写一个 NoSQL 数据库来回答这些问题. OldSQL 很多情况下, SQL 已经成为 "数据库" (database) 的一个同义词. 实际上, SQL 是 Strctured Query Language 的首字母缩写, 而并非指数据库技术本身.

关于 NoSQL 数据库你应该了解的 10 件事

四分之一个世纪以来,关系型数据库(RDBMS)一直是主流数据库模型.但是现在非关系型数据库,“云”或者“NoSQL”数据库,正在作为一种替代数据库模型获得越来越多的占有率.本文中我们将关注非关系型 NoSQL 数据库的 10 个关键特征:排在前 5 位的优点和前 5 位的挑战. 提示:点击链接可以下载本文 英文版PDF NoSQL 的五大有点 1:弹性扩展 多年来,数据库负载需要增加时,数据管理员只能依赖于纵向扩展(scale-up)–买更多更强的服务器,而不是依赖横向扩展(scale-out)

SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.

SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. 特性 替代 Redis 数据库, Redis 的 100 倍容量 LevelDB 网络支持, 使用 C/C++ 开发 Redis API 兼容, 支持 Redis 客户端 适合存储集合数据, 如 list, hash, zset... 客户端 API 支持的语言包括: C++, PHP, Python, Java, Go 持久化的队列服务 主从复制, 负载均衡 性能 性能数据使用 ssdb-bench(SSD

[ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》

[ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>      [ASP.NET MVC2 系列] ASP.Net MVC教程之<ASP.NET MVC 概述>     [ASP.NET MVC2 系列] 理解MVC应用程序的执行过程     [ASP.NET MVC2 系列] ASP.NET MVC Routing概述      [ASP.NET MVC2

[转载] nosql 数据库的分布式算法

原文: http://juliashine.com/distributed-algorithms-in-nosql-databases/ NoSQL数据库的分布式算法 On 2012年11月9日 in 也为稻粱故, by Juliashine 本文译自 Distributed Algorithms in NoSQL Databases 系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性.这么讲使得NoSQL听起来像是一个大筐,什么都能塞进去

八种主流NoSQL数据库对比

摘要:虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举.详见我的IT-Homer博客: 八种主流NoSQL数据库对比 简介 NoSQL,是一项全新的数据库革命性运动,NoSQL的拥护者们提倡运用非关系型的数据存储.现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改变这一现状.目前Google的 BigTable 和Amazon 的Dynamo使用的就是NoSQL型数

大数据挑战与NoSQL数据库技术pdf

下载地址:网盘下载 内容简介 编辑 <大数据挑战与nosql数据库技术>对大数据时代面临的挑战,以及nosql数据库的基本知识做了清晰的阐述,有助于读者整理思路,了解需求,并更有针对性.有选择地深入学习相关知识.[1] 目录 编辑 第1章概论1 1.1引子2 1.2大数据挑战3 1.3大数据的存储和管理5 1.3.1并行数据库5 1.3.2NoSQL数据管理系统6 1.3.3NewSQL数据管理系统8 1.3.4云数据管理11 1.4大数据的处理和分析11 1.5小结13 参考文献13 理论篇