终於来到铁人赛的最後一天了,今天不讲太多技术细节,纯粹是一些浅薄经验分享。
在赛前初步规划大纲时,发现有两个项目放不进去 30 天内,分别是 Data Modeling
和 Sharding
。想了一下观念性的东西看的人少很多,有使用到 sharding 也是,所以乾脆不放在这次的铁人赛内,之後会在个人部落格那边补完。Time series collection
这个功能会写进入,纯粹是网路上几乎找不到相关文章,可能也是刚发布的功能,但秉持着学习精神,还是占用一天的篇幅分享内容。
这 30 天内介绍了:
应该能够帮助大家预先面对各种情境,甚至是架构规划的注意事项。
每个工具都有优缺点,我曾遇过几个特别苦手的项目,但这边不会称为坑
,因为使用情境不同、资料量级也差异很大,因此不见得您会遇到。
分页功能
使用大家常推荐的 SORT、LIMIT 方式绝对会爆炸的,一个查询绝对超过两三秒
副本集资料抄写
大流量下会遇到 oplog 逐渐满载的情况,主要是 replace 占用更多空间,但会使用 replace 是因为效能更胜 update。不过在这次铁人赛的测试中,发现五版之後的 oplog 抄写速度快很多,也许以後这不会是问题XD
大量资料统计
同样,想要做成报表系统,会需要计算 数量、不重复数量、总和 等,这也是即时查询做不出来的
以上三点不是都没有解法,只是想特别提醒在千万级以上都会卡住,要特别先规划解法。
我的使用经历是从 关联式 -> 非关联式,直接学习非关联式会少了很多包袱,但不得不说 MongoDB 还是有很多从关联式的概念演化而来的,所以还是没接触过资料库的人,我还是推荐先学习关联式资料库。关联式资料库的基本概念都是共通的,可以从 postgreSQL、MySQL、mariaDB 这些来使用,比起大厂牌来得轻巧非常多,安装方式也简单。
至於该用哪一种资料库,你必须更熟悉每一种资料库的特性,以及该资料库在商业需求内扮演的角色,我要强调的是没有最强的XX,只有最适合的XX,这句话很多地方都适用。像 MongoDB 强项在哪?刚开始有说,足够弹性、轻巧以及垂直水平扩展容易,价钱便宜也算是优势XD 那缺点在哪?个人经验来说,交易一致性的效能吧!特别是跨集合(Collection),甚至是跨模组等级,效能会弱势不少,但我只能说,没必要硬要拿自己弱点去强打别人优势项目。
最後谢谢各位读者、iThome平台以及帮助我、教导我的人们。
本系列文章仍旧会同步发表於我个人的部落格 Pie Note
<<: [Day 15] 在Arduino IDE中用Arm CMSIS 牛刀小试一下
前言 这篇文章适合给那些要处理Legacy System(旧系统)的朋友们看,如果你们团队有系统的...
前言 随着时间的流逝,整个活动也接近了尾声,但在真正结束前都还是要好好地发表,今天笔者想为各位介绍一...
这次我是要使用node.js来学习爬虫。为什麽会用node.js呢?一开始我看许多人是用python...
React 图片显示 ?引入图片(svg)-背景图片 只需要将图片放到 public目录下 然后以此...
透过broder的语法可以让边框做多样化的设计变化, 边框的粗细、颜色、样式等数性质都可设定。 CS...