0

我应该将我的关系数据存储在 MongoDB 中吗?

鉴于我的独特情况(如下所述)的任何见解将不胜感激!与任何项目一样,我的资源极为有限。我希望以尽可能少的成本提高性能。:)

背景

  1. 我正在开发一个具有广泛而复杂的数据模型的项目。
    1. 84 个主表
    2. 44 个视图进入辅助表
    3. 主要项目类型的 60 万个实例
    4. 500,000,000+ 元组支持 600k 主要项目
  2. 该模型被很好地标准化,并且经过深思熟虑。
  3. 许多项目已被非规范化以提高性能。
  4. 我们的数据访问层使用 Hibernate for ORM。

问题陈述

Hibernate 将 84 个表 + 44 个视图连接在一起,将主数据项映射在一起(我将主数据项称为 THEObject)。这种结构非常昂贵(单个 Oracle 数据库节点)。组装 THEObject 及其子项可能需要几分钟。

THEObject 实例之间共享的数据非常少。共享的数据主要是只读的(用户数据之类的东西,对一般配置的引用......)

保存 THEObject 也非常昂贵。

作为一个附带项目,我创建了一组 bean 来表示 THEObject 的数据,将数据从昂贵的 THEObject 实例复制到 bean 中,然后使用 xstream 将 bean 序列化为 XML。从 THEObject 到 bean 的转换、bean 的序列化以及表示 bean 的 XML 的存储仅用了 26 毫秒。(在我们的关系表示上使用休眠将 THEObject 保存回来所需的 6 分钟还很远​​)。哦

我认为基于 Document 的数据库会更好地为我的应用程序提供服务,因为我使用的数据有 3 种主要块类型(思维集合),代表 THEObject 的块共享来自其他主要块的 2 个数据,但不共享THEObject 的其他实例中的任何它自己的数据。这将允许我将 THEObject 作为一个整体来阅读,而不会出现与规范化存储相关的连接或性能下降。

尽管它实际上是关系数据,但将我的数据存储在基于文档的数据库中是否合理?!

相关阅读

为什么我应该使用基于文档的数据库而不是关系数据库?

非关系型数据库设计

MongoDB 与 Cassandra

什么是 NoSQL,它是如何工作的,它有什么好处?

4

0 回答 0