【发布时间】:2014-01-01 11:53:01
【问题描述】:
开始使用文档数据库,我有一个关于设计决策的问题。 我将插入包含多日金融交易的数据。 不确定我是否应该将每笔交易都制作为文档,还是为所有数据制作一个文档,这将涵盖很多天。
该应用程序的主要用途是以多种方式分析数据,包括特定日期和日期范围。
做出这个决定有哪些考虑?
【问题讨论】:
-
您需要根据您需要的查询来构建文档。
开始使用文档数据库,我有一个关于设计决策的问题。 我将插入包含多日金融交易的数据。 不确定我是否应该将每笔交易都制作为文档,还是为所有数据制作一个文档,这将涵盖很多天。
该应用程序的主要用途是以多种方式分析数据,包括特定日期和日期范围。
做出这个决定有哪些考虑?
【问题讨论】:
看来,如果您希望根据单个交易(即按产品 ID、价值、买家、日期等)报告和分析数据,那么理想情况下,这将是文档类型,允许根据需要进行索引。如果您创建一个只是交易列表的单一文档类型,我认为 mongo 将很难在索引方面为您提供很多帮助。
【讨论】:
您的数据库设计应反映您的软件层将要执行的功能。 MongoDB 应该尽可能少地做一些工作来将结果返回到您的应用程序,因此以一种在运行查询时需要尽可能少地重塑数据的方式对您的数据进行建模是理想的。当您想从许多不同的角度处理数据时,这可能会很棘手。根据我的经验,即使使用最通用的数据集,也总有一些字段比其他字段被查询得更频繁。对于财务数据,我猜这可能是一个时间范围或一个人/组织。这些是您希望通过和/或索引对数据进行分组的字段。对于真正通用的数据模型,我可能只为每个事务创建一个文档,按降序索引事务日期(因此更快地返回最近的事务),然后尽可能具体地索引所有关键字段。
【讨论】: