02.25 MongoDB 基礎知識大補

談MongoDB,首先談談何為分佈式文件存儲,用在哪裡。

分佈式存儲系統,簡單點說就是將數據分散存儲在多臺獨立的設備上。

相關應用場景精選如下:

  1. 大文件冷數據,如片庫
  2. 並行讀寫,高吞吐量,如視頻在線編輯
  3. 海量不能重複寫入且不允許修改的小文件
  4. mapreduce 任務的輸入和輸出
  5. 非常適合實時的插入,更新與查詢的網站數據
  6. 高性能緩存
  7. 高伸縮性的場景-適合由數十或數百臺服務器組成的數據庫(內置對MapReduce引擎的支持)
  8. 爬蟲數據存儲
  9. 電商商品存儲


MongoDB 分佈式文件存儲數據庫

支持的數據結構非常鬆散,是類似json的bson格式,可以存儲比較複雜的數據類型。

Mongo支持的查詢語言非常強大,其語法像面向對象的查詢語言,幾乎可以實現關係數據庫單表查詢的大部分需求,還支持對數據建立索引。

MongoDB 特點

<strong>高性能、易部署、易使用,存儲數據方便靈活。

主要特點有:面向集合存儲,易存儲對象類型的數據;集群;模式自由;支持動態查詢;支持完全索引,包含內部對象;支持查詢;支持複製和故障恢復;使用高效的二進制數據存儲,如視頻;自動處理碎片,以支持雲計算層次的擴展性;支持常用語言;文件存儲格式為類似JSON 的BSON;可通過網絡訪問;支持使用MapReduce 完成複雜的聚合任務。


MongoDB 幾個基本概念

  • 面向集合:是數據被分組存儲在數據集中。集合在數據庫中都有一個唯一的標識名,並且可以包含無限數目的文檔。集合 對應於 表,不需要定義任何模式。
  • 模式自由:對於mongodb中存儲的文件,不需要知道它的任何結構定義。
  • 存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用於唯一標識一個文檔,為字符串類型,而值則可以是各種複雜的文件類型-BSON。
  • 支持完全索引,可以在任意屬性上建立索引。
  • 自動處理分片,以支持雲計算層次的擴展。MongoDB 支持集群自動切分數據,對數據進行分片可以使集群存儲更多的數據,實現更大的負載,也能保證存儲的負載均衡。
  • 文件存儲格式為BSON 是對二進制格式的JSON 的簡稱,BSON 支持文檔和數組的嵌套。
  • 數據庫MongoDB 中多個文檔組成集合,多個集合組成數據庫。

數據模型

  • MongoDB 實例對應一組數據庫
  • 數據庫 對應一組集合
  • 集合 對應一組文檔
  • 文檔 對應一組字段
  • 字段 對應 一個鍵值對(KV)


MongoDB 基礎知識大補

對比


key: 必須為字符串類型。value:可以包含如下類型。

  • 基本類型:String,int,float,timestamp,binary 等類型。
  • 一個document。
  • 數組類型
<code>{     "_id" : ObjectId("5e1231231231231237"),    "title" : "批量更新",     "url" : "http://localhost:8092",     "author" : "天天面試題",     "tags" : [        "java",         "mongodb",         "spring"    ],     "visit_count" : NumberLong(10),     "add_time" : ISODate("2020-02-25T07:10:32.936+0000")}/<code>


Spring Boot 集成 MongoDB方法

<code>#加入 MongoDB 的依賴:<dependency>  <groupid>org.springframework.boot/<groupid>  <artifactid>spring-boot-starter-data-mongodb/<artifactid>/<dependency>#配置 MongoDB 的信息:spring.data.mongodb.database=testspring.data.mongodb.host=localhostspring.data.mongodb.port=27017.......#直接注入 MongoTemplate 就可以操作 MongoDB:@Autowiredprivate MongoTemplate mongoTemplate;/<code>

應用案例

  • etsy.com ,一個購買和出售手工製作物品網站
  • 紐約時報,領先的在線新聞門戶網站之一


分享到:


相關文章: