使用MongoDB前你需要知道的事情
隨著網站內容越來越豐富的情況下,為了更方便的對資料進行管理,通常都會搭配資料庫的方式來開發。一般的資料庫都會具備著新增, 讀取, 刪除, 更新等功能,也就是俗稱的CRUD。
目前資料庫主要分成了兩大派系:關聯式資料庫(RDBMS)與非關聯式資料庫(NoSQL)。
關聯式資料庫(RDBMS) v.s 非關聯式資料庫(NoSQL)
關聯式資料庫(RDBMS)
在關聯式的資料庫(RDBMS)中, 都存在著所謂的Schema。在要新增資料前,就必須預先定義好表格中的格式,以後新增資料時,就必須按照當初建立好的表格來新增資料。舉例來說,今天要建立一個書本的表格,裡面可能就會有頁數, 標題, 內文這三個欄位。在新增書本的時候,就只能照定義好的欄位來填入對應的資料。
但今天,如果未來新增書本時,希望可以再多加銷售數量的欄位,就必須要修改整個表格的Schema,才能夠做這個修改,雖然比較嚴謹的要求下,比較不會發生資料不一致的情況,但也在修改表格時,帶來了一些不便。
目前市面上比較常見的關聯式資料庫有: MySQL, PostgreSQL, MS SQL
非關聯式資料庫(NoSQL)
在非關聯式資料庫(NoSQL)中,取消了關聯式資料庫的Schema的限制,在預設的情況下,會將資料儲存為 JSON的方式。在遇到未來的某些資料需要有不同的欄位時,就能夠省略Schema的限制,直接針對那筆資料進行欄位的新增。
目前市面上比較常見的關聯式資料庫有: MongoDB
MongoDB的特色
- 水平擴充:藉由新增節點的方式,提高MongoDB的儲存空間與效能。
- 高可用性:同一筆資料會寫入到多個節點上,預防單個節點故障。
- 設計靈活:不需要預先將Schema定義好。隨時可以修改。
- 讀取快速:寫入資料時在記憶體完成即回傳寫入成功的資訊,藉由非同步機制寫入硬碟。
可以選擇MongoDB的應用場景
- 在Schema還未完全明朗時可以藉由NoSQL的高彈性快速製作出成品
- 資料彼此之間的關聯沒有那麼複雜
- 藉由MongoDB進行部分資料的讀取,分散關聯式資料庫的負載
- 讀取Json格式為主的應用程式
MongoDB在不同雲端平台的好處與壞處
AWS
- 提供quick start的方式,快速方便且靈活的方式部署MongoDB
- 可以藉由AWS CloudFormation templates來自動化部署
GCP
- 可以與Cloud Key Management Service (KMS)整合,將私密的資訊存入KMS中
- 可以與Cloud Provider Snapshots 整合快速進行還原
使用MongoDB前你需要知道的事情
隨著網站內容越來越豐富的情況下,為了更方便的對資料進行管理,通常都會搭配資料庫的方式來開發。一般的資料庫都會具備著新增, 讀取, 刪除, 更新等功能,也就是俗稱的CRUD。
目前資料庫主要分成了兩大派系:關聯式資料庫(RDBMS)與非關聯式資料庫(NoSQL)。
關聯式資料庫(RDBMS) v.s 非關聯式資料庫(NoSQL)
關聯式資料庫(RDBMS)
在關聯式的資料庫(RDBMS)中, 都存在著所謂的Schema。在要新增資料前,就必須預先定義好表格中的格式,以後新增資料時,就必須按照當初建立好的表格來新增資料。舉例來說,今天要建立一個書本的表格,裡面可能就會有頁數, 標題, 內文這三個欄位。在新增書本的時候,就只能照定義好的欄位來填入對應的資料。
但今天,如果未來新增書本時,希望可以再多加銷售數量的欄位,就必須要修改整個表格的Schema,才能夠做這個修改,雖然比較嚴謹的要求下,比較不會發生資料不一致的情況,但也在修改表格時,帶來了一些不便。
目前市面上比較常見的關聯式資料庫有: MySQL, PostgreSQL, MS SQL
非關聯式資料庫(NoSQL)
在非關聯式資料庫(NoSQL)中,取消了關聯式資料庫的Schema的限制,在預設的情況下,會將資料儲存為 JSON的方式。在遇到未來的某些資料需要有不同的欄位時,就能夠省略Schema的限制,直接針對那筆資料進行欄位的新增。
目前市面上比較常見的關聯式資料庫有: MongoDB
MongoDB的特色
可以選擇MongoDB的應用場景
MongoDB在不同雲端平台的好處與壞處
AWS
GCP