使用多模型数据库建模数据

大多数开发人员已经断断续续的关系建模,并且在以非关系方式模拟数据时,必须做出一个非平凡的精神飞跃。这本身就很难,但是当您使用的数据存储实际上具有多模型功能时会发生什么?作为一个行业,我们看到越来越多的数据库采用这种方式,并提供多种模型来存储和查询数据,作为其核心性质的一部分。例如,ArangoDB,CosmosDB,Couchbase,当然还有RavenDB。

例如,RavenDB为您提供了以下模型:

  • 文档(JSON) - 具有接受读写的任何节点的多主机。
    • 多个文件的ACID交易。
    • 简单/全文查询。
    • 映射/减少和聚合查询。
  • 二进制数据 - 文档附件。
  • 计数器(Map <string,int64>) - CRDT多主分布式计数器。
  • 键/值 - 通过Raft协议实现强大的分布式一致性。
  • 图形查询 - 在文档模型之上。
  • 修订 - 文档的内置审计跟踪

有了这么多选项,当您需要为数据建模时,为工作选择合适的工具可能会令人困惑。在这篇文章中,我的目标是了解RavenDB提供的选项,并指导您做出最佳选择。

您将使用的默认和最常见的模型将是文档模型。它是最适合业务数据的一种,您通常会遵循域驱动设计方法来建模数据和实体。换句话说,我们讨论的是Aggregates,其中每个文档都是一个整体。实体之间的引用要么完全是聚合(和文档)的本地,要么只是聚合之间。换句话说,一个文档中的值不能指向另一个文档中的值。它只能指向另一个文档。

您的大部分业务逻辑都将集中在汇总级别上。即使单个事务修改多个文档,大多数业务逻辑也是在每个聚合上独立完成的。处理这种情况的一个好方法是使用域事件。这允许您组成域逻辑的独立部分,而无需将其全部绑定在一个大结中。

到目前为止,我们讨论过修改文档,但是您对数据执行的大部分操作都是查询并将其呈现给用户。在这些情况下,您需要做出有意识和明确的决定。无

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值