Google App Engine上的只读关系数据库?

时间:2011-01-11 21:55:25

标签: python google-app-engine sqlite relational-database non-relational-database

我有一个中等大小(~100mb)的只读数据库,我想放在谷歌应用引擎上。我可以将它放入数据存储区,但数据存储区有点慢,没有关系功能,还有许多其他令人沮丧的限制(这里没有涉及)。另一种选择是将所有数据加载到内存中,但我很快达到谷歌强加的配额。最后一个选择是使用django-nonrel + djangoappengine,但我担心软件包还处于起步阶段。

理想情况下,我想创建一个使用blobstore作为其数据源的只读sqlite数据库。这可能吗?

3 个答案:

答案 0 :(得分:2)

我认为你不可能找到类似的东西......肯定不会超过blobstore。因为如果所有数据都存储在一个blob中,那么你必须将整个数据库读入内存以进行任何操作,并且你说你不能这样做。

使用数据存储区作为后端更合理,但并不多。提供SQLite驱动程序的一个大问题就是实现事务语义,因为这是GAE为了高可用性而从你身上夺走的关键,很难想象有人在编写这样的东西时会遇到很多麻烦。

答案 1 :(得分:2)

django-nonrel并没有神奇地提供SQL数据库 - 所以它并不能真正解决您的问题。

可以访问类似文件的blobstore blob,但SQLite模块需要本机C扩展,但App Engine上未启用。

答案 2 :(得分:1)

虽然可以通过BlobReader类作为类文件对象访问Blobstore对象,但它可能会更糟糕地执行数据存储,以尝试在此类文件上执行关系数据库操作而不加载整个首先将文件放入内存。