第1章 初識NoSQL
1.1 大數據時代對數據存儲的挑戰
1.高并發讀寫需求? 2.高效率存儲與訪問需求? 3.高擴展性
1.2 認識NoSQL
NoSQL--非關系型、分布式、不提供ACID的數據庫設計模式
NoSQL特點
1.易擴展? 2.高性能? 3.靈活的數據模型? 4.高可用
NoSQL擁有一個共同的特點,即去掉關系數據庫的關系型特性--非關系型數據庫
關系型數據庫強調ACID規則(原子性、一致性、隔離性以及持久性)
非關系型數據庫強調BASE原則(基本可用、軟狀態、最終一致性)
其采用分布式存儲,所以可使用水平擴展方式擴展數據庫
NoSQL基礎理論
NoSQL理論的基礎是由CAP理論、BASE理論以及最終一致性奠定的
1.CAP原則
一致性、可用性、分區容錯性
2.BASE理論
核心思想:即使無法保證系統的強一致性,但每個應用都可以根據自身的業務特點,采用適當的方式使系統達到最終一致性
基本可用、軟狀態、最終一致性
3.最終一致性--弱一致性的一種特殊形態
強一致性--要求集群中的所有結點的狀態實時保持一致
弱一致性
NoSQL數據庫分類
1.鍵值對存儲數據庫--最簡單的NoSQL數據庫
2.文檔存儲數據庫
不是文檔管理系統,用于存儲和管理文檔,文檔是結構化的數據
3.列式存儲數據庫
以列為單位存儲數據,將列值順序地存入數據庫
4.圖形存儲數據庫
不是網絡數據庫
比較
第2章 文檔存儲數據庫MongoDB
2.1MongoDB概述
MongoDB是一個面向集合、模式自由的文檔型數據庫
易用性? 高性能? 高可用性? 易擴展性? 支持多種存儲引擎
2.2MongoDB體系結構
MongoDB的邏輯結構是體系結構的一種形式,它是一種層次結構,主要由文檔,集合,數據庫三部分組成。
數據庫
MongoDB數據庫默認提供admin,local,config以及test四個數據庫
集合
MongoDB的一組文檔,分為一般集合和上限集合
前者可以限制集合的容量大小,在數據存滿時,可以從頭開始覆蓋最開始的文檔,從而進行循環寫入
文檔
文檔以鍵值對形式存儲在集合中,鍵用于唯一標識一個文檔--為字符串類型
值則可以是各種復雜的文件類型
MongoDB單個文檔大小上限為16MB
2.3MongoDB數據類型
1.數字類型
32位整數(Int32) 64位整數(Int64) 64位浮點數(Double)
2.日期類型
new Data(...)
3.數組類型
[]
4.ObjectId類型
12字節BSON類型
5.內嵌文檔
6.Code類型
第3章 MongoDB數據庫操作
3.1MongoDB部署
MongoDB是一個開源、跨平臺的數據庫
mongod.exe用于啟動MongoDB服務
3.2數據庫操作
新建數據庫 use?
查看數據庫 show dbs(所有數據庫)? db(當前數據庫)
刪除數據庫 db.dropDatabase()
3.3集合操作
創建集合?
db.createCollection("XX_name",[OPTIONS]) #顯式創建集合db.XX_name.insert(DOCUMENT) #隱式創建集合
刪除集合
db.XX_name.drop()
3.4文檔的插入、更新與刪除操作
#單文檔插入
db.XX_name.insert(document)db.XX_name.save(document)
#多文檔插入
db.XX_name,insertMany([d1,d2,...])
insert()方法--插入文檔,若集合中已存在該文檔,則會報錯,反之寫入
save()方法--插入文檔,已存在的文檔直接更新,反之寫入
復習總結【重要考點】
MongoDB單個文檔大小上限為16M
塊的默認大小為64M
當MemStore存儲的數據達到一個閥值時,MemStore里面的數據就會被flush到StoreFile.文件,這個閾值默認是128M
默認情況下,GridFS使?的塊??為255 KB?
分片鍵的長度大小,不可超過512個字節
Neo4j的應用場景:
社區網絡、推薦引擎、交通運輸、物流管理、主數據管理、訪問控制以及欺詐檢測
MongoDB數據庫基于C++語言編寫
Redis數據庫基于ANSI C語言編寫
HBase數據庫基于Java語言編寫
Neo4j數據庫基于Java語言編寫
有序集合可以直接對值進行操作,而散列是通過鍵來查找值。
副本節點與主節點同步副本是異步同步。