nosql常見的幾種類型:html
1. k-v存儲。(Redis,Memcache)mysql
鍵值數據庫就像在傳統語言中使用的哈希表。你能夠經過key來添加、查詢或者刪除數據。sql
適用場景:mongodb
儲存用戶信息,好比session、緩存html,配置文件、參數、購物車等等。這些信息通常都和ID(鍵)掛鉤,這種情景下鍵值數據庫是個很好的選擇。數據庫
不適用場景:緩存
直接查找value。session
2. 文檔數據庫(MongoDB、CouchDB)nosql
面向文檔數據庫會將數據以文檔的形式儲存。每一個文檔都是自包含的數據單元,是一系列數據項的集合。每一個數據項都有一個名稱與對應的值,值既能夠是簡單的數據類型,如字符串、數字和日期等;也能夠是複雜的類型,若有序列表和關聯對象。數據存儲的最小單位是文檔,同一個表中存儲的文檔屬性能夠是不一樣的,數據可使用XML、JSON或者JSONB等多種形式存儲。性能
適用場景:大數據
mysql的替代品,須要動態的查詢,更偏向與定義索引而非 map/reduce,針對大數據想要更好的性能。例如:日誌。企業環境下,每一個應用程序都有不一樣的日誌信息。Document-Oriented數據庫並無固定的模式,因此咱們可使用它儲存不一樣的信息
不適用場景:
不支持事務。
3. 列存儲。(Cassandra、HBase、Redis)
列存儲數據庫將數據儲存在列族中,一個列族存儲常常被一塊兒查詢的相關數據。舉個例子,若是咱們有一個Person類,咱們一般會一塊兒查詢他們的姓名和年齡而不是薪資。這種狀況下,姓名和年齡就會被放入一個列族中,而薪資則在另外一個列族中。
適用場景:
1) 日誌。由於咱們能夠將數據儲存在不一樣的列中,每一個應用程序能夠將信息寫入本身的列族中。
2) 博客平臺。咱們儲存每一個信息到不一樣的列族中。舉個例子,標籤能夠儲存在一個,類別能夠在一個,而文章則在另外一個。
4. 圖數據庫。(Neo4J、Infinite Graph、OrientDB)
圖數據庫容許咱們將數據以圖的方式儲存。實體會被做爲頂點,而實體之間的關係則會被做爲邊。解決實體間複雜的圖形關係問題。
適用場景:
1) 社交關係。
2) 推薦引擎。
mongodb 主要用於讀,或者非關鍵數據的寫操做。 mysql 用於事務處理。
MongoDB 海量數據查詢快速 不須要創建數據模型 適合作日誌數據庫 或者中間數據庫 從MySQL數據庫中讀取存放一些須要讀的業務數據 MongoDB沒有適合多表事務功能,寫操做也沒有多好的肯定機制,不適合當作業務數據的數據庫 MySQl 存放業務數據 事務的讀寫