Реляционная база данных, доступная только для чтения в Google App Engine?
Вопрос
У меня есть база данных среднего размера (~ 100 МБ), доступная только для чтения, которую я хочу разместить в Google App engine.Я мог бы поместить это в хранилище данных, но хранилище данных работает довольно медленно, не имеет реляционных функций и имеет много других неприятных ограничений (не будем здесь вдаваться в них).Другой вариант - загрузить все данные в память, но я быстро превысил квоту, установленную Google.Последний вариант - использовать django-nonrel + djangoappengine, но я боюсь, что этот пакет все еще находится в зачаточном состоянии.
В идеале я хотел бы создать базу данных sqlite, доступную только для чтения, которая использует blobstore в качестве источника данных.Возможно ли это?
Решение
Я не думаю, что вы найдете что-то подобное ... Конечно, не в blobstore.Потому что, если все ваши данные хранятся в одном большом двоичном объекте, вам пришлось бы считывать всю базу данных в память для любой операции, а вы сказали, что не можете этого сделать.
Использование хранилища данных в качестве серверной части более правдоподобно, но ненамного.Большой проблемой с предоставлением драйвера SQLite была бы реализация семантики транзакций, и поскольку это ключевая вещь, которую GAE забирает у вас ради высокой доступности, трудно представить, что у кого-то будут большие проблемы с написанием такой вещи.
Другие советы
Django -Nonrel не волшебным образом предоставляет базу данных SQL - так что это не на самом деле решение вашей проблемы.
Возможна доступ к блокированию Blobstore, подобной файлу, но модуль SQLite требует собственного расширения C, которое не включено в App Engine.
Хотя можно получить доступ к объектам Blobstore через BlobReader
Класс в качестве файловых объектов, он, вероятно, еще хуже, предмет данных, чтобы попытаться выполнить операции реляционной базы данных в таком файле, не загружая полную часть файла в первую очередь.