To-Do Calendar - Day12 串接 MongoDB 資料庫

接下來要進行設定在 Spring Boot 專案中連接 MongoDB 資料庫的部分。

MongoDB 是什麼?

MongoDB 是面向文檔的開源資料庫,以 BSON 的形式儲存文件(BSON 是 JSON 的二進位制表現形式),是一種靈活、易於擴展、高效能的 NoSQL 資料庫,MongoDB 旨在為 web 應用提供可擴展的高性能數據存儲解決方案,它提供了可以跟 SQL 相比的 Query Language(查詢語言),由 C++ 語言編寫而成。MongoDB 從 4.0 開始支援多文檔交易(Transactions),這是 MongoDB 一個革命性的里程碑。

非關聯式資料庫(NoSQL)

非關聯式資料庫(NoSQL)的意思是「Not Only SQL」,指的是不限定為關聯式資料庫的資料庫管理系統,以混用關聯式資料庫和非關聯式資料庫來達到最佳的儲存效果。NoSQL 資料庫沒有 Schema 架構,也就是所謂的 Schema-Free,可自由定義資料文件(Document)的結構,以及自由新增欄位。

MongoDB與RDBMS的架構比對

image

MongoDB的基本概念

  1. Database
    • MongoDB的單個實例 (mongod),可以容納多個獨立的資料庫,每一個都有自己的集合和權限。
  2. Collection
    • 可包含多筆資料,類似 RDBMS 的表格。
    • 集合沒有固定的結構 (schema-free),可以插入不同類型的資料。
    • 當第一個文件插入時,集合就會自動被創建。
  3. Document
    • 文件是一個鍵值(key-value)對,以JSON格式呈現,使用BSON格式儲存。
    • _id 欄位為必要欄位,可自行定義其值,未定義則由 MongoDB 自行塞入一組 ObjectId。
    • Field中的值可以為陣列、內嵌文件等屬性。
  4. MongoDB 的限制
    • BSON document 的大小上限:每個 BSON document 的大小上限為 16MB(16 megabytes)
    • 嵌入式文件巢狀結構的深度上限:BSON document 的巢狀結構上限為 100 層
  5. 文件欄位名稱的限制
    • _id作為保留欄位,用作主鍵,其值必須唯一、不可變,可以是除了陣列之外的任何型別。
    • 不可以$字元作為開頭。
    • 不可包含點號字元。
    • 不可以是 null 字串。

MongoDB的資料型態

在 MongoDB 裡所儲存的資料有以下幾種資料型態:

  • int
  • long
  • string
  • double
  • decimal
  • boolean
  • date
  • timestamp
  • array
  • null
  • binData:此欄位儲存二進制的資料(binary data)
  • objectId:MongoDB 文件主鍵
  • object:相當於 embedded document,就是文件內的子文件

因為 MongoDB 之前已經下載過,下載教學可參考這篇,可以不裝 MongoDB 的圖形化管理工具,因為這篇開始會使用 IntelliJ 介面來管理資料庫的數據。

設定 IntelliJ 與資料庫連線

  • 點右上方的 Database 標籤
  • 點 + 按鈕 > Data Source > MongoDB
    image
  • 設定 MongoDB 資料庫的連線資訊
  • 點 Download 讓 IntelliJ 去下載相對應的 Driver 檔案
  • 測試連線成功後,就按下 ok
    image

建立資料庫與集合

  • 點 QL 按鈕叫出 MongoDB 的 console
  • 建立資料庫(指定當前資料庫,若不存在則建立新資料庫)
  • 語法:use <資料庫名稱>
    use todoCalendar
    
image
  • 建立 Collection
  • 語法:db.createCollection(<集合名稱>)
    db.createCollection("HabitTrackers")
    
image

後面依序將其他集合也建出來,資料庫相關的前置作業就先到這~

延伸閱讀

參考資料

comments

comments powered by Disqus