Database design 如何在NDB/Google云数据存储中构造数据

Database design 如何在NDB/Google云数据存储中构造数据,database-design,google-cloud-datastore,Database Design,Google Cloud Datastore,我需要一些关于如何在NDB中构造一些数据的帮助。我有一个合理数量的财务数据(尽管我怀疑有些人会称之为小数据),我希望能够存储这些数据以向我的用户展示 每个项目(可能)都有多个成本中心,每个成本中心都有多个任务,每个交易周期(每年12个)都有支出 我相信这个结构是合乎逻辑的,但我想在构建它之前检查一下: 项目->成本中心->任务->交易 其中,任务是交易的父项,成本中心是任务的父项等 这合乎逻辑吗?考虑到每个月都会增加几千笔新交易,我不想让自己陷入一个低效的结构中 更新: 我考虑的是效率,即创造一

我需要一些关于如何在NDB中构造一些数据的帮助。我有一个合理数量的财务数据(尽管我怀疑有些人会称之为小数据),我希望能够存储这些数据以向我的用户展示

每个项目(可能)都有多个成本中心,每个成本中心都有多个任务,每个交易周期(每年12个)都有支出

我相信这个结构是合乎逻辑的,但我想在构建它之前检查一下:

项目->成本中心->任务->交易

其中,
任务
交易
的父项,
成本中心
任务
的父项等

这合乎逻辑吗?考虑到每个月都会增加几千笔新交易,我不想让自己陷入一个低效的结构中

更新: 我考虑的是效率,即创造一些易于使用的东西,而不是处理能力方面的效率。我确信谷歌拥有强大的实力,但我想通过使数据易于处理来帮助自己

在上面的示例中,我希望向用户显示一个项目支出表,按
成本中心
分组,然后按
任务
分组,以
交易周期
作为列标题-非常类似于透视表。我想知道,如果有多个级别,并且担心访问层次结构上下的信息,或者有一个级别具有更多属性,但分配给项目的事务量很大,那么这会更容易吗?

我认为这为NoSQL设计提供了一个重要的范例

“作为应用程序状态引擎的超媒体”是RESTful体系结构的核心原则

基本上,我建议您从编写实体属性的角度考虑,这些实体属性不仅仅是被动数据,而且实际上为API用户提供了一组代码片段或URI片段,这些片段共同回答了一个问题:“好的,我可以如何处理这些数据?”

给定一种特殊的类型,您将有一个这种特殊的实体,按名称而不是id存储,其属性用于记录使用这种类型可以完成的事情

因此,例如,如果您将“task”作为一种类型,那么您将有一个特殊的“task”类型的实体,由“name=usageTask”存储,属性lookUpCostCenter包含请求主体的JSON模板,用于获取任何“task”实体的“成本中心”

这可能是一个微不足道的例子,但希望它能澄清问题


我的观点是,HATEOAS可以作为传统RDBMs关系完整性机制的强大替代品。

这在很大程度上取决于数据存储的用途。你确定需要优化此数据存储吗?2000是一个非常小的事务量。我想我考虑的是在创造性方面的效率在处理能力方面,我确信谷歌拥有强大的能力,但我想通过使数据易于处理来帮助自己。在上面的例子中,我想向用户显示一个项目支出表,按成本中心、任务、交易和tradin进行分组g句点作为列标题-很像透视表。我想知道是有多个级别更好,还是有一个级别具有更多属性更好?