首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效地检索与一组id的任何元素匹配的实体

高效地检索与一组id的任何元素匹配的实体
EN

Stack Overflow用户
提问于 2010-10-06 15:13:53
回答 1查看 243关注 0票数 1

我正在编写软件,以向许多类别的人提供反馈。例如,我可能有30名员工和40项评估标准(例如“准时到达”、“礼貌”、“似乎在刷牙”等等)。在任意情况下,主管可以提交一条反馈信息,比如"employee 3获得标准8的5/5 (他闻起来很棒)“或"employee 10获得标准12的1/5 (他刚刚称客户为白痴)”。

我的想法是通过保留userId和standardId字段,将这些小反馈单独存储起来,链接到员工和标准。

当我想看看所有30名员工和40名标准的反馈时,问题就来了。我的当前方法需要1200个查询才能检索所有这些数据。我在找更好的方法。我正在使用谷歌应用程序数据库,这是一个非关系数据库。

我一直在想的事情,以及我欢迎反馈的事情:

  1. 我可以将反馈信息存储在一个网格中,每个用户有一行,每个标准有一列。然后,单个查询获取所有数据(优于1200),但输入新数据变得更加困难(获取网格、更新正确的位、存储网格),用户集或标准集的更改变得更加复杂(如果在中间添加标准,则需要更新此网格)。此外,有些问题变得更加困难--我再也无法轻松地搜索在某一日期或某个主管输入的评估结果。
  2. 我可以将某个特定的反馈(一组用户x标准)存储在一个无组织的列表中,用一个查询获取它,然后在我自己的代码中对它进行排序。这需要我遍历1200条条目,但这比对整个系统中所有数据的1200次查询还要快(对于其他用户集和不相关的标准,可能有许多不相关的数据)。

因此,我问题的简短版本是:我应该如何存储这些数据,以便在快速检索一个大子集和快速插入各个反馈片段之间取得最佳平衡?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-06 18:32:37

您可能可以使用RelationIndex来完成这个任务。取决于您希望如何允许用户查看和查询数据,它应该工作。

这个想法非常直截了当,基本上你会为每个员工存储一个“标准”列表。可能还有每个标准的员工名单。然后你就可以问一些问题,比如所有员工的“气味很好”。

因为每个标准都有分数,所以您可能需要在列表("3: 12 ")中将“分数”和“标准数字”作为一对进行存储,这样您就可以找到在标准12上得分为3分的每个人。

编辑:基于评论更新。

听起来你需要处理几个不同的问题。首先,您需要处理数据的编辑和维护。其次,您需要处理数据查询。第三,您需要处理显示数据的问题。

为了有效地查询数据,您可能需要一些类似于我最初建议的方法。什么是更常见的,编辑或查看数据?这将影响您如何设置您的模型。

如果你只与30或40名员工和30或40名标准打交道,也许你可以使用以下内容:

代码语言:javascript
复制
class Evaluations(db.Model):
    period = db.StringProperty()
    standards = db.TextProperty()
    scores = db.TextProperty()

class EvaluationsIndex(db.Model):
    index = db.StringListProperty()

使用计算中的“标准”属性存储评估标准的列表。然后将员工标准分数网格存储在分数属性中。显然,您需要同时序列化标准列表和评估网格,可能需要使用类似于JSON的方法。正如我前面提到的那样,使用EvaluationsIndex模型。

有了这个(或类似的东西),您就可以非常容易地编辑、非常容易地显示和支持查询。

您可以添加一个额外的模型来跟踪哪个主管输入了评估和她的说明。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3874022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档