Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud firestore 我可以为每个租户创建不同的集合集以避免争用问题吗?_Google Cloud Firestore_Database Performance_Multi Tenant - Fatal编程技术网

Google cloud firestore 我可以为每个租户创建不同的集合集以避免争用问题吗?

Google cloud firestore 我可以为每个租户创建不同的集合集以避免争用问题吗?,google-cloud-firestore,database-performance,multi-tenant,Google Cloud Firestore,Database Performance,Multi Tenant,我正在考虑将Google Cloud Firestore用于多租户应用程序 我浏览了这一页,其中给出了有关规模的建议: 本页还显示了以下限制: 我提出了这个解决方案,它可以使应用程序的性能和恢复力得到改善,而成本最低,甚至不增加 解决方案:我可以为应用程序中的每个多租户集合使用不同的集合,如:products_1、orders_1、products_2、orders_2 我想使用它,因为: 1-它将有更好的性能,因为我将有更小的表/索引。否则,从长远来看,它可能包含太多的文档 2-这是可行的,因

我正在考虑将Google Cloud Firestore用于多租户应用程序

我浏览了这一页,其中给出了有关规模的建议:

本页还显示了以下限制:

我提出了这个解决方案,它可以使应用程序的性能和恢复力得到改善,而成本最低,甚至不增加

解决方案:我可以为应用程序中的每个多租户集合使用不同的集合,如:products_1、orders_1、products_2、orders_2

我想使用它,因为:

1-它将有更好的性能,因为我将有更小的表/索引。否则,从长远来看,它可能包含太多的文档

2-这是可行的,因为代码与具有名称的集合交互,我不必显式创建集合。与使用关系数据库/ORM组合相比,这似乎不是一个大问题

3-我可以用不同的名称创建多少个集合没有限制

因此,我的问题是: 我的任何假设都可能是错误的,以至于在性能方面不会有任何收益,或者即使没有记录,也不可能创建无限数量的集合

最后,这种方法是否会造成我目前无法意识到的长期维护问题


谢谢您的时间。

使用单独的集合来分片客户端无疑是提高总体写入吞吐量的一种方法。但是集合不需要命名约定


<> >我会考虑为所有租户/用户创建一个单一的顶级集合,然后对每个租户/用户文档都有一个子集。这样,每个租户/用户都有一个单独的子集合,但仍然有可预测的集合名称。

谢谢@Frank。听起来不错,我需要更多的经验来转变为无sql思维。我可以安全地假设子集合的性能与常规集合类似,并且我不会有导致性能问题的胖顶级文档吗?因为一个文档可能有30个子集合,也许在某个点上,它们将有一百万个文档合并在一起。(顺便说一句,我没有考虑多个级别的子文档或集合)另外,我刚刚在文档中看到,我可以一次性定义复合索引,以涵盖当前和所有可能的未来子集合,这些子集合具有相同的集合id,这非常好。子集合的功能与您的命名方案相同,减去对命名方案的需要。:)