日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB 初学

發(fā)布時間:2023/12/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB 初学 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大致看了一點 MongoDB. 回憶一下,這個數(shù)據庫有這樣一些特征:

  • Schema-less: 不需要預先定義 schema. 數(shù)據以 document 的方式存儲,document 大致上相當于關系數(shù)據庫中的一行記錄。document 存放在 collection 中間(相當于關系數(shù)據庫的 table)。document 里的每個 field 都可以建索引。
  • MongoDB 的特性使得它和面向對象編程語言之間的 gap 比較小。不像關系數(shù)據庫那樣需要 OR Mapping 來減輕編程的困難程度。比如,在C#中將對象序列化,即可調用 MongoDB 保存之。
  • Schema-less 的特性并非鼓勵將所有不想干的對象都放到一個大垃圾堆里(同一個collection)。而是為了提供靈活性。在大多數(shù)情況下,存儲模型/結構的設計方法和關系數(shù)據庫沒有太大的不同,只是在少數(shù)地方有所區(qū)別,如多對多關系。
  • document 可以內嵌 document. 就像 JSON 對象可以嵌套一樣。
  • 一般的設計場景鼓勵通過適當?shù)娜哂嘧侄蝸矶x document 的存儲結構,而非 normalized 的 ER 關系。不支持 join 的語法。
  • 多對多關系可以通過內嵌 document 來存儲多個關聯(lián) id 的數(shù)組來實現(xiàn)。系統(tǒng)能對數(shù)組進行高效率的查找。
  • 和數(shù)據庫的所有操作接口基本都通過 JavaScript / JSON 的語法來調用。
  • 查找記錄通過指定 selector 來實現(xiàn)。查詢返回的結果只是游標(cursor),而非直接返回結果??梢愿郊?order(), count() 等串接調用(估計內部也是通過 MapReduce 實現(xiàn)的)。
  • update 命令默認是覆蓋整個記錄的模式,就是說并非僅更新指定的字段,而是將其他老的字段信息也抹掉。如果需要實現(xiàn) sql 類似的按需更新字段的行為需要指定多余的參數(shù)。
  • 支持 upsert 操作,含義是:存在則更新,否則插入。
  • document 可以有任意的屬性集合。同一個 collections 里面可以存放具有不同 field 的 document. 在運行時刻可以向已有的 document 附加屬性。
  • 對事務的支持不如傳統(tǒng)的關系數(shù)據庫。有2個辦法:(1) 利用一些本身支持的原子操作來實現(xiàn)簡單的事務。比如 $inc, $set. (2) 將事務對數(shù)據記錄的影響結果預先計算出來,通過二段式的提交(2-phase commit)來實現(xiàn)。比較麻煩。
  • 全文索引:支持簡單的方案。復雜的方案需要通過和 Lucene/Solr 配合來實現(xiàn)。
  • MapReduce 基本原理及支持:
    • 至少需要提供一個 map function, 一個 reduce function.
    • map 用于產生鍵值對;reduce 用于對鍵值對進行聚合操作。
    • 鍵值對可以被并行處理(多個CPU,多個機器,。。。),所以 reduce 函數(shù)的特征是返回值也必須符合輸入的鍵值對格式,這樣才便于任務的拆分和調度。

轉載于:https://www.cnblogs.com/RChen/archive/2011/04/07/2007375.html

總結

以上是生活随笔為你收集整理的MongoDB 初学的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。