NoSQL存儲

 NoSQL不僅僅是No SQL,還是Not only SQL,SQL代表傳統關系數據庫,NoSQL顯然是針對傳統關系數據庫的補充和升級。

NoSQL分類:

(1)Key-value stores鍵值存儲, 保存keys+BLOBs (二進制大對象Binary Large OBjects)
(2)Table-oriented 面向表列, 主要有Google的BigTable和Cassandra.
(3)Document-oriented面向文檔, 文本是一種類似XML文檔,MongoDB 和 CouchDB
(4)Graph-oriented 面向圖論. 如Neo4J

  面向文檔與面向表列或鍵值存儲的區別:面向列族或鍵值存儲需要定義數據結構(半結構化),面向文檔無需結構(非結構化)。

  NoSQL與關系數據庫的區別:NoSQL絕對不支持Join。noSQL其實否定了關系數據庫的第二索引和join。joins導致數據庫切分sharding無法實施。見CAP定理。

Nosql Cap

  NoSQL具體產品種類有:
Google: Bigtable Amazon: Dynamo Amazon: SimpleDB Yahoo: HBase Microsoft: Dynomite Facebook: Cassandra LinkedIn: Voldemort

  NoSQL內部模式

  1. Distributed Hash Tables (DHT)分布式哈希
  2. Scalable 可伸縮
  3. Partitioned 分區
  4. Fault-tolerant 容錯
  5. Decentralized 非集中式
  6. Peer to peer 點對點
  7. Popularized
  8. Node ring 節點環
  9. Consistent Hashing 一致性哈希

幾個主要NoSQL特點介紹:

Redis
  關鍵點:超快Blazing fast ,IM data structure engine,支持五種,Key-value最簡單。只有Redis有事務機制 。
  適合: 不支持第二索引,在可以控制的數據庫大小情況下(放得下整個內存),快速改變數據,快速寫數據。
  案例:股票價格系統 分析,實時數據收集,聯系等等。
  Redis Cluster可以進行復制和手工failover.

Redis安裝

使用Spring Data + Redis實現緩存

基于Spring+redis實現pub/sub

apache camel和 redis

Redis Cluster快速安裝指南

介紹Redis數據結構set

介紹Redis數據結構hash

使用Redis創建分布式Java應用程序

Redis概率數據結構之計數器HyperLogLog

Redis概率數據結構之布隆過濾器

 

Riak
  關鍵點: 容錯性Fault tolerance 失敗恢復  內置全文本搜索
  適合: 如果你希望有類似Cassandra-like (Dynamo-like)風格, 但是你不想處理器復雜性和膨脹性。單服務器有良好可伸縮性scalability, 可用性availability 和容錯性 fault-tolerance, 采取是昂貴的多站點復制multi-site replication.
  案例:銷售點數據收集,工廠控制系統,那些不能允許幾秒當機的場合。

  Uber的Ringpop和Riak?

HBase
  關鍵點: 十億級別的行 X 百萬級別的列 大容量
  大表模型(高一致性)。
  Map/reduce with Hadoop 能夠實時獲得基于查詢的優化性能的節約型網關適合:
  適合:隨機 實時的讀寫操作,高吞吐量寫,隨機訪問大數據集。
  案例: Facebook 消息數據庫

NOSQL之旅---HBase

Cassandra
  鍵點: 繼承BigTable的列結構、Dynamo的最終一致性。
  按列查詢 寫快于讀 Map/reduce possible with Apache Hadoop
  適合: 當寫操作多于讀操作 (如logging).
  案例:: 銀行Banking, 金融系統,寫必須快于都的場合,實時的數據分析等.

HBase和Cassandra 比較

  Hbase更加適合于數據倉庫、大型數據的處理和分析(如進行Web頁面的索引等)慢活。高一致性CP。

  Cassandra 則更適合于實時事務處理和提供交互型數據 ,快活,最終一致性AP。Cossip 完全對稱

Cassandra專題

HBase和Cassandra的擴展性

CouchDB
  關鍵點: 最終一致性, 易用。
  寫操作不會阻塞讀操作。
  內部嵌入Hadoop之類map/reduce算法。
  實時更新。
  累計計算, 偶爾改變數據, 預先定義的查詢. 非常注重版本控制的場合. 舉例:: CRM, CMS系統.   主-主復制是其特別亮點,可以易于多個站點部署。

  Couch 適合實時性要求不高,易于使用。文本數據庫
  MVCC 模型:copy-on-modified?
  任何修改都會引起一個拷貝,這引起索引修改,再引起一個索引拷貝,以此類推:

  CouchDB 的長處正是Redis的短處
  Redis提供了簡單的索引機制和復雜的數據結構,而CouchDB提供的是復雜的索引和簡單的數據結構
  CouchDB:存儲大量的不易變但會被經常查詢的大量的文檔型數據。
  Redis :存儲小量的常變數據,存儲實時數據 。

CouchDB的安裝使用教程

CouchDB和MongoDB的擴展性

 

Couchbase 
  Couchbase基于Membase與CouchDB開發了一款個面向文檔的數據庫,Membase是個鍵/值、持久化、可伸縮的解決方案,使用了memcached wire協議。因此,對于數據的讀寫來說都能提供低延遲的訪問。

  與CouchDB區別:Couchbase產品包含了CouchDB的一個副本。Couchbase產品向CouchDB添加了緩存、集群等功能,

  Couchbase在內部數據中心使用Membase風格的復制,在數據中心之間使用CouchDB風格的復制,支持碰撞檢測和決議。

Couchbase + Angular + Node.js教程


MongoDB
  關鍵點: 強迫性一致;類SQL,容易上手 , 內置分片碎片
  適合: 需要動態查詢. 愿意事先定義索引indexes, 需要巨大的數據庫有良好性能。
  案例:適合90%所有MySQL等RDBM場合。
  問題:數據集大于內存很慢。
  MongoDB 使用MapReduce替代SQL的聚合功能進行分析,但是當前是單線程,并不可伸縮。

MongoDB安裝和Java使用教程

MongoDB的優化鎖

MongoDB + Morphia使用

MongoDB專題與教程



NEO4J
  圖數據庫,適合社會網絡應用 LinkedIn Facebook 文件系統 角色關系
  由nodes, relationships and properties.組成
  內存中的節點圖,自動持久。

 

相關參考:

可擴展伸縮架構中的狀態

Nosql概述介紹

NoSQL數據建模

為什么大部分NoSQL不提供分布式事務?

最終一致性其實比MVCC簡單

2009年柏林的NoSQL(非關系數據庫) 大會

Cassandra HBase和MongoDb性能比較

選擇NoSQL的幾種理由

NoSQL數據庫大比拼: Cassandra, HBase, MongoDB, Riak

數據庫緩存

Scalable可伸縮性詳細設計

淘寶數據魔方的系統架構

CAP原理和BASE思想

數據庫已死

NoDBA(干掉數據庫管理員)

事務機制

NoSQL專題

關系數據庫專題

可伸縮性

大數據

分布式系統

一级黄色录像影片 夫妻性生活影片 免费在线观看 一级a做爰片