更快的App Engine开发数据存储替代方案

9 投票
3 回答
1820 浏览
提问于 2025-04-15 18:19

有没有办法在开发过程中使用真正的数据库(比如SQLite、Mysql,或者一些非关系型数据库)作为数据存储,而不是使用提供的内存或文件存储呢?

我看到过一些项目,比如GAE-SQLite(看起来并不好用),还有一个关于通过远程API访问生产数据存储的建议(对于大数据集来说,速度还是挺慢的)。

3 个回答

1

bdbdatastore 是一个替代的数据存储后端,它比开发服务器自带的那个要好很多。不过,当涉及到处理大型应用时,数据存储并不是开发服务器唯一的问题。

2

现在,Google App Engine的Python开发工具包里自带了对SQLite的支持。想了解更多信息,可以查看官方文档

4

MongoDB在这方面表现得非常好。你需要准备:

代码:

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的架构。

要注意的是,如果你做了这些,可能会失去当前工具提供的一些具体功能,这意味着如果你部署后,可能会得到意想不到的结果。换句话说,确保你知道自己在做什么 :-)

撰写回答