MongoDB
簡(jiǎn)介
MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)冰垄。由 C++ 語(yǔ)言編寫(xiě)。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的雀久。
NoSQL特點(diǎn)
- 代表著不僅僅是SQL(Not Only SQL)
- 鍵值對(duì)存儲(chǔ),列存儲(chǔ)趁舀,文檔存儲(chǔ)赖捌,圖形數(shù)據(jù)庫(kù)
- 最終一致性,而非ACID屬性
- 非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù)
- CAP定理(!!)
- 高性能矮烹,高可用性和可伸縮性
MongoDB概念
1.SQL術(shù)語(yǔ)對(duì)比
SQL術(shù)語(yǔ)/概念 | MongoDB術(shù)語(yǔ)/概念 | 解釋/說(shuō)明 |
---|---|---|
database | database | 數(shù)據(jù)庫(kù) |
table | collection | 數(shù)據(jù)庫(kù)表/集合 |
row | document | 數(shù)據(jù)記錄行/文檔 |
column | field | 數(shù)據(jù)字段/域 |
index | index | 索引 |
table joins | 表連接,MongoDB不支持 | |
primary key | primary key | 主鍵,MongoDB自動(dòng)將_id字段設(shè)置為主鍵 |
2.SQL條件對(duì)比
操作 | 格式 | 范例 | RDBMS中的類(lèi)似語(yǔ)句 |
---|---|---|---|
等于 | {<key>:<value>} | db.col.find({"by":"ahh"}).pretty() | where by = 'ahh' |
小于 | {<key>:{$lt:<value>}} | db.col.find({"likes":{$lt:50}}).pretty() | where likes < 50 |
小于或等于 | {<key>:{$lte:<value>}} | db.col.find({"likes":{$lte:50}}).pretty() | where likes <= 50 |
大于 | {<key>:{$gt:<value>}} | db.col.find({"likes":{$gt:50}}).pretty() | where likes > 50 |
大于或等于 | {<key>:{$gte:<value>}} | db.col.find({"likes":{$gte:50}}).pretty() | where likes >= 50 |
不等于 | {<key>:{$ne:<value>}} | db.col.find({"likes":{$ne:50}}).pretty() | where likes != 50 |
基本語(yǔ)句
- 數(shù)據(jù)庫(kù)操作
- 創(chuàng)建數(shù)據(jù)庫(kù):use DATABASE_NAME
- 查看數(shù)據(jù)庫(kù):show dbs
- 刪除數(shù)據(jù)庫(kù):db.dropDatabase()
- 集合操作
- 創(chuàng)建集合:db.createCollection(COLLECTION_NAME)
- 查看集合:show collections
- 刪除集合:db.COLLECTION_NAME.drop()
- 文檔操作
- 插入文檔:db.COLLECTION_NAME.insert(document)
- 查看文檔:db.COLLECTION_NAME.find(query, projection)
- 更新文檔:db.COLLECTION_NAME.update(document) /db.COLLECTION_NAME.save(document)
- 刪除文檔:db.COLLECTION_NAME.remove(document)
- 其他
- limit()越庇、skip()、sort()奉狈、創(chuàng)建索引:ensureIndex()
- 聚合 db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
應(yīng)用場(chǎng)景
- 日志分析
- 存儲(chǔ)用戶(hù)不敏感信息卤唉、評(píng)論信息
- 工單系統(tǒng)
- 事務(wù)性不強(qiáng),讀頻繁
...
備注
CAP:
CAP
- 一致性(Consistency) (所有節(jié)點(diǎn)在同一時(shí)間具有相同的數(shù)據(jù))
- 可用性(Availability) (保證每個(gè)請(qǐng)求不管成功或者失敗都有響應(yīng))
- 分隔容忍(Partition tolerance) (系統(tǒng)中任意信息的丟失或失敗不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)作)