數據庫介紹與分類

數據庫分2類:

1.關係型數據庫 

   MSSQL ,MYSQL,Oracle.html

    參考:http://www.javashuo.com/article/p-uekjtlwu-bv.html

 

2.非關係型數據庫(NoSql = Not Only a Sql):

(參考1) NoSQL的四大類型 程序員

 1 鍵值數據庫算法

   相關產品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached數據庫

   應用:內容緩存編程

   優勢:擴展性好、靈活性好、大量寫操做時性能高數組

   缺點:沒法存儲結構化信息、條件查詢效率較低緩存

   使用者:百度雲(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和Memcached)服務器

2 列族數據庫  一個表有不少行,一行有不少列族,一個列族好多列,一個列好多k - v對網絡

   相關產品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS數據結構

   應用:分佈式數據存儲與管理

   優勢:查找速度快、可擴展性強、容易進行分佈式擴展、複雜性低

   使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Facebook(HBase)

3 文檔數據庫

   相關產品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit

   應用:存儲、索引並管理面向文檔的數據或者相似的半結構化數據

   優勢:性能好、靈活性高、複雜性低、數據結構靈活

   缺點:缺少統一的查詢語言

   使用者:百度雲數據庫(MongoDB)、SAP(MongoDB)

4 圖形數據庫 它應用圖形理論存儲實體之間的關係信息

   相關產品:Neo4J、OrientDB、InfoGrid、GraphDB

   應用:大量複雜、互鏈接、低結構化的圖結構場合,如社交網絡、推薦系統

   優勢:靈活性高、支持複雜的圖形算法、可用於構建複雜的關係圖譜

   缺點:複雜性高、只能支持必定的數據規模

   使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

 

 

 

 

MongoDB簡介  

-可高負載,多節點,分佈式,可擴展,高性能。企業版收費,社區版免費

什麼是MongoDB ?

MongoDB 是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。

高負載的狀況下,添加更多的節點,能夠保證服務器性能。

MongoDB 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。

MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。

 

問答機器人採用MongoDB:

 


主要特色

  • MongoDB 是一個面向文檔存儲的數據庫,操做起來比較簡單和容易。
  • 你能夠在MongoDB記錄中設置任何屬性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")來實現更快的排序。
  • 你能夠經過本地或者網絡建立數據鏡像,這使得MongoDB有更強的擴展性。
  • 若是負載的增長(須要更多的存儲空間和更強的處理能力) ,它能夠分佈在計算機網絡中的其餘節點上這就是所謂的分片
  • Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
  • MongoDb 使用update()命令能夠實現替換完成的文檔(數據)或者一些指定的數據字段 。
  • Mongodb中的Map/reduce主要是用來對數據進行批量處理和聚合操做
  • Map和Reduce。Map函數調用emit(key,value)遍歷集合中全部的記錄,將key與value傳給Reduce函數進行處理。
  • Map函數和Reduce函數是使用Javascript編寫的,並能夠經過db.runCommand或mapreduce命令來執行MapReduce操做。
  • GridFS是MongoDB中的一個內置功能,能夠用於存放大量小文件
  • MongoDB容許在服務端執行腳本,能夠用Javascript編寫某個函數,直接在服務端執行,也能夠把函數的定義存儲在服務端,下次直接調用便可。
  • MongoDB支持各類編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
  • MongoDB安裝簡單。

 

 

 

Redis 簡介  - 緩存數據庫,數據放在內存裏,通常用做不太變化的數據的高速讀取

Redis 是徹底開源免費的,遵照BSD協議,是一個高性能的key-value數據庫

 

Redis 與其餘 key - value 緩存產品有如下三個特色:

  • Redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓的時候能夠再次加載進行使用。
  • Redis不只僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
  • Redis支持數據的備份,即master-slave模式的數據備份。

Redis 優點

  • 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
  • 豐富的數據類型 Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操做。
  • 原子 – Redis的全部操做都是原子性的,意思就是要麼成功執行要麼失敗徹底不執行。單個操做是原子性的。多個操做也支持事務,即原子性,經過MULTI和EXEC指令包起來。
  • 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過時等等特性。

Redis與其餘key-value存儲有什麼不一樣?

  • Redis有着更爲複雜的數據結構而且提供對他們的原子性操做,這是一個不一樣於其餘數據庫的進化路徑。Redis的數據類型都是基於基本數據結構的同時對程序員透明,無需進行額外的抽象。

  • Redis運行在內存中可是能夠持久化到磁盤,因此在對不一樣數據集進行高速讀寫時須要權衡內存,由於數據量不能大於硬件內存。在內存數據庫方面的另外一個優勢是,相比在磁盤上相同的複雜的數據結構,在內存中操做起來很是簡單,這樣Redis能夠作不少內部複雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,由於他們並不須要進行隨機訪問。

 

 

 

 

 

 

 

 

 

其餘參考:

常見的NoSQL數據庫

最經常使用的NoSQL數據庫 

數據庫介紹與分類

相關文章
相關標籤/搜索