我们正在从生产数据库中迁移一些数据,并希望将大多数数据存档在Cloud Datastore中。

最终,我们将所有数据移到那里,但是最初将重点放在作为测试的存档数据上。

我们选择的语言是Python,并且能够将数据从mysql逐行传输到数据存储区。

我们大约有1.2亿行要传输,而一次仅传输一行将花费很长时间。

有没有人找到一些有关如何使用python将数据批量插入云数据存储中的文档或示例?

任何意见,建议表示赞赏,谢谢您的先进。

最佳答案

我今天知道的Cloud Datastore没有“批量加载”功能,因此,如果您期望“将所有数据上传到文件并显示在Datastore中”之类的东西,我认为您不会会找到任何东西。

您总是可以使用并行化工作的本地队列编写快速脚本。

基本要点是:

  • 排队脚本将数据从您的MySQL实例中拉出并将其放入队列中。
  • (许多)工作人员从此队列中拉出,并尝试将项目写入Datastore。
  • 失败时,将项目推回队列。

  • 数据存储区可大规模并行化,因此,如果您可以编写一个每秒发送数千次写入操作的脚本,它应该可以正常工作。此外,这里的最大瓶颈将是网络IO(发送请求后,您必须稍等片刻才能获得响应),因此许多线程应该获得相当不错的总体写入率。但是,要确保将工作适本地分配到这些线程中,这取决于您。

    就是说,您现在应该调查Cloud Datastore是否适合您的数据以及持久性/可用性需求。如果您要花费1.2亿行并将其加载到Cloud Datastore中以进行键值样式查询(又名,您有一个key和一个未索引的value属性,它只是JSON数据),那么这可能是有道理的,但是加载数据将花费很多您在这种情况下约为$ 70(1.2亿* $ 0.06/10万)。

    如果您具有属性(默认情况下会被索引),则此成本将大幅增加。

    运算成本为每100k $ 0.06,但是一个“写入”可能包含多个“运算”。例如,假设您有5列的表中有1.2亿行(相当于一个具有5个属性的Kind)。

    单个“新实体写入”等效于:
  • + 2(每个新实体1 x 2个写入操作固定成本)
  • + 10(每个索引属性5 x 2个写操作)
  • = 每个实体12个“操作”

  • 因此,加载此数据的实际成本为:

    1.2亿个实体* 12个操作/实体*(0.06万/10万个操作)= 864.00美元

    关于python - 是否可以使用Google Cloud Datastore批量插入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32316088/

    10-11 01:40