首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小型实体的云修复模型组织

小型实体的云修复模型组织
EN

Stack Overflow用户
提问于 2020-01-02 20:49:54
回答 1查看 95关注 0票数 1

我已经追上一个星期了,但是我的后脑勺有个问题:假设我想创建一个Android应用程序,一个待办事项列表。

上下文

为了给出一些上下文,在我的应用程序中,最常用的实体将是Task对象,它包含用户键入的文本、用户id,以及指示任务是否完成的标志。

一个任务也可以属于一个用户定义的类别(object Category),它只有一个标题。

理想情况下,我的防火墙树结构应该是这样的,有两个根级集合。

问题

这个模型的问题是,我的数据确实很小,而且数量可能非常大(一个用户可能会用一个短文本产生许多不同的任务)。

通过这样做,我就会收到很多写作和一些阅读的账单。(也就是说,用户创建任务,编辑标题,将其标记为已完成,但当另一个客户端修改一个任务时,读取就会发生,并且为读过写优化了防火墙)

因此,如果用户有100个任务,那么只包含两个字段的100个文档看起来是错误的。在火药库教程中,文档通常至少包含十几个字段。相比之下,我的小文档需要多次编写,但它们很小,而且我使用的技术在这种场景中感觉被扼杀了。

另外,我不知道该如何从任务中引用类别。如果每个任务都有一个类别,那么没有它的类别对应项,对单个任务的每次读取都是不完整的,这意味着读取的数量是文档的两倍。

为了解决这个问题,我还考虑将这个类别直接嵌入到实际任务中,但是如果用户更改/删除了一个类别,我将不得不对我的所有任务执行一次批写,以编辑/删除被破坏的数据。

因此,我的最后一个问题是:云火药库是否适合这种轻量级数据但编号很重的项目?我的模型是最优的吗?而且,我喜欢用正确的方式进行分类的任务吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 22:15:21

有一个小的文档大小是可以的。如果任务有自己的文档,则更容易查询任务。如果您需要将字段添加到您的Task对象(时间戳等),则为每个任务设置一个单独的文档可以增加项目的可伸缩性。当您希望您的用户能够以不同的方式对任务进行排序和查询时(最近的任务、已完成的任务等等)。

若要引用任务对象中的类别,只需在任务对象中包含一个category字段。这样,您可以使用tasksRef.whereEqualTo("category", "miscellaneous")按类别查询任务。

此外,如果用户只能查看他们自己的任务/类别,最好在用户文档中使用子集合:

代码语言:javascript
复制
- users (collection)
  |
  - <userId> (document)
    | 
    - tasks (collection)
      |
      - <taskId> (document)

这样,当一个用户只关心他/她的任务时,您就不必从所有用户中查询大型tasks集合。此外,通过这样做,您不必在userId对象中包含Task字段。

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

https://stackoverflow.com/questions/59569829

复制
相关文章

相似问题

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