牛叔叔 的笔记

好好学习

2023-01-31 12:32

异常值模式--MongoDB数据模型设计模式

牛叔叔

数据库

(475)

(0)

收藏

示例描述

顾名思义,异常值模式主要用以解决超出应用程序正常模式的少数异常查询情况。

假设你正在搭建一个出售图书的电子商务网站,现在需要记录一本书都有哪些用户购买过,一个常见的做法的是将购买的用户标识存储在图书文档中,如下展示:

{
    "_id": ObjectId('6392cecd4dd9624424ad025d'),
    "title": "三国演义",
    "author": "罗贯中",
    "purchase_customers": [
        "user0",
        "user1",
        "user3",
        // ...
    ]
}



对于上述的文档结构,大部分情况下是适用的。但是,对于销量特别高的图书,极可能导致图书文档的大小超过 16MB 的限制。

使用异常值模式的方式是:在图书文档中添加一个字段来将其标记为异常值,超过一定大小的内容可以存储在另一个文档当中,在应用程序中对异常文档做扩展查询处理,减少异常文档对正常文档的影响。

优缺点

异常值模式的优点如下:

  • 防止整个应用被某些异常的文档或请求所影响

  • 请求会针对那些典型的用例进行优化,而异常值仍将得到处理

异常值模式的缺点如下:

  • 通常会为特定的查询而进行定制,因此一些临时产生的查询可能性能不太理想

  • 此模式的大部分工作是在应用程序代码中完成的


0条评论

点击登录参与评论