Firebase Firestore嵌套映射存储大小计算

Firebase Firestore嵌套映射存储大小计算,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,嵌套贴图如何存储在Firestore中,以及如何确定其大小计算 比如说,我创造了这个: /Users/index (document name left, fields below) activeMonths: { '2010': { '05': true, '09': true, }, '2015': { '02': true, }, } Firestore中的这个有多大 这与类似,但它增加了围绕嵌套贴图的问题。具体来说,每年的映射是否都会产生额外的

嵌套贴图如何存储在Firestore中,以及如何确定其大小计算

比如说,我创造了这个:

/Users/index  (document name left, fields below)
activeMonths: {
  '2010': {
    '05': true,
    '09': true,
  },
  '2015': {
    '02': true,
  },
}
Firestore中的这个有多大

这与类似,但它增加了围绕嵌套贴图的问题。具体来说,每年的映射是否都会产生额外的32字节惩罚

我的猜测是:

  • (5+1)+(5+1)+16表示/Users/索引文档名称
  • (12+1)+32表示“activeMonths”映射名称的名称和32字节映射惩罚
  • 2*((4+1)+32)表示两年映射名称和32个映射字节惩罚
  • 3*((2+1)+1)表示三个月条目的名称和布尔值
如果嵌套映射结构中的每个“节点”都有32字节的存储空间,那么这将使存储大量数据的方法变得非常昂贵


我希望前面有一些更复杂的例子来回答此类问题。

关于Firestore的数据模型,提供了一个示例,如下所示:

doc:
  first : "Ada"
  last : "Lovelace"
  born : 1815

map:
  name :
    first : "Ada"
    last : "Lovelace"
  born : 1815
创建文档/地图时,您可以向其中添加字段,并且可以选择地图以实现与上述结构类似的结构。以下是Firestore控制台的地图示例:
至于地图的大小,其他地址在地图中的大小,您的计算似乎是正确的:您考虑到了这一点,其中它的名称、字段的字符串名称、字段值和32个附加字节都被考虑在内。

参考Firestore的数据模型,提供了一个,如下所示:

doc:
  first : "Ada"
  last : "Lovelace"
  born : 1815

map:
  name :
    first : "Ada"
    last : "Lovelace"
  born : 1815
创建文档/地图时,您可以向其中添加字段,并且可以选择地图以实现与上述结构类似的结构。以下是Firestore控制台的地图示例:
至于地图的大小,其他地址在地图中的大小,您的计算似乎是正确的:您考虑到了这一点,其中它的名称、字段的字符串名称、字段值和32个附加字节都被考虑在内。

在我将您的答案标记为正确答案之前,那么,您能否确认“顶级”映射和“嵌套”映射之间没有区别?我本可以将两个“年”映射作为文档的直接字段向上移动,而将“活动月”映射作为空映射,并且所有大小计算将保持不变?考虑到
2010
2015
映射仍将被视为映射字段,我相信存储大小将保持不变,只是不再在
activeMonths
地图下。如果要这样做,您可以删除
activeMonths
映射并节省一点存储空间(12+1+32=45字节),但这取决于许多因素,如您的用例、您是否计划在文档下有其他不同的字段等。在我将您的答案标记为正确答案之前,那么,您能否确认“顶级”映射和“嵌套”映射之间没有区别?我本可以将两个“年”映射作为文档的直接字段向上移动,而将“活动月”映射作为空映射,并且所有大小计算将保持不变?考虑到
2010
2015
映射仍将被视为映射字段,我相信存储大小将保持不变,只是不再在
activeMonths
地图下。如果要这样做,您可以删除
activeMonths
映射并节省一点存储空间(12+1+32=45字节),但这取决于许多因素,如您的用例、是否计划在文档下使用其他不同的字段等。