欢迎来到文档型数据库系列解读的第十一期!从本期开始,我们将正式进入文档型数据库模式设计阶段,通过具体的案例作为背景,讲解文档型数据库各种「设计模式」,从而探讨「设计模式」的基本内容、使用场景、实现方式、案例介绍以及模式本身的优点和局限性。本文,我们先对这些「设计模式」进行整体的介绍。
按使用难度及应用场景划分:
鉴于类别、使用难度以及应用场景等多重因素,涉及到以下几种「设计模式」方向:
计算类别(Computation):包含预计算以及如何快速组合数据的几种模式。
分组类别(Grouping):包含将多个文档或文档的部分组合成单个文档的几种模式。
生命周期类别(Lifecycle):包含具有操作的几种模式。这里的操作指的是在系统生命周期的给定时间,在应用程序之外所执行的脚本以及过程。
多态行类别(Polymorphism ):围绕文档模型的多态特性所设计的几种模式。这个特性允许具有不同形态的对象出于各种原因存在于一个集合中。
关系类别(Relationships ):此类模式在文档之间建立简单的嵌入或者引用关系。例如,有的模式可以旋转数据以及对图进行建模。
类别 | 设计模式 |
计算 |
|
分组 |
|
生命周期 |
|
多态性 |
|
关系 |
|
表1:按类别分组的「设计模式」
按难易程度划分:
根据难易程度及使用频率可划分为6个“基础”模式,5个“高级”模式,以及5种“不太常见“的模式,如表2:
难度 | 设计模式 |
基础 |
|
高级 |
|
不太常见 |
|
表2:按难度分组的模型「设计模式」
模型属性
在「设计模式」时,我们会考虑到采用这一「设计模式」是否会引发异常(例如:导致数据重复、不实时或者对引用完整性被破坏)。因此,表3总结了每个模式的属性特征:
设计模式 | 类别 | 模型关系变化 (Yes/No) | 引入异常 (S=some) |
近似值 | 计算 | N | Y |
归档 | 生命周期 | N | N |
属性 | 关系 | Y | N |
桶 | 分组 | Y | N |
计算值 | 计算 | N | Y |
文档版本控制 | 生命周期 | N | N |
信封 | 生命周期 | N | N |
扩展引用 | 关系 | Y | Y |
图 | 关系 | Y | S |
继承 | 多样性 | Y | N |
异常值 | 分组 | Y | N |
预分配 | 分组 | Y | N |
模式版本控制 | 生命周期 | N | N |
单集合 | 多态性 | Y | N |
子集 | 关系 | Y | Y |
树 | 关系 | Y | S |
表3:模型「设计模式」的一些属性。
使用场景介绍
本文通过五个领域(金融服务、电子商务、物联网、客户服务和网站)中每个领域的典型应用场景,从而去更全面的认识每个模式在其发挥的作用,如表4所示:
设计模式 | 金融服务(顾问应用程序) | 电子商务(购物网站) | 物联网(SIM卡) | 客户服务(单一视图) | 网站(电影网站) |
近似值 | 网页计数器 | 连接设备计数器 | 网页计数器 | ||
归档 | 保留文件的审计 | 停产产品 | 保留测定值用于分析 | ||
属性 | 搜索客户信息 | 产品属性 | 可搜索的文档标准 | 选定国家/地区的票房收入 | |
桶 | 每个账户每月的交易 | 一天的测定值 | 每年每个账户的索赔 | 每天的票房收入 | |
计算值 | 日终账户价值 | 每个存储桶的总数和平均数 | 门票销售收入 | ||
文档版本控制 | 更改的审计跟踪 | 上个月的更改 | |||
信封 | 应用迁移 | 应用迁移 | 应用迁移 | 应用迁移 | 应用迁移 |
扩展引用 | 客户资料中的账户 | 订单中的产品 | 测定中的设备 | 保单中的客户 | 电影中的演员 |
图 | 调查个人之间的欺诈性交易 | 多类别产品层次结构 | |||
继承 | 分组不同的信贷产品 | 分组不同类型的产品 | 分组不同制造商的SIM卡 | 分组政策 | 分组电影和电视节目 |
异常值 | 额外列表 | ||||
预分配 | 与顾问预约会议 | 一天的测定值 | 影院的座位 | ||
模式版本控制 | 应用程序更新 | 应用程序更新 | 应用程序更新 | 应用程序更新 | 应用程序更新 |
单集合 | 购物车 | 用户个人资料、政策、索赔和消息 | |||
子集 | 账户中的最后交易 | 产品测评 | 设备最近报告的数据 | 客户交互的日志 | 电影评价 |
树 | 银行位置组织 | 产品类别 | 设备所在区域组织 | 影院位置组织 |
表4:设计模式、用例和场景
总结
文档型数据库通过基于JSON的数据存储格式,提供其灵活性、高性能和开发效率,成为当今数据库领域备受关注的技术之一,文档型数据库成功地应对了多样化和变化频繁的数据需求。选择巨杉文档型数据库,可以帮助企业提升开发人员的程序开发效率,而在设计时遵循「设计模式」的最佳实践,可以帮助企业更有效地提升整体业务性能,并长期管理数据的有效性。




