Firebase 扇出 - 最具成本效益的方法?

2024-02-25

我知道这个问题可能已被多次提出,但我已阅读了大多数可用的问题,但没有找到任何可以完全帮助回答我的问题的问题。正如 Firebase 团队提出的,扇出技术是确保快速数据读取的推荐方法,但会带来数据复制的成本。我知道这个问题是主观的,取决于应用程序,但就节省成本(美元)和数据读取而言,哪一个是最佳解决方案?

  1. 在多个子节点中发布相同的节点(保存数据只读调用一次, 但有冗余,因此消耗更多 Firebase 存储)(参见图片Firebase 数据库 - “扇出”技术 https://stackoverflow.com/q/38181973/1423345)
  2. 仅发布一个节点,并通过其密钥对该节点进行其他引用(不冗余且消耗较少的 Firbase 存储,但需要读取两次 - 获取密钥,并获取该密钥的节点)(见图https://stackoverflow.com/a/38215398/1423345 https://stackoverflow.com/a/38215398/1423345)

就上下文而言,我正在构建一个非盈利市场应用程序,因此我需要应用最佳解决方案来平衡成本节省(美元)和快速数据读取之间的平衡。

另一方面,读取两次(带宽)与更大的存储空间?哪一种更划算?


我首先要说的是理想情况下,您在 Firebase 中仅读取或同步必要的内容。所以你的数据库查询由其他过滤器耦合使查询尽可能具体。如果你能做到这一点,那么你无论如何都会构建一个非常智能的数据结构,并且具有成本效益。

现在真正的辩论扇出技术或者只是发布对节点的引用. 因为我个人更喜欢扇出并且也成功使用它因此,我将仅参考该技术来回答,这也会向您表明使我不想使用保留参考和所有内容的原因。

  • 首先也是最重要的是最终用户体验和性能。其形式为大数据块同步。一般来说,这意味着而不是下载小块 you 力求最大可能这样你减少 High Cell 无线电的使用, 高电池消耗, 高带宽并保持应用程序更新和同步尽可能快.

如果您的目标是这种应用程序性能,那么您会清楚地看到 扇出是明显的赢家 由于以下原因,优于其他技术。

  1. 您下载了存储在其他节点中的大数据块,这不会让您的蜂窝无线电长时间保持开启状态。
  2. 当您一次下载全部信息时,您的应用程序的性能会比其他应用程序更好。显然,我并不是说您应该下载完整的数据库。这一切都与智能平衡有关,它使您可以一次性下载所需的内容。
  3. 这并不是唯一可以为您带来更快的读取速度和更好的数据结构的技术。还有其他技术,例如索引、数据验证和安全规则这同样重要。所有这些与正确的数据结构正确结合将为您带来更好的性能。
  4. 在您只有对其他节点的引用而不是实际数据的情况下,那么您最终可能会陷入实际上没有任何内容可向用户展示的情况。假设您的用户没有获得良好的连接所以在读完一篇只给你参考的文章后,网络就崩溃了。所以直到网络再次恢复您的用户看不到任何东西,相信我,这对于应用程序来说是一个非常糟糕的情况。 作为开发人员,您的目标应该是减少出现这些情况的可能性

So, 我建议你采用扇出技术因为当您看到其他因素(例如)时,它会更快且更具成本效益数据过滤、索引和安全规则。是的,它会因高存储使用率而付出一点代价。但当您没有满意的用户时,更少的存储意味着什么?但这一切都取决于个人喜好。但我分享了我的经验和想法,希望它能帮助你做出正确的决定。

我会鼓励你度过难关this https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/并有更深入的了解没有 SQL 数据建模

如果此信息对您有帮助,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase 扇出 - 最具成本效益的方法? 的相关文章

随机推荐