iT邦幫忙

2021 iThome 鐵人賽

DAY 1
1
Software Development

MongoDB披荊斬棘之路系列 第 1

DAY1 揭開序幕與 MongoDB 簡介

  • 分享至 

  • xImage
  •  

DAY1 揭開序幕與 MongoDB 簡介

前言

終於鼓起勇氣要報名 iThome 鐵人賽!
本系列將會陸續介紹與紀錄在使用 MongoDB 的一些心得以及雷區。MongoDB 在 2021 已經是家喻戶曉的資料庫了,網路上教學資源也很多,我會分配多一些內容在中文資源較少的部分,讓大家能夠更容易學習到更多不同面向的 MongoDB,如有錯誤或者問題請不吝指教。


大綱

基礎

進階


使用環境

我使用的環境是

  • macOS
  • .NET Core
  • Docker

要如何在這些環境使用,會簡單的說明,主軸畢竟還是在 MongoDB。

MongoDB 簡介

MongoDB,是 NoSQL 資料庫的一種,時至今日大部分 RDBMS 功能都有支援。剛開始的語法轉換上會是一個門檻,但更重要的是底層設計概念的不同。在維運工具方面,傳統的老牌 Oracle / MSSQL 還是有更強大的支援,不過 MongoDB 的成長性以及變革速度非常快,尤其 5.0 之後的版本釋出的步伐會更緊湊(嗯~官方是這樣宣稱的),很值得期待!

MongoDB 的特點是文件式資料儲存,這可說是相當於關聯式資料庫的一個 table,而每個文件都不需要長得一樣,具備了高度的彈性,與關聯式資料齊頭式欄位大小的概念就不同。因為允許資料格式的不同,在設計上就能有效避免多表關聯的部分(table join),減少關聯複雜度。

這邊我會避免使用 優點 是因為某些情境或使用習慣下,並不是優點反而是缺點,但輕量、彈性與便利是很具有競爭力的。

這裡使用的文件(document)是使用 BSON 格式儲存的,BSON 即為 binary json 的意思,傳統 json 支援的格式太少,透過 BSON 儲存後能夠支援相當多的資料類型,在之後會講得更細。雖然是 BSON 格式,但是呈現上與 JSON 可以說是幾乎一模一樣,如下範例。

{
   "name":"movieA",
   "language":"en-gb",
   "rating":8,
   "totalCost":30000000,
   "producer":"companyA"
}

對於文件格式的規範大致上與 JSON 是一樣的,但要記得是 case sensitive 的。

Terminology

要了解、使用 MongoDB 要先對術語有所了解,講錯了會被誤會是不是太少用 MongoDB。

SQL Terms MongoDB
table collection
row(record) document
column field
join lookup
where match
select project

其他沒有列出來的就是術語一致,一次列出太多不僅記不起來,這東西也不是靠死背就能活用,主要還是伸手下去淌這渾水,把手弄髒才能體會。

除了一般的 document 外,還有 embedded document (或稱 nested document),意思是在文件內的某個欄位,再定義一層,繼剛剛上面例子。

{
  "name": "movieA",
  "language": "en-gb",
  "rating": 8,
  "totalCost": 30000000,
  "producer": {
    "company": "Bill Film Industry",
    "pic": "Bill Fates"
  }
}

不需要太擔心效能問題,因為在 embedded document 的欄位也能夠建立 index,這些在後面的章節會再陸續提到。今天就先有個初步了解即可。


本系列文章會同步發表於我個人的部落格 Pie Note


下一篇
DAY2 安裝與使用 MongoDB
系列文
MongoDB披荊斬棘之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言