1

Предположим, я хотел сделать приложение appengine, в котором хранится словарь на 50 000 слов, а также эквивалентные словари на 10 других языках одинакового размера.appengine toy program hitting quota limits for reads and write

Я получил это, работая локально на моем dev-сервере, но когда я пошел загружать первый словарь в реальный сервер приложений, я сразу же перешел на мою запись в день. Я понятия не имел, сколько слов в словаре занесено в хранилище данных. Таким образом, через 24 часа я пошел и попробовал навалом скачать словарь и посмотреть, сколько записей у меня было на самом деле, но делаю это, я ударил по чтению в день квоты и ничего не получил за свои проблемы. Я попытался включить биллинг при установке ежедневного максимума в 1,00 долл. США и попал в эту квоту через загрузчик и не получил никаких данных для моей проблемы или моих 1,00 долл. США.

В любом случае, поэтому я посмотрел на свой просмотрщик хранилища данных, и это показывает, что каждый из моих словарных слов требует 8 записей в хранилище данных.

Итак, означает ли это, что такое приложение непригодно для appengine? Должен ли я не пытаться хранить там словарь? Есть ли более разумный способ сделать это? Например, можно каким-то образом сохранить словарь в виде файла в хранилище blob, а затем делать с ним программно оттуда?

Спасибо за любые предложения

ответ

2

Вполне вероятно, что вы будете читать гораздо меньше, чем писать, так что проблема заключается в получении данных в, не так много читать.

Итак, все, что вам нужно сделать, чтобы использовать вашу текущую конфигурацию, - это замедление скорости записи. Затем, предположительно, вы получите каждое слово по его ID (само слово, я надеюсь!), И поэтому чтение будет быстрым и маленьким, точно так, как вы хотите.

Вы можете сделать это: Измельчить исходные данные в 1 файл на каждую букву. Загрузите эти файлы в приложение и создайте задачу, чтобы поочередно читать каждый файл, а затем медленно записывайте эти данные в хранилище данных. Как только эта задача завершается, последним действием является вызов следующей задачи.

Это может занять целую неделю, но после того, как это будет там, будет гораздо удобнее, чем непрозрачный blob, который вы должны получить из магазина blob, читая N слов для каждых 1, на которых вы действительно заинтересованы, а затем распаковывать и обрабатывать каждое слово.

Вы также можете использовать загрузчик для загрузки данных!

+0

Мне это нравится, спасибо. Рад узнать, что это выполнимо. Я боялся, что услышу что-то вроде «вы не можете этого сделать» или тому подобное. Спасибо за предложение. – slashdottir

+0

На самом деле это был bulkloader.py, что я использовал то, что я нажимаю на эту квоту так быстро, но мне нравится идея сценариев в небольшие партии, которые запускаются без присмотра и, возможно, занимают неделю, но по крайней мере это можно сделать. thx – slashdottir

+1

Возможно, что-то можно сделать с помощью backend, они могут работать около ~ 9 часов в день бесплатно, но могут запускать задачи, которые занимают много времени, поэтому могут быть полезны здесь, в зависимости от того, как вы хотите это делать. https://developers.google.com/appengine/docs/python/backends/ –