隨着因特網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/