gpt4 book ai didi

java - 在低级数据存储 API 中处理一对多关系的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 08:51:46 24 4
gpt4 key购买 nike

我已经在 J​​ava 中使用 App Engine 的低级数据存储区 API 一段时间了,我正在尝试找出处理一对多关系的最佳方法。想象一下一对多的关系,例如“任何一名学生可以拥有零台或多台计算机,但每台计算机都由一名学生拥有”。

这两个选项是:

  • 让学生实体存储与学生关联的计算机的 key 列表
  • 让计算机实体存储拥有该计算机的学生的单个 key

我感觉选项二更好,但我很好奇其他人的想法。

选项一的优点是您可以在不使用查询的情况下获取所有“许多”。人们可以使用 get() 向数据存储区询问所有实体并传入存储的键列表。这种方法的问题在于,您无法让数据存储对 get() 返回的值进行任何排序。您必须自己进行排序。另外,您必须管理一个列表而不是单个 key 。

选项二似乎不错,因为没有要维护的列表。此外,您还可以按计算机的属性进行排序,只要它们是该属性的索引即可。想象一下,尝试为一名学生获取所有计算机,其中结果按购买日期排序。使用方法二,这是一个简单的查询,我们的代码中没有进行排序(数据存储区的索引负责处理它)

排序并不难,但比排序索引(遍历索引的〜O(n))更耗时(排序为~O(nlogn))。权衡是处理时间的索引(数据存储中的空间)。正如我所说,我的直觉告诉我,选项二是一个更好的通用解决方案,因为它为开发人员提供了更多的灵 active ,以额外的索引为代价按顺序返回结果(使用谷歌定价模型相当便宜)。有人同意、不同意或有意见吗?

最佳答案

两种方法在不同的情况下都有效,尽管选项二 - 在“多”端存储单个引用 - 是更常见的方法。您使用哪一种取决于您需要如何访问数据。

关于java - 在低级数据存储 API 中处理一对多关系的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com