談MongoDB,首先談談何為分佈式文件存儲,用在哪裡。
分佈式存儲系統,簡單點說就是將數據分散存儲在多臺獨立的設備上。
相關應用場景精選如下:
- 大文件冷數據,如片庫
- 並行讀寫,高吞吐量,如視頻在線編輯
- 海量不能重複寫入且不允許修改的小文件
- mapreduce 任務的輸入和輸出
- 非常適合實時的插入,更新與查詢的網站數據
- 高性能緩存
- 高伸縮性的場景-適合由數十或數百臺服務器組成的數據庫(內置對MapReduce引擎的支持)
- 爬蟲數據存儲
- 電商商品存儲
MongoDB 分佈式文件存儲數據庫
支持的數據結構非常鬆散,是類似json的bson格式,可以存儲比較複雜的數據類型。
Mongo支持的查詢語言非常強大,其語法像面向對象的查詢語言,幾乎可以實現關係數據庫單表查詢的大部分需求,還支持對數據建立索引。
MongoDB 特點
<strong>高性能、易部署、易使用,存儲數據方便靈活。
主要特點有:面向集合存儲,易存儲對象類型的數據;集群;模式自由;支持動態查詢;支持完全索引,包含內部對象;支持查詢;支持複製和故障恢復;使用高效的二進制數據存儲,如視頻;自動處理碎片,以支持雲計算層次的擴展性;支持常用語言;文件存儲格式為類似JSON 的BSON;可通過網絡訪問;支持使用MapReduce 完成複雜的聚合任務。
MongoDB 幾個基本概念
- 面向集合:是數據被分組存儲在數據集中。集合在數據庫中都有一個唯一的標識名,並且可以包含無限數目的文檔。集合 對應於 表,不需要定義任何模式。
- 模式自由:對於mongodb中存儲的文件,不需要知道它的任何結構定義。
- 存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用於唯一標識一個文檔,為字符串類型,而值則可以是各種複雜的文件類型-BSON。
- 支持完全索引,可以在任意屬性上建立索引。
- 自動處理分片,以支持雲計算層次的擴展。MongoDB 支持集群自動切分數據,對數據進行分片可以使集群存儲更多的數據,實現更大的負載,也能保證存儲的負載均衡。
- 文件存儲格式為BSON 是對二進制格式的JSON 的簡稱,BSON 支持文檔和數組的嵌套。
- 數據庫MongoDB 中多個文檔組成集合,多個集合組成數據庫。
數據模型
- MongoDB 實例對應一組數據庫
- 數據庫 對應一組集合
- 集合 對應一組文檔
- 文檔 對應一組字段
- 字段 對應 一個鍵值對(KV)
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 ,一個購買和出售手工製作物品網站
- 紐約時報,領先的在線新聞門戶網站之一
閱讀更多 天天面試題 的文章