NoSQL(NoSQL = Not Only SQL ),意爲反 SQL 運動,是一項全新的數據庫革命性運動,2000 年 前就有人提出,發展至 2009 年趨勢愈加高漲。它是指運用非關係型的數據存儲,相對於鋪天蓋地的 關係型數據庫運用,這一律念無疑是一種全新的思惟的注入。 隨着互聯網 web2.0 網站的興起,傳統的關係數據庫在應付 web2.0 網站,特別是超大規模和高並 發的 SNS 類型的 web2.0 純動態網站已經顯得力不從心,暴露了不少難以克服的問題,而非關係型的 數據庫則因爲其自己的特色獲得了很是迅速的發展。NoSQL 數據庫的產生就是爲了解決大規模數據集 合多重數據種類帶來的挑戰,尤爲是大數據應用難題。web
分類 | 舉例 | 應用場景 | 數據模型 | 特色 |
---|---|---|---|---|
鍵值型 | Tokyo Cabinet/Tyrant, Redis, Voldemort,BDB | 內容緩存,主要用於處理大量數據 的高訪問負載,也用於一些日誌系統等等。 | Key 指向 Value 的鍵值對,一般用 hash table 來實現 | 查找速度快 |
列存儲數據庫 | Cassandra, HBase, | 分佈式的文件系統 | 以列簇式存儲,將同一列數據存在一塊兒 | 查找速度快,可擴展性強,更容易進行分佈式擴展 |
文檔型數據庫 | CouchDB, MongoDB | Web 應 用 ( 與 Key-Value 相似, Value是結構化的,不一樣的是數據庫可以瞭解 Value 的內容) | Key-Value 對應的鍵值對,Value 爲結構化數據 | 數據結構要求不嚴格,表結構可變,不須要像關係型數據庫同樣須要預先定義表結構 |
圖形數據庫 | Neo4J, InfoGrid, Infinite Graph | 社交網絡,推薦系統等。專一於構建關係圖譜 | 圖結構 | 利用圖結構相關算法。好比最短路徑尋址,多維度關係查找等 |
NoSQL 是 key-value 形式存儲,和傳統的關係型數據庫不同,不必定遵循傳統數據庫的一些基本要求,好比說遵循 SQL 標準、ACID 屬性、表結構等等。
這類數據庫主要有如下特色:redis
Redis 是一個開源的,先進的 key-value 非關係型數據庫。它一般被稱爲數據結構服務器,由於鍵能夠包含 string (字符串)、hash(哈希)、list(鏈表)、set(集合)和 zset(sorted-set--有序集合)。這些數據類型都支持 push/pop、add/remove 及取交集並集和差集及更豐富的操做。
Redis 和 Memcached 相似,它支持存儲的 value 類型相對更多,與 memcached 同樣,爲了保證效率,數據都是緩存在內存中,區別是 Redis 會週期性的把更新的數據寫入磁盤或者把修改操做寫入追加的記錄文件,而且在此基礎上實現了 master-slave(主從)同步。算法
wget -c http://download.redis.io/releases/redis-5.0.7.tar.gz [root@centos7 ~]# tar -zxvf redis-5.0.7.tar.gz #解壓 [root@centos7 ~]# cd redis-5.0.7/ [root@centos7 redis-5.0.7]# make MALLOC=lib #編譯,因版本較新,因此須要指定庫 [root@centos7 redis-5.0.7]# make PREFIX=/usr/local/redis install #安裝到指定位置 [root@centos7 redis-5.0.7]# mkdir /usr/local/redis/etc [root@centos7 redis-5.0.7]# cp ./redis.conf /usr/local/redis/etc/ #生成配置文件
[root@centos7 redis-5.0.7]# vim /usr/local/redis/etc/redis.conf daemonize no 修改成 yes #容許redis以守護進程運行
[root@centos7 ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf 6562:C 18 Jan 2020 00:35:33.038 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 6562:C 18 Jan 2020 00:35:33.038 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=6562, just started 6562:C 18 Jan 2020 00:35:33.038 # Configuration loaded
[root@centos7 ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1: #鏈接指定的 redis 服務器 -p 6379: #指定 redis 服務器的端口 -a 密碼: #使用密碼登陸 -n 數據庫號: #指定鏈接哪一個數據庫 --raw: redis #支持存儲中文 [root@centos7 ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> 127.0.0.1:6379> exit [root@centos7 ~]#
[root@centos7 ~]# /usr/local/redis/bin/redis-cli shutdown 或 [root@centos7 ~]# pkill -9 redis