我正在使用Google App Engine开发一个Java应用程序,它依赖于存在的大数据集。在没有详细介绍我的应用程序的情况下,我只是声明使用一小部分数据是不切实际的。不幸的是,在撰写本文时,Google App Engine for Java开发服务器将整个数据存储区存储在内存中。根据{{3}}:
开发服务器数据存储区存根是内存映射,它是持久存储的 到磁盘。
我根本无法将整个数据集导入开发数据存储区而不会遇到内存问题。将应用程序推入Google的云并使用BigTable后,就没有问题。但是部署到云需要很长时间才能使开发周期变得有点痛苦。所以开发这种方式是不切实际的。
我注意到Google App Engine for Python开发服务器有一个Ikai Lan作为后端数据存储区,我认为这可以解决我的问题。
dev_appserver.py --use_sqlite
但是option to use SQLite(至少没有记录)。使大型数据集与Google App Engine Java开发服务器配合使用的最佳方法是什么?
答案 0 :(得分:2)
没有神奇的解决方案 - 目前,Java API的唯一数据存储存根是内存存储。如果没有实现自己的基于磁盘的存根,您唯一的选择就是找到一种方法来处理数据子集以进行测试,或者在appspot上进行开发。
答案 1 :(得分:0)
我一直在使用mapper api从blobstore导入数据,正如Ikai Lan在此博客文章中所描述的那样 - http://ikaisays.com/2010/08/11/using-the-app-engine-mapper-for-bulk-data-import/。
我发现它比使用远程api批量加载器更快更稳定 - 尤其是在将中等大小的数据集(100k实体)加载到本地数据存储区时。