【发布时间】:2017-11-07 23:14:22
【问题描述】:
我们必须定期更新 firebase 中的大量数据(约 5 条 Mio 记录)。目前我们有一些大小约为 1 GB 的 json 文件。
由于现有的第三方解决方案(here 和 here)存在一些可靠性问题(每个对象导入对象;或需要开放连接),并且与谷歌云平台生态系统完全脱节。我想知道现在是否有一种“官方”方式使用即新的谷歌云功能?或与 app engine / google cloud storage / google cloud datastore 结合使用。
我真的很喜欢不处理身份验证——云功能似乎处理得很好,但我认为该功能会超时 (?)
使用新的 firebase 工具,如何:
- 是否有长时间运行的云功能来进行数据提取/插入? (有意义吗?)
- 将 json 文件导入和从谷歌云平台内部的某处获取?
- 首先将大数据放入 google-cloud-datastore 是否有意义(即太贵而无法存储在 firebase 中),还是可以将 firebase 实时数据库可靠地用作大数据存储。
【问题讨论】:
-
我还没有处理过导入大型 JSON 文件,但我可以谈谈使用 Cloud Functions 处理数百万条数据库记录。我递归处理,抓取100条记录。处理它们,将最后一个键保存在数据库中。从该键启动下一个 Cloud Function,然后重复直到处理完所有 1,000,000 条记录。这允许我将我的云功能限制为更短的执行时间。
-
@sketch我假设你有一个额外的“worker db”来跟踪正在发生的事情(?)。你介意分享一下云函数在这种方法中迭代超过 1 个 mio 记录需要多长时间,关于操作是什么以及你的记录有多大/深度?这对我估计我的架构很有帮助。
-
看看我的要点; gist.github.com/sketchthat/9f2329864cec4d79faa4e66c6bcc375d 很难说需要多长时间,因为这取决于您的对象有多深以及您对每个项目进行了什么样的处理。您可以使用 100 条记录并使其更大/更小以优化您的请求时间。
标签: firebase architecture firebase-realtime-database google-cloud-datastore google-cloud-functions