gpt4 book ai didi

firebase - 定期将大数据 (json) 导入 Firebase

转载 作者:行者123 更新时间:2023-12-01 09:54:05 26 4
gpt4 key购买 nike

我们的情况是,我们必须定期更新 firebase 中的大量数据(大约 5 个 Mio 记录)。目前我们有一些大小约为 1 GB 的 json 文件。

由于现有的第三方解决方案( herehere )存在一些可靠性问题(每个对象导入对象;或需要开放连接)并且与谷歌云平台生态系统完全脱节。我想知道现在是否有“官方”使用方式,即新的谷歌云功能?或者与应用引擎/谷歌云存储/谷歌云数据存储的组合。

我真的不喜欢处理身份验证 - 云功能似乎处理得很好,但我认为该功能会超时(?)

使用新的 firebase 工具,如何:

  • 有长期运行的云函数来获取/插入数据吗? (有意义吗?)
  • 从谷歌云平台内部的某个地方获取 json 文件?
  • 首先将大数据放入 google-cloud-datastore 是否有意义(即存储在 firebase 中太贵了)或者 firebase 实时数据库是否可以可靠地作为大数据存储。
  • 最佳答案

    我终于发布了答案,因为它与 2017 年新的 Google Cloud Platform 工具保持一致。

    新推出的 Google Cloud Functions 的运行时间有限,约为 9 分钟 ( 540 seconds )。但是,云函数能够像这样从云存储创建 node.js 读取流( @googlecloud/storage on npm )

    var gcs = require('@google-cloud/storage')({
    // You don't need extra authentication when running the function
    // online in the same project
    projectId: 'grape-spaceship-123',
    keyFilename: '/path/to/keyfile.json'
    });

    // Reference an existing bucket.
    var bucket = gcs.bucket('json-upload-bucket');

    var remoteReadStream = bucket.file('superlarge.json').createReadStream();

    即使它是远程流,它也是非常高效的。在测试中,我能够在 4 分钟内解析大于 3 GB 的 json,进行简单的 json 转换。

    当我们现在使用 node.js 流时,任何 JSONStream 库都可以有效地动态转换数据 ( JSONStream on npm ),异步处理数据,就像具有事件流 ( event-stream on npm ) 的大型数组一样。

    es = require('event-stream')

    remoteReadStream.pipe(JSONStream.parse('objects.*'))
    .pipe(es.map(function (data, callback(err, data)) {
    console.error(data)
    // Insert Data into Firebase.
    callback(null, data) // ! Return data if you want to make further transformations.
    }))

    在管道末端的回调中仅返回 null 以防止内存泄漏阻塞整个函数。

    如果您执行需要更长运行时间的更重的转换,请使用 firebase 中的“作业数据库”来跟踪您所在的位置,并且只执行 100.000 次转换并再次调用该函数,或者设置一个附加函数来监听插入一个“forimport db”,它最终将原始 jsons 对象记录异步转换为您的目标格式和生产系统。拆分导入和计算。

    此外,您可以在 nodejs 应用引擎中运行云函数代码。但不一定反过来。

    关于firebase - 定期将大数据 (json) 导入 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44398442/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com