首页 > 解决方案 > 优化数据模型 Firestore

问题描述

你好,我有一个应用程序来学习歌曲成语。我使用 Firestore 作为我的数据库。

实际数据结构:

我想添加的功能是每个用户都可以知道在玩时学到了什么单词作为一种词汇。

- Users
    -Vocabulary
       -Word1
         -wordId
         -timesPlayed
         -lastTimeAt(unix)
         -translation
- Words
    -Word
      -translation
      (more word data)

我以为每次添加一首歌曲时,都会触发一个 Firebase 函数,它将歌曲中的所有单词分开,并验证该单词是否存在于应用程序的通用词汇表中,是否没有添加。每次用户播放一首歌曲时,都会将其歌词添加到他们自己的语言中(仅限已播放的歌曲),如果它已经存在,则有练习的次数以及练习的日期最后一次练习。

用户的词汇表仅在通用词汇表中保留对 palbras 的引用,因为他们可以对所有用户进行协作编辑。

我遇到的问题是,在 Firestore 中为每个播放歌曲的用户制作了大约 300 个单词的许多经文,而我目前在没有此功能的情况下所做的(2 篇文章)是 demadas 有一种优化它的方法。

标签: firebasedatabase-designgoogle-cloud-firestore

解决方案


如果您想尽量减少写入 Firestore 的次数。

我要做的是拥有三个不同的对象:

  1. 播放次数
  2. 最后时间在(unix)
  3. 翻译

然后,每个对象都会以单词的 id 作为键。对象 2 和 3 没有问题,但是,timesPlayed 对象在客户端或运行它的云函数上会变得非常昂贵。(我会在客户端做)。

您可以将三个对象嵌套在一个词汇表中,并在更新用户文档时使用合并设置为 true 的选项。

希望能帮助到你。


推荐阅读