主流NoSQL數據庫的分析與選擇

一由於新的數據項目的數據量級較大,所以考慮將mysql替換更高性能的數據庫。java

介紹一下NoSQL(不單單是關係型數據庫)的不一樣種類和其擅長的業務。mysql

NoSQL的一個比較明顯的特色是適用於現代大數據的存儲.(支持hadoop,保證了數據量級的同時對讀寫性能有必定要求)sql

 

目前市面上主流的開源NoSQL有如下幾類:數據庫

MongoDB, Cassandra, CouchDB, Hypertable, Redis, Riak, Neo4j, HBASE, Couchbase, MemcacheDB, RevenDB and Voldemort緩存

以上均免費且開源。做者選了幾種國內比較通用的進行分析。網絡

NoSQL 優勢  缺點   適用場景與備註  應用場景
 Hbase  

支持數十億行X上百萬列
堪比MySQL的隨機訪問性能數據結構

維護開發複雜,須要手工MapReduce   

1.簡單數據寫入(如「消息類」應用)
2.海量、結構簡單的分佈,併發數據的查詢(如「詳單類」應用)
適用於偏好BigTable,而且須要對大數據進行隨機、實時訪問的場合併發

 

1.Facebook的消息類應用,包括Messages、Chats、Emails和SMS系統
2.淘寶的WEB版阿里旺旺,後臺是Hbas
3.小米的米聊用的也是Hbase
4.移動某省公司的手機詳單查詢系統nosql

 Mangodb  功能豐富,數據類型靈活,各個性能特性都比較平衡  性能在同類中比較低  

1.二級索引,支持相比於HBase更復雜的集合查找
2.處理文檔型數據更爲直接。支持複雜的數據結構
適用於須要動態查詢支持;須要使用索引而不是 map/reduce功能;須要對大數據庫有性能要求oop

 例如:你本打算採用 MySQL或 PostgreSQL,但由於它們自己自帶的預約義欄讓你望而卻步。
 Redis 速度快,簡單,容易維護,支持多種數據結構  數據可靠性無保障,功能較少。  

1.處理數據量小於以上兩種的極高速讀寫
2.支持集合set,有序集合zset和哈希hash格式
適用於數據變化快且數據庫大小可碰見(適合內存容量)的應用程序

 

1.例如:股票價格、數據分析、實時數據蒐集、實時通信。
2.適用於高速緩存,存放Hadoop或Spark的分析結果,或在部分場合能夠對關係數據庫起到很好的補充做用

 Cassandra  對大型表格和Dynamo支持得最好,高寫入性能  臃腫和複雜,java配置異常頻出  適用於寫入較多於讀取操做(記錄日誌).快速開發應用程序,大量寫入、統計和分析,須要擴展的部署結構  例如:銀行業,金融業(雖然對於金融交易不是必須的,但這些產業對數據庫的要求會比它們更大)寫比讀更快,因此一個天然的特性就是實時數據分Neo4j析
 Neo4j  圖形類數據  非圖形數據不適用  適用於圖形一類數據。這是Neo4j與其餘nosql數據庫的最顯著區別  例如:社會關係,公共交通網絡,地圖及網絡拓譜

 

 

 

綜合以上特徵,若是想要對用戶出行的數據進行統計,不一樣用戶單日的行程數目與充電次數均不相同,mangodb的不一樣結構的文件存儲更適用於當前場景。

 

參考文章:

https://blog.csdn.net/renyi_blog/article/details/23285977

https://bbs.csdn.net/topics/390826073

https://blog.csdn.net/aikumei/article/details/77671891

相關文章
相關標籤/搜索