DAY30 MongoDB 使用经验分享 & 完赛

DAY30 MongoDB 使用经验分享 & 完赛

终於来到铁人赛的最後一天了,今天不讲太多技术细节,纯粹是一些浅薄经验分享。

在赛前初步规划大纲时,发现有两个项目放不进去 30 天内,分别是 Data ModelingSharding。想了一下观念性的东西看的人少很多,有使用到 sharding 也是,所以乾脆不放在这次的铁人赛内,之後会在个人部落格那边补完。Time series collection这个功能会写进入,纯粹是网路上几乎找不到相关文章,可能也是刚发布的功能,但秉持着学习精神,还是占用一天的篇幅分享内容。

这 30 天内介绍了:

  • 基础的观念
  • 安装与工具
  • 基础操作
  • 进阶操作
  • 日常维运
  • 系统监控

应该能够帮助大家预先面对各种情境,甚至是架构规划的注意事项。


每个工具都有优缺点,我曾遇过几个特别苦手的项目,但这边不会称为,因为使用情境不同、资料量级也差异很大,因此不见得您会遇到。

  1. 分页功能
    使用大家常推荐的 SORT、LIMIT 方式绝对会爆炸的,一个查询绝对超过两三秒

  2. 副本集资料抄写
    大流量下会遇到 oplog 逐渐满载的情况,主要是 replace 占用更多空间,但会使用 replace 是因为效能更胜 update。不过在这次铁人赛的测试中,发现五版之後的 oplog 抄写速度快很多,也许以後这不会是问题XD

  3. 大量资料统计
    同样,想要做成报表系统,会需要计算 数量、不重复数量、总和 等,这也是即时查询做不出来的

以上三点不是都没有解法,只是想特别提醒在千万级以上都会卡住,要特别先规划解法。


我的使用经历是从 关联式 -> 非关联式,直接学习非关联式会少了很多包袱,但不得不说 MongoDB 还是有很多从关联式的概念演化而来的,所以还是没接触过资料库的人,我还是推荐先学习关联式资料库。关联式资料库的基本概念都是共通的,可以从 postgreSQL、MySQL、mariaDB 这些来使用,比起大厂牌来得轻巧非常多,安装方式也简单。

至於该用哪一种资料库,你必须更熟悉每一种资料库的特性,以及该资料库在商业需求内扮演的角色,我要强调的是没有最强的XX,只有最适合的XX,这句话很多地方都适用。像 MongoDB 强项在哪?刚开始有说,足够弹性、轻巧以及垂直水平扩展容易,价钱便宜也算是优势XD 那缺点在哪?个人经验来说,交易一致性的效能吧!特别是跨集合(Collection),甚至是跨模组等级,效能会弱势不少,但我只能说,没必要硬要拿自己弱点去强打别人优势项目。

最後谢谢各位读者、iThome平台以及帮助我、教导我的人们。

本系列文章仍旧会同步发表於我个人的部落格 Pie Note


<<:  [Day 15] 在Arduino IDE中用Arm CMSIS 牛刀小试一下

>>:  DAY 18- 杂凑函数 SHA-256

26. 如何淘汰万年遗毒的code

前言 这篇文章适合给那些要处理Legacy System(旧系统)的朋友们看,如果你们团队有系统的...

Nice day 29 (iphone10s 功能挖掘)-好用捷径介绍

前言 随着时间的流逝,整个活动也接近了尾声,但在真正结束前都还是要好好地发表,今天笔者想为各位介绍一...

使用工具测试

这次我是要使用node.js来学习爬虫。为什麽会用node.js呢?一开始我看许多人是用python...

< 关於 React: 开始打地基| 图片的使用方式 >

React 图片显示 ?引入图片(svg)-背景图片 只需要将图片放到 public目录下 然后以此...

认识CSS(六):CSS border边框

透过broder的语法可以让边框做多样化的设计变化, 边框的粗细、颜色、样式等数性质都可设定。 CS...