首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定期将大数据(json)导入Firebase

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

Stack Overflow用户
提问于 2017-06-06 19:35:25
回答 1查看 2.7K关注 0票数 4

我们的情况是,我们将不得不更新大量的数据(约5 Mio记录)在火基地定期。目前,我们有一些json文件,大小约为1GB。

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

我真的不喜欢处理身份验证--云函数似乎处理得很好,但我假设函数会超时(?)

有了新的防火墙工具,如何:

  1. 有长期运行的云函数来执行数据获取/插入吗?(这有道理吗?)
  2. 从google云平台的某个地方获取json文件?
  3. 首先将大数据扔到google云数据存储(即$$$太贵,无法存储在防火墙中),还是可以可靠地将火基实时数据库作为一个大数据存储,这是否有意义?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-17 11:03:01

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

新引入的Google功能有大约9分钟的有限运行时间(540秒)。但是,云函数可以像这样从云存储中创建node.js读取流(@googlec头/存储在npm上)。

代码语言:javascript
复制
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分钟内解析大于3GB的jsons,执行简单的json转换。

正如我们现在使用node.js流一样,任何JSONStream库都可以高效地动态转换数据(JSONStream在npm中的应用),异步处理数据,就像使用事件流(npm上的事件流)的大型数组一样。

代码语言:javascript
复制
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,以防止内存泄漏阻塞整个函数。

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44398442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档