【问题标题】:What is the "namespace string" of a document in Cloud FireStore (for purposes of calculating the doc's storage size)?Cloud FireStore 中文档的“命名空间字符串”是什么(用于计算文档的存储大小)?
【发布时间】:2018-07-12 05:07:10
【问题描述】:

[编辑:感谢@JRLtechwriting,下面提到的Storage Size Calculations 文档已经更新,因此它不再提及命名空间——Firestore 不(还?)支持它们——并且包括更多完整的例子。经过这些改进,我的问题可能不会再出现了!]

我正在尝试编写一个通用函数来计算 Cloud Firestore 文档的存储大小,但我已经坚持计算文档名称的大小,因为我不知道文档名称的确切含义Storage Size Calculations guide 中的“命名空间”:

文档名称的大小是以下各项的总和:

  • 命名空间字符串大小(如果不在默认命名空间中)
  • 文档名称的完整字符串大小(每个整数 ID 为 8 个字节)
  • 16 个额外字节

它还说命名空间存储为字符串。所以,对于这个假设的 CFS 文档...

var alovelaceDocumentRef = db.collection('users').doc('alovelace');

...根据Cloud Firestore Data Model 文档,也可以这样引用...

var alovelaceDocumentRef = db.doc('users/alovelace');

...命名空间字符串是'users' 吗?或者'users/'?不幸的是,存储大小计算指南中的所有示例都假定默认命名空间(大小为 0)。

我觉得我应该能够通过实验找到问题的答案,但我能想到的唯一方法是:

  1. 在非默认命名空间中创建文档
  2. 使用变量“docSize”中的信息跟踪其大小 存储大小计算指南),因为我会逐步向其中添加数据
  3. 当我收到一条错误消息时,我已超过最大值 文档大小(1,048,576 字节,根据Quotas and Limits guide),从 1,048,576 中减去 docSize 得到命名空间的大小 字符串

但是这种方法似乎是劳动密集型的,并且可能由于我的理解/知识的其他限制而导致不准确,所以我希望你们中的一个更有知识的人可以提供帮助。谢谢!

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

    Firestore 不支持不同的命名空间 (see this SO answer),因此所有文档都将位于默认命名空间中。命名空间字符串大小将始终为 0。

    我帮助维护 Firestore 文档,因此我更新了页面。

    【讨论】:

    • 感谢您抽出宝贵时间更新Storage Size Calculations 文档。绝对比旧版清晰。我将编辑问题以提及这一点,因为我的引述现在已经过时了。
    • [修订] 存储大小计算文档中仍然存在明显的不一致:它说文档名称和集合 ID 存储为字符串,但后来说数字 ID 占用 8 个字节的存储空间。我注意到 JS Firestore 客户端库(从 4.9.1 版开始)不允许集合或文档使用数字 ID。那么,数字 ID 是否可能?如果我创建一个 ID 为“3”的集合或文档(一个字符串,至少在客户端),我可以指望该 ID 只需要 2 个字节的存储空间吗?
    • 您应该是正确的文档 ID 始终是字符串。让我仔细检查一下是否有任何情况下您可以使用整数文档 ID。
    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2012-07-21
    • 2021-12-31
    • 1970-01-01
    • 2018-08-15
    • 2010-10-22
    相关资源
    最近更新 更多