DAY1 揭开序幕与 MongoDB 简介

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


<<:  Day 1 - 课程大纲

>>:  html的开始、让网页出现文字

{DAY 22} Pandas 学习笔记part.8

前言 这篇文章主要会提到资料分组 会继续利用kaggle上的开源资料进行更多的pandas练习 Ka...

Day20 霓虹灯文字

霓虹灯文字 教学原文参考:霓虹灯文字 这篇文章会介绍在 GIMP 里使用选取、选取边框、填色、文字、...

[区块链&DAPP介绍 Day2] 区块链技术介绍

今天来稍微简单介绍一下区块链的技术介绍。 我们可以谈谈为什麽区块链可以储存数据,不用害怕被篡改,就是...

【day24】上传多张照片(上)

好的,我们已经完成了一次上去一个照片,那如果使用者有好几张照片呢? 他可能会希望多给几张照片的话,...

[拯救上班族的 Chrome 扩充套件] Chrome Extension 是什麽酷东西? 跟着官方做 Hello Extensions

嗨各位,我是 Robin 今天想跟大家分享如同标题, 到底什麽是 Chrome Extension?...