天天看點

Spring Boot(十一):Spring Boot 中 MongoDB 的使用

MongoDB 是最早熱門非關系資料庫的之一,使用也比較普遍,一般會用做離線資料分析來使用,放到内網的居多。由于很多公司使用了雲服務,伺服器預設都開放了外網位址,導緻前一陣子大批 MongoDB 因配置漏洞被攻擊,資料被删,引起了人們的注意,同時也說明了很多公司生産中大量使用 Mongodb。

MongoDB(來自于英文單詞“Humongous”,中文含義為“龐大”)是可以應用于各種規模的企業、各個行業以及各類應用程式的開源資料庫。基于分布式檔案存儲的資料庫。由C++語言編寫。旨在為 WEB 應用提供可擴充的高性能資料存儲解決方案。MongoDB 是一個高性能,開源,無模式的文檔型資料庫,是目前 NoSql 資料庫中比較熱門的一種。

MongoDB 是一個介于關系資料庫和非關系資料庫之間的産品,是非關系資料庫當中功能最豐富,最像關系資料庫的。他支援的資料結構非常松散,是類似 json 的 bjson 格式,是以可以存儲比較複雜的資料類型。MongoDB 最大的特點是他支援的查詢語言非常強大,其文法有點類似于面向對象的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。

傳統的關系資料庫一般由資料庫(database)、表(table)、記錄(record)三個層次概念組成,MongoDB 是由資料庫(database)、集合(collection)、文檔對象(document)三個層次組成。MongoDB 對于關系型資料庫裡的表,但是集合中沒有列、行和關系概念,這展現了模式自由的特點。

MongoDB 中的一條記錄就是一個文檔,是一個資料結構,由字段和值對組成。MongoDB 文檔與 JSON 對象類似。字段的值有可能包括其它文檔、數組以及文檔數組。MongoDB 支援 OS X、Linux 及 Windows 等作業系統,并提供了 Python,PHP,Ruby,Java及 C++ 語言的驅動程式,社群中也提供了對 Erlang 及 .NET 等平台的驅動程式。

MongoDB 的适合對大量或者無固定格式的資料進行存儲,比如:日志、緩存等。對事物支援較弱,不适用複雜的多文檔(多表)的級聯查詢。文中示範 Mongodb 版本為 3.5。

Spring Boot 對各種流行的資料源都進行了封裝,當然也包括了 Mongodb,下面給大家介紹如何在 Spring Boot 中使用 Mongodb:

pom 包裡面添加 <code>spring-boot-starter-data-mongodb</code>包引用

多個 IP 叢集可以采用以下配置:

Repository 層實作了 User 對象的增删改查

Spring Boot(十一):Spring Boot 中 MongoDB 的使用

5、檢視驗證結果

可以使用工具 MongoVUE 工具來連接配接後直接圖形化展示檢視,也可以登入伺服器用指令來檢視

1.登入 mongos

bin/mongo -host localhost -port 20000

2、切換到 test 庫

use test

3、查詢 user 集合資料

db.user.find()

根據3查詢的結果來觀察測試用例的執行是否正确。

到此 Spring Boot 對應 MongoDB 的增删改查功能已經全部實作。

接下來實作 MongoDB 多資料源的使用

Spring Boot(十一):Spring Boot 中 MongoDB 的使用
Spring Boot(十一):Spring Boot 中 MongoDB 的使用

封裝讀取以 Mongodb 開頭的兩個配置檔案

Spring Boot(十一):Spring Boot 中 MongoDB 的使用

配置不同包路徑下使用不同的資料源

Spring Boot(十一):Spring Boot 中 MongoDB 的使用

讀取對應的配置資訊并且構造對應的 MongoTemplate

Spring Boot(十一):Spring Boot 中 MongoDB 的使用

兩個庫的配置資訊已經完成。

Spring Boot(十一):Spring Boot 中 MongoDB 的使用
Spring Boot(十一):Spring Boot 中 MongoDB 的使用

到此,MongoDB 多資料源的使用已經完成。

文章内容已經更新到 Spring Boot 2.x

示例代碼:https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-mongodb