使用json字符串而不是子树

时间:2017-01-29 23:18:23

标签: firebase firebase-realtime-database

我有一个数据库结构,如:

base
  child1
     sub tree of ~10 children and ~5 levels deep
  child2
     sub tree of ~10 children and ~5 levels deep
  ...

现在我总是只获取/设置整个孩子,也就是说我永远不需要直接指向子项子树中的ref。

我的问题是,在这种情况下,在速度和/或空间方面将每个子树存储为JSON字符串并在客户端上转换为/来自它会更有效吗?

感谢

1 个答案:

答案 0 :(得分:1)

我曾多次在Firebase数据库中存储JSON字符串:

  • 存储GeoJSON功能;和
  • 存储每个用户的应用程序设置。

GeoJSON存储为字符串主要是因为该格式大量使用坐标数组。应用程序设置有大量嵌套。

在这两种情况下,就Firebase而言,数据是不透明的,并且不需要查询其内容。

我不了解Firebase的内部结构,但我非常怀疑您会看到存储JSON字符串的任何效率或性能优势。事实上,效率(可能性能)可能会更糟。您可以确定Firebase不会将其内部数据存储为JSON。这意味着在将数据存储为JSON字符串时,您可能会存储更多数据,因为除了值之外,JSON还将包含键。这些数据还包括括号,引号和转义等。

如果数据较大,则需要通过网络传输更多信息,这无助于提高性能。

您可能想要自己进行一些分析。只需创建充满未编码数据的数据库和另一个充满JSON字符串的数据库,并比较大小差异。 '用法'控制台中的选项卡将指示整体数据库大小。如果您对实际转移的内容感兴趣,请使用Chrome开发工具(或类似工具)查看“网络”上的网络套接字流量。标签

简而言之,如果效率和性能是考虑存储JSON字符串的唯一原因,那么您可能不会想要这样做。