终於鼓起勇气要报名 iThome 铁人赛!
本系列将会陆续介绍与纪录在使用 MongoDB 的一些心得以及雷区。MongoDB 在 2021 已经是家喻户晓的资料库了,网路上教学资源也很多,我会分配多一些内容在中文资源较少的部分,让大家能够更容易学习到更多不同面向的 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
的。
要了解、使用 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
前言 这篇文章主要会提到资料分组 会继续利用kaggle上的开源资料进行更多的pandas练习 Ka...
霓虹灯文字 教学原文参考:霓虹灯文字 这篇文章会介绍在 GIMP 里使用选取、选取边框、填色、文字、...
今天来稍微简单介绍一下区块链的技术介绍。 我们可以谈谈为什麽区块链可以储存数据,不用害怕被篡改,就是...
好的,我们已经完成了一次上去一个照片,那如果使用者有好几张照片呢? 他可能会希望多给几张照片的话,...
嗨各位,我是 Robin 今天想跟大家分享如同标题, 到底什麽是 Chrome Extension?...