Реляционная база данных только для чтения в Google App Engine? - PullRequest
2 голосов
/ 12 января 2011

У меня есть база данных среднего размера (~ 100 МБ), доступная только для чтения, которую я хочу добавить в движок приложения Google.Я мог бы поместить его в хранилище данных, но хранилище данных вроде медленное, не имеет реляционных особенностей и имеет много других неприятных ограничений (не вдаваясь в них здесь).Другой вариант - загрузить все данные в память, но я быстро выбрал квоту, введенную Google.Последний вариант - использовать django-nonrel + djangoappengine, но я боюсь, что пакет все еще находится в зачаточном состоянии.

В идеале я хотел бы создать базу данных sqlite только для чтения, которая использует хранилище BLOB-объектовего источник данных.Это возможно?

Ответы [ 3 ]

2 голосов
/ 12 января 2011

Я не думаю, что вы, вероятно, найдете что-то подобное ... конечно, не в интернет-магазине. Потому что, если все ваши данные хранятся в одном блобе, вам придется читать всю базу данных в память для любой операции, и вы сказали, что не можете этого сделать.

Использование хранилища данных в качестве бэкэнда более правдоподобно, но не намного. Большая проблема с предоставлением драйвера SQLite заключалась бы в реализации семантики транзакций, и, поскольку GAE отнимает у вас ключевое значение для обеспечения высокой доступности, трудно представить, что кому-то придётся много писать такие вещи.

2 голосов
/ 12 января 2011

django-nonrel волшебным образом не предоставляет базу данных SQL - так что это не совсем решение вашей проблемы.

Доступ к BLOB-объектам BLOB-магазина, как к файлу, возможен, но для модуля SQLite требуется собственное расширение C, которое не включено в App Engine.

1 голос
/ 12 января 2011

Хотя доступ к объектам Blobstore можно получить через класс BlobReader как файловые объекты, вероятно, он будет работать еще хуже, чем хранилище данных при попытке выполнить операции с реляционной базой данных над таким файлом.без предварительной загрузки всего файла в память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...