# 4.2 NoSQL數據庫
## 4.2 NoSQL數據庫
NoSQL數據庫是一種非關系型數據庫。跟使用SQL的關系型數據庫相比,它具有以下一些特點:
- 無模式(schema)
- 易于水平擴展(horizontal scaling)
- 需要為查詢而設計文檔結構
- 對事務(transaction)的支持有限,或需要用戶自己實現
常見的NoSQL數據庫有兩類:面向文檔的(document-oriented)數據庫和“鍵-值”(key-value)數據庫。前者往往以JSON文檔作為數據存儲,如[MongoDB](https://www.mongodb.org/);后者就像一個Hash表,把數據按“鍵-值”對存儲,而且往往整個數據庫都位于內存中以實現較快的存取速度(因而常作為緩存使用),如[Redis](http://redis.io/),[Memcached](http://www.memcached.org/)。
需要指出的是,現在已經有不少SQL數據庫支持JSON文檔的存儲和查詢,如MySQL(從版本5.7開始),PostgreSQL(從版本9.4開始)和Oracle,這使得SQL數據庫和NoSQL數據庫的邊界變得模糊,對用戶來說則意味著更多的選擇。
### 流行的開源NoSQL數據庫
- [MongoDB](https://www.mongodb.org/)是一種具有高擴展性(scalability)的文檔數據庫,常用于大數據[1](#fn_1)存儲。
- [Redis](http://redis.io/)是一種多功能的“鍵-值”數據庫:不但可以用作緩存,還可以用作消息代理(message broker)實現[“訂閱/發布”模式](https://redis.io/topics/pubsub)。
- [Memcached](http://www.memcached.org/)是一種高性能的、專用于緩存的“鍵-值”數據庫。
更多關于NoSQL數據庫的介紹和產品可參考:<https://en.wikipedia.org/wiki/NoSQL>
> 1. 大數據專指海量數據,幾個甚至幾十個GB的數據其實算不上“大”,一般的SQL數據庫即可處理。[?](#reffn_1 "Jump back to footnote [1] in the text.")
- 前言
- 1 Web概述
- 1.1 什么是Web
- 1.2 超文本和超鏈接
- 1.3 URL
- 1.4 DNS
- 1.5 HTTP
- 1.5.1 客戶端請求
- 1.5.2 服務器應答
- 1.5.3 進一步了解HTTP
- 1.6 HTTPS
- 2 Web瀏覽器
- 2.1 HTML
- 2.1.1 文檔類型聲明
- 2.1.2 標簽和屬性
- 2.1.3 文檔結構
- 2.1.4 DOM
- 2.1.5 進一步了解HTML
- 2.2 CSS
- 2.2.1 樣式與樣式表
- 2.2.2 樣式表語法
- 2.2.3 級聯樣式表
- 2.2.4 進一步了解CSS
- 2.3 JavaScript
- 2.3.1 script標簽
- 2.3.2 操縱DOM
- 2.3.3 jQuery
- 2.3.4 進一步了解JavaScript
- 2.4 Ajax
- 2.5 移動設備與響應式Web設計
- 3 Web服務器
- 3.1 方法與資源
- 3.2 狀態代碼
- 3.3 靜態內容與動態內容
- 3.4 編程語言與技術
- 3.4.1 CGI
- 3.4.2 PHP
- 3.4.3 Java
- 3.4.4 Python
- 3.4.5 Ruby
- 3.4.6 Node.js
- 3.5 RESTful Web API
- 3.6 服務器架構
- 3.7 Web緩存
- 3.8 服務器推送
- 4 數據庫
- 4.1 關系型數據庫
- 4.2 NoSQL數據庫
- 5 Web服務器的其他組件
- 5.1 Cron
- 5.2 消息隊列
- 5.3 郵件服務器
- 6 開發工具與技術
- 6.1 Git
- 6.1.1 Git基礎操作
- 6.1.2 Git基本原理
- 6.1.3 進一步了解Git
- 6.2 敏捷開發