Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 批量上载2 GB数据库所需的CPU时间?_Google App Engine_Bulkinsert_Django Nonrel_Bulkloader - Fatal编程技术网

Google app engine 批量上载2 GB数据库所需的CPU时间?

Google app engine 批量上载2 GB数据库所需的CPU时间?,google-app-engine,bulkinsert,django-nonrel,bulkloader,Google App Engine,Bulkinsert,Django Nonrel,Bulkloader,我雇佣了一名程序员将我的网站(最初使用Django和MySQL实现)移植到Google App Engine。原始web应用程序的数据库大小约为2GB,最大的表有500万行。据我所知,为了将这些内容移植过来,程序员正在将数据库序列化为JSON,然后将其上载到Google app engine。 到目前为止,按照GAE的说法,他的上传使用了100小时的CPU时间,但看起来只有大约50或100 MB被加载到数据库中。对于如此少量的数据,这是合理的CPU时间吗?MySQL可以在几分钟内加载这么多数据,

我雇佣了一名程序员将我的网站(最初使用Django和MySQL实现)移植到Google App Engine。原始web应用程序的数据库大小约为2GB,最大的表有500万行。据我所知,为了将这些内容移植过来,程序员正在将数据库序列化为JSON,然后将其上载到Google app engine。

到目前为止,按照GAE的说法,他的上传使用了100小时的CPU时间,但看起来只有大约50或100 MB被加载到数据库中。对于如此少量的数据,这是合理的CPU时间吗?MySQL可以在几分钟内加载这么多数据,所以我不明白为什么GAE会慢1000倍。他做的事情效率低下吗?

这在很大程度上取决于他如何序列化数据。我强烈怀疑他在做一些低效的事情,因为是的,对于这么多的数据来说,这是可笑的。您的效率低下可能在于每个查询的传输时间和开始/停止时间。如果他序列化每一行并一次一行地将其发布到处理程序,那么我完全可以理解这需要花费很多时间和cpu时间

我已经大容量加载了GB的数据,但是我编写了自己的大容量加载模块(基于他们定义的接口),它花费了25个小时的CPU时间


要了解更多信息,您可以查看一下似乎很高的

,很可能他们让服务器做了很多可以在客户端上完成的工作(解码JSON、编码和存储实体)。SDK已经提供了一个bulkloader,如果出于某种原因不适合,bulkloader所基于的remote_api提供了一个比您自己滚动更有效的选项。

请记住,仪表板在报告数据存储状态时会非常延迟。向开发人员提到,如果他是“代码”,一次放置每个行/实体一次,他应该考虑将<代码>放置 >以节省CPU和其他资源。它更多地取决于行的数量,然后取决于实际的数据大小。因为GAE对每个
Put()
调用都使用CPU时间。@chris farmiloe将
db.Put([instance1,instance2])
db.Put(instance1)使用更少的CPU时间;db.put(instance2)
?因为它可能发生在
远程api上,是的。这是两个完整的请求,而不是一个请求。我向程序员提到了这一点。他写道:“每个json文件的所有数据都拼接在100行上,任务队列中的每个任务都会加载这样的数据块。我发现文件中这样多的行是最理想的。正如我所说,我们下载数据和反序列化不需要CPU时间,只需要保存到数据存储。”我现在正在看他的代码。在他的“views.py”文件中,唯一从gae导入的是“google.appengine.api导入任务队列”。看起来他正在通过HTTP post命令上传数据块。这是一种缓慢的方式吗?@user793956这最终是将数据导入云中的唯一方式,但以JSON格式上传数据并在云中进行处理是对计费资源的浪费。内置的bulkloader在客户机上进行处理,并将已经创建的协议缓冲区发送到远程api。