更快的App Engine开发数据存储替代方案
有没有办法在开发过程中使用真正的数据库(比如SQLite、Mysql,或者一些非关系型数据库)作为数据存储,而不是使用提供的内存或文件存储呢?
我看到过一些项目,比如GAE-SQLite(看起来并不好用),还有一个关于通过远程API访问生产数据存储的建议(对于大数据集来说,速度还是挺慢的)。
3 个回答
1
bdbdatastore 是一个替代的数据存储后端,它比开发服务器自带的那个要好很多。不过,当涉及到处理大型应用时,数据存储并不是开发服务器唯一的问题。
2
现在,Google App Engine的Python开发工具包里自带了对SQLite的支持。想了解更多信息,可以查看官方文档。
4
MongoDB在这方面表现得非常好。你需要准备:
- MongoDB的连接工具:http://github.com/mongodb/mongo-appengine-connector
- MongoDB数据库本身:http://www.mongodb.org/display/DOCS/Downloads
- 一些代码来进行设置,比如:
代码:
import datastore_mongo_stub
os.environ['APPLICATION_ID'] = 'test'
datastore = datastore_mongo_stub.DatastoreMongoStub(
os.environ['APPLICATION_ID'], 'woot', '', require_indexes=False)
apiproxy_stub_map.apiproxy.RegisterStub('datastore_v3', datastore)
不过,如果你想要更快的开发速度(就像我一样),其实问题不在于数据存储,而是单线程的网络服务器。我尝试用多线程来替代它,但那有点难。你也可以尝试设置TyphoonAE,它可以用开源的替代品模拟appengine的架构。
要注意的是,如果你做了这些,可能会失去当前工具提供的一些具体功能,这意味着如果你部署后,可能会得到意想不到的结果。换句话说,确保你知道自己在做什么 :-)