我应该将我的关系数据存储在 MongoDB 中吗?
鉴于我的独特情况(如下所述)的任何见解将不胜感激!与任何项目一样,我的资源极为有限。我希望以尽可能少的成本提高性能。:)
背景
- 我正在开发一个具有广泛而复杂的数据模型的项目。
- 84 个主表
- 44 个视图进入辅助表
- 主要项目类型的 60 万个实例
- 500,000,000+ 元组支持 600k 主要项目
- 该模型被很好地标准化,并且经过深思熟虑。
- 许多项目已被非规范化以提高性能。
- 我们的数据访问层使用 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 作为一个整体来阅读,而不会出现与规范化存储相关的连接或性能下降。
尽管它实际上是关系数据,但将我的数据存储在基于文档的数据库中是否合理?!
相关阅读