mongodb(來自于英文單詞“humongous”,中文含義為“龐大”)是可以應用于各種規模的企業、各個行業以及各類應用程式的開源資料庫。基于分布式檔案存儲的資料庫。由c++語言編寫。旨在為web應用提供可擴充的高性能資料存儲解決方案。mongodb是一個高性能,開源,無模式的文檔型資料庫,是目前nosql資料庫中比較熱門的一種。
mongodb是一個介于關系資料庫和非關系資料庫之間的産品,是非關系資料庫當中功能最豐富,最像關系資料庫的。他支援的資料結構非常松散,是類似json的bjson格式,是以可以存儲比較複雜的資料類型。mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似于面向對象的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
傳統的關系資料庫一般由資料庫(database)、表(table)、記錄(record)三個層次概念組成,mongodb是由資料庫(database)、集合(collection)、文檔對象(document)三個層次組成。mongodb對于關系型資料庫裡的表,但是集合中沒有列、行和關系概念,這展現了模式自由的特點。
mongodb中的一條記錄就是一個文檔,是一個資料結構,由字段和值對組成。mongodb文檔與json對象類似。字段的值有可能包括其它文檔、數組以及文檔數組。mongodb支援os x、linux及windows等作業系統,并提供了python,php,ruby,java及c++語言的驅動程式,社群中也提供了對erlang及.net等平台的驅動程式。
mysql的适合對大量或者無固定格式的資料進行存儲,比如:日志、緩存等。對事物支援較弱,不适用複雜的多文檔(多表)的級聯查詢。文中示範mongodb版本為3.4。
spring boot對各種流行的資料源都進行了封裝,當然也包括了mongodb,下面給大家介紹如何在spring boot中使用mongodb:
pom包裡面添加spring-boot-starter-data-mongodb包引用
多個ip叢集可以采用以下配置:
dao層實作了userentity對象的增删改查
可以使用工具mongovue工具來連接配接後直接圖形化展示檢視,也可以登入伺服器用指令來檢視
1.登入mongos
bin/mongo -host localhost -port 20000
2、切換到test庫
use test
3、查詢userentity集合資料
db.userentity.find()
根據3查詢的結果來觀察測試用例的執行是否正确。
到此springboot對應mongodb的增删改查功能已經全部實作。
在多mongodb資料源的情況下,我們換種更優雅的方式來實作
添加lombok和spring-boot-autoconfigure包引用
lombok - 是一個可以通過簡單的注解形式來幫助我們簡化消除一些必須有但顯得很臃腫的java代碼的工具,通過使用對應的注解,可以在編譯源碼的時候生成對應的方法。簡單試了以下這個工具還挺好玩的,加上注解我們就不用手動寫 getter\setter、建構方式類似的代碼了。
spring-boot-autoconfigure - 就是spring boot的自動化配置
封裝讀取以mongodb開頭的兩個配置檔案
配置不同包路徑下使用不同的資料源
第一個庫的封裝
第二個庫的封裝
讀取對應的配置資訊并且構造對應的mongotemplate
兩個庫的配置資訊已經完成。
借助lombok來建構對象
對應的repository
繼承了 mongorepository 會預設實作很多基本的增删改查,省了很多自己寫dao層的代碼
secondary和上面的代碼類似就不貼出來了
到此,mongodb多資料源的使用已經完成。
<a href="https://github.com/ityouknow/spring-boot-starter">示例代碼</a>
作者:純潔的微笑
版權歸作者所有,轉載請注明出處