[数据库]---nosql,非关系型数据库整理
1.關系型數據庫與非關系型數據庫的區別
| 成本 | 好的收費 | 開源的,都免費的 |
| 存儲與查詢 | 硬盤存儲,相對查的慢 | 內存存儲,查的快 |
| 存儲格式 | 只能是基本格式 | 多種多樣 |
| 年齡 | 出現時間較長,較成熟 | 后起之秀,不可小覷 |
| 擴展性 | join等不好擴展 | 方便集群 |
| 事務 | 強事務 | 弱事務 |
| 查詢 | 支持sql復雜查詢 | 更適合簡單查詢 |
個人感覺:
關系型數據庫就像一位老員工,他雖然慢,思維也比較固定,但給人的感覺就是一個字 : 穩
非關系型數據庫就像年輕小伙,雖然經驗不是很豐富,但是干勁十足,相信以后必將是他的天下
一個大型的公司,必定是新老員工都要有的.
對于大型系統而言,基本上也都是非關系型數據庫和關系型數據庫共存的.
非關系型數據庫承擔大部分查詢,但最終的寫入存儲,還是使用關系型數據庫
2.非關系型數據庫的分類
2.1 k-v型存儲
2.1.1 Redis
1.支持五種基本類型(String,List,Set,Hash,Sorted Set)
2.基于內存存儲,兩種持久化方式(RDB快照和AOF)
3.操作快(純內存操作,單線程操作避免上下文頻繁切換,采用非阻塞I/o多路復用機制)
4.操作是原子性的,要么成功執行,要么失敗完全不執行
5.可以手動實現事務 : MULTI和EXEC指令
6.Redis分布式鎖
7.Redis做緩存
8.Redis命令:http://www.redis.net.cn/
2.1.2 memcached
1.分布式內存對象緩存系統
2.所有數據都在內存中,沒有持久化(注意與redis對比)
3.數據結構較為單一
4.可以修改最大可用內存,采用LRU算法
5.在并發場景下,用cas保證一致性
6.支持集群
7.適用于數據庫緩存(主流)
8.總而言之,個人覺得綜合下來,redis比memcached好,redis甚至可以完全替代memcached.
2.2 列存儲
2.2.1 Hbase
1.存儲在hdfs之上的,是對hdfs的封裝,簡化了hdfs的操作
2.沒有事務
3.基于內存
4.只支持key查詢(這個和redis一樣)
5.面向列存儲(傳統數據庫是面向行存儲的,一行有多列。而hbase一行只存儲一列,所以說是面向列存儲的
6.hbase中沒有庫的概念,但有個命名空間namespace,類似于庫
7.hbase中有table表的概念
8.hbase中多了一個列簇的概念,column family。分類管理列,一個列簇是由多個相同特性的列組成,一個表中有多個列簇,列簇必須在創建表的時候指定
9.一個列簇下可以有多個列column,列簇下的列可以動態添加,列名需要在添加列名的時候指定
10.每個列名對應的值value,同一條數據可以有多個值,每個值對應一個版本,通過timestap當版本號,一個value默認可以保存三個版本
11.總而言之,大數據生態圈的存儲,用hbase
2.3 文檔存儲
2.3.1 MongoDB
1.面向集合(collection,類似表,但無模式)存儲,schemeless
2.支持動態查詢,語法豐富(這是我認為mongodb潛力比較大的原因之一)
3.支持豐富的數據類型
4.支持索引
5.支持javascript shall(小部分不支持,比如alert),因為內置js解釋器
6.總而言之,數據庫能干的mongodb幾乎都差不多,非數據庫能干的mongodb也差不多,個人很看好mongodb,只不過現在這方面沒有數據庫那么成熟,沒有被特別廣泛的用起來
2.4 圖型存儲
待研究
3.非關系型數據庫的用處
總結
以上是生活随笔為你收集整理的[数据库]---nosql,非关系型数据库整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NSURLProtocol概述
- 下一篇: java中使用lua操作redis