For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
我们在前几期的文章中给大家分享了程序员在开发软件的时候会用到的一些软件开发工具等内容,而本文我们就继续来学习一下,数据模型类型与优缺点分析。
计算模式
示例描述
对于大型数据集,每一次计算都可能会占用极大的CPU、磁盘、内存等相关资源,甚至是影响到服务器上的其他计算。
而对于需要重复计算、读取比写入多的场景,计算模式提供了一种优化的思路,以便降低服务器资源的占用。
拿一个电影观看总人数的例子来说明:假设现在页面上需要展示观看电影的实际总人数,而且这个页面会有成千上万的人访问。
虽然,我们可以对电影的每一次放映都记录起观看人数,但是要获取总人数,则需要拿出所有的放映场次的观看人数之后计算其总和,这个计算就非常耗费资源和时间。
对于只有放映场次变化之后,总人数才会更新的情况,实际数据库读取的次数远远大于写入的次数。
MongoDB的计算模式
在这个场景中,计算模式的思路是:每一次更新放映场次数据的时候,将这个放映场次的人数汇总到一个文档当中,这个文档直接面向用户的查询。
优缺点
计算模式的优点如下:
对于频繁的计算可以减少CPU的负载
查询变得更容易编写,而且通常更快
计算模式的缺点如下:
识别出需要使用此模式的的场景可能比较困难
除非必要,请勿过度使用此模式
文档版本控制模式
示例描述
文档版本控制模式在高度规范化的行业中非常有用,这些行业会要求数据的特定时间点版本。
假设现在有一个博客系统,其中有一个记录每次编辑博客文章历史的功能,这样的功能就能应用文档版本控制模式。
假设我们将所有的文章历史都存储在同一个集合当中,则需要考虑大部分与文章相关的功能都要过滤掉历史版本、版本越多则集合文档数量越多等等问题。
文档版本控制模式的想法是:文档中需要记录一个文档的版本,将新的文档保存在一个current集合中,而那些旧版本的文档保存在history集合中。
为了大化利用文档版本控制模式的优势,通常会假设数据访问模式尽量符合以下要求:
每个文档不会有太多的修订版本
需要做版本控制的文档不会太多
大多数的查询都是基于文档的新版本
优缺点
文档版本控制模式的优点如下:
容易实现,对现有系统的影响小
在新版本上进行请求时,没有性能上的影响
文档版本控制模式的缺点如下:
写操作的数量会翻倍
请求需要被定位到正确的集合
扩展引用模式
示例描述
MongoDB是一个不需要提前建模的NoSQL,当不同文档、不同集合之间存在关系的时候,通常会有嵌入和引用两种方式。
嵌入就是将文档数据嵌入到引用此数据的文档中,访问时直接访问这一次文档即可;引用就是只在文档中引用另一个文档的标识,访问时需要访问两次数据库才能拿到完整的数据。
扩展引用模式是指仅复制经常访问并且不经常更改的字段,而不是复制所有的数据,减少信息的连接以提高性能。
扩展引用模式引用数据
这张图的场景是:客户和订单是1对N的关系,通常查询订单列表的时候需要展示客户的一些信息,我们就需要考虑是否将客户的信息冗余进订单信息中。
扩展引用模式认为,客户的名称和地址是不常做更新的,可以直接将这些信息冗余进订单表中,以达到减少两个集合连接查询的要求。
优缺点
扩展引用模式的优点如下:
当有大量的JOIN操作时可以提升性能
读操作会更快,并且可以减少JOIN操作的数量
扩展引用模式的缺点如下:
修改冗余的这部分数据会比较复杂
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。