一、NoSQL數據庫簡介
1、技術發展
技術的分類
1、解決功能性的問題:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
2、解決擴展性的問題:Struts、Spring、SpringMVC、Hibernate、Mybatis
3、解決性能的問題:NoSQL、Java線程、Hadoop、Nginx、MQ、ElasticSearch
1.1、Web1.0時代
Web1.0的時代,數據訪問量很有限,用一夫當關的高性能的單點服務器可以解決大部分問題。
1.2、Web2.0時代
隨着Web2.0的時代的到來,用戶訪問量大幅度提升,同時產生了大量的用戶數據。加上後來的智能移動設備的普及,所有的互聯網平臺都面臨了巨大的性能挑戰。
1.3、解決CPU及內存壓力
1.4、解決IO壓力
2、NoSQL數據庫
2.1、NoSQL數據庫概述
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,泛指非關係型的數據庫。
NoSQL 不依賴業務邏輯方式存儲,而以簡單的key-value模式存儲。因此大大的增加了數據庫的擴展能力。
- 不遵循SQL標準。
- 不支持ACID。
- 遠超於SQL的性能。
2.2、NoSQL適用場景
- 對數據高併發的讀寫
- 海量數據的讀寫
- 對數據高可擴展性的
2.3、NoSQL不適用場景
- 需要事務支持
- 基於sql的結構化查詢存儲,處理複雜的關係,需要即席查詢。
- 用不着sql的和用了sql也不行的情況,請考慮用NoSql
2.4、Memcache
- 很早出現的NoSql數據庫
- 數據都在內存中,一般不持久化
- 支持簡單的key-value模式,支持類型單一
- 一般是作爲緩存數據庫輔助持久化的數據庫
2.5、Redis
- 幾乎覆蓋了Memcached的絕大部分功能
- 數據都在內存中,支持持久化,主要用作備份恢復
- 除了支持簡單的key-value模式,還支持多種數據結構的存儲,比如 list、set、hash、zset等。
- 一般是作爲緩存數據庫輔助持久化的數據庫
2.6、MongoDB
- 高性能、開源、模式自由(schema free)的文檔型數據庫
- 數據都在內存中, 如果內存不足,把不常用的數據保存到硬盤
- 雖然是key-value模式,但是對value(尤其是json)提供了豐富的查詢功能
- 支持二進制數據及大型對象
- 可以根據數據的特點替代RDBMS ,成爲獨立的數據庫。或者配合RDBMS,存儲特定的數據。
3、行式存儲數據庫(大數據時代)
3.1、行式數據庫
3.2、列式數據庫
二、Redis概述安裝
- Redis是一個開源的key-value存儲系統。
- 和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。
- 這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。
- 在此基礎上,Redis支持各種不同方式的排序。
- 與memcached一樣,爲了保證效率,數據都是緩存在內存中。
- 區別的是Redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件。
- 並且在此基礎上實現了master-slave(主從)同步。
1、應用場景