MongoDB文档数据库设计决策

MongoDB文档数据库设计决策,mongodb,document-database,Mongodb,Document Database,开始使用文档DBs时,我有一个关于设计决策的问题。 我将插入包含许多天的金融交易的数据。 我不确定是否应该将每个事务都制作为一个文档,或者为所有数据制作一个文档,这将涵盖很多天 该应用程序的主要用途是以多种方式分析数据,包括特定的日期和日期范围 在作出这个决定时有哪些考虑因素 如果您希望根据单个交易(即按产品id、价值、买家、日期等进行切割)报告和分析数据,那么理想情况下,这将是文档类型,允许根据需要编制索引。如果您只创建一个事务列表的文档类型,我认为mongo将很难在索引方面为您提供更多帮助。

开始使用文档DBs时,我有一个关于设计决策的问题。 我将插入包含许多天的金融交易的数据。 我不确定是否应该将每个事务都制作为一个文档,或者为所有数据制作一个文档,这将涵盖很多天

该应用程序的主要用途是以多种方式分析数据,包括特定的日期和日期范围


在作出这个决定时有哪些考虑因素

如果您希望根据单个交易(即按产品id、价值、买家、日期等进行切割)报告和分析数据,那么理想情况下,这将是文档类型,允许根据需要编制索引。如果您只创建一个事务列表的文档类型,我认为mongo将很难在索引方面为您提供更多帮助。

数据库的设计应该反映您的软件层将要执行的功能。MongoDB应该尽可能少地将结果返回到应用程序,因此在运行查询时,以一种尽可能不需要重塑的方式对数据进行建模是理想的。当您想从许多不同的角度处理数据时,这可能会很棘手。根据我的经验,即使使用最通用的数据集,也总会有一些字段比其他字段查询得更频繁。对于财务数据,我猜这可能是一个时间范围,也可能是一个人/组织。这些是您希望按和/或索引对数据进行分组的字段。对于一个真正的通用数据模型,我可能只需要为每个事务创建一个文档,对事务日期进行降序索引(以便更快地返回最近的事务),然后尽可能具体地对所有关键字段进行索引

您需要根据需要的查询构造文档。