Google App Engine上的只读关系数据库?
我有一个中等大小(大约100MB)的只读数据库,想把它放到谷歌的应用引擎上。我可以把它放进数据存储里,但数据存储有点慢,而且没有关系型数据库的功能,还有很多其他让我头疼的限制(这里就不详细说了)。另一个选择是把所有数据加载到内存中,但我很快就达到了谷歌设定的配额。最后一个选择是使用django-nonrel和djangoappengine,但我担心这个包还不够成熟。
理想情况下,我想创建一个只读的sqlite数据库,使用blobstore作为数据源。这可能吗?
3 个回答
1
虽然可以通过 BlobReader
类来像操作文件一样访问 Blobstore 对象,但如果不先把整个文件加载到内存中,就想在这样的文件上进行关系数据库操作,可能会比使用数据存储更慢。
2
django-nonrel 并不能神奇地给你提供一个 SQL 数据库,所以这并不是解决你问题的办法。
虽然可以像文件一样访问 blobstore 中的 blob,但 SQLite 模块需要一个本地的 C 扩展,而这个在 App Engine 上是无法使用的。
2
我觉得你可能找不到这样的东西……肯定不会是在blobstore上。因为如果你的所有数据都存储在一个大块里,你就得把整个数据库都读到内存里才能进行任何操作,而你说你做不到这一点。
把数据存储作为后端使用是更可行的,但也没好到哪里去。提供一个SQLite驱动的最大问题就是实现事务的语义,而这正是为了高可用性,GAE把这个功能给拿走了,所以很难想象会有人费劲去写这样的东西。