今天学习《18 | 设计模式集锦》,主要讲了列转行、版本字段、近似计算、预聚合四个文档设计模式和它的应用场景。干货不少。设计模式
以存储电影信息的文档为例,由于各个国家的首映时间不一样,咱们的最简单的想法可能为了统计方便,会每增长一个上映地点,就增长一个统计字段,而后再给这个字段建一个索引。这样统计查询的速度是快了,可是系统写入的效率却降低了。
那么怎么解决这个问题呢?采用内嵌数组的方式来组织数据,减小字段数量。而后经过创建内联索引来解决查询的问题。数组
文档模型的优点就是能够灵活的组织数据,可是面临的问题,就是到底何时对文档进行了更改,没办法直观的看出来。
怎么解决这个问题呢?加个版本字段。这样就能够直观看出来,当前文档是什么版本,当前这个版本的文档与上一个版本有什么区分,也方便升级。学习
要对一个页面的点击量进行统计,也就是埋点每点击一次,就更新一下统计数据,但一般咱们的统计并非要求很是精确的。这样形成的问题就是,系统大部分压力都产生在更新点击数量上了。
怎么解决?使用近似计算,也就是原来我是每点击一次就更新一下,调整为每隔N次,好比10次更新一下数据。spa
这个模式与上个相比就是要求统计精确的数据。好比销售业绩,游戏排名等,这样的,咱们基本就是经过聚合计算来进行数据的汇总。但这样形成的问题就是每次统计都会形成系统计算压力过大。
怎么解决?将统计分解到文档中,也就是给文档预置统计字段,每次更新都更新一下统计数据,减小集中统计时候的系统压力。设计
今天课程就是讲解了这4个模式,看起来很简单,但想要用好,确实须要多多思考。明天开始事务的学习。3d