rob*_*nnn 5 firebase google-cloud-firestore
我们计划使用 Google Firestore 实施虚拟文件系统。
子集合的想法很好,因为它允许我们根据文件夹层次结构对数据进行建模,如下所示: /folders/folderA/entities/folderB/entities/fileX
与实际的文件系统非常相似,我们希望处理跨文件夹移动,例如将嵌套子文件夹folderB从 parent移动folderA到 parent folderC。事实上,通常情况下,我们要移动的文件夹本身可能包含它们自己的文件和文件夹子集,深度为任意 K 级。
此注释表明移动文档不会自动移动其关联的子集合。同样,删除文档将放弃删除其底层子集合,使它们成为孤儿。似乎将文件夹(及其实体)从一个父级移动到另一个父级的唯一方法是通过递归克隆 + 删除策略,如果其子实体很大,则可能难以可靠且事务性地完成。
另一种方法是放弃使用子集合并将所有文件夹存储在根目录中,使用文档字段parent_id来指向平面集合中的其他文档。由于 Firestore 的积极索引,这不应影响查询速度,但我们无法在本地重现此声明;即,与将所有内容存储在顶层相比,随着数据库中文档总数的增加,通过子集合进行查询的性能要高得多。可在此处获得可重现的回购。请注意,repo 使用本地模拟器实例,而不是实际的 Firestore 服务器。
任何建议都会非常有帮助!
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |