Кто-нибудь знает, как удалить все хранилища данных в Google App Engine ?
google-app-engine
google-cloud-datastore
Дэн МакГрат
источник
источник
/path/to/google_appengine/dev_appserver.py --clear_datastore yes myappname/
командной строке следующее: где myappname - это ваш каталог, содержащий ваш файл app.yaml для приложения .. вам необходимо перейти к этому пути каталога. Кредит: Стивен Альмерот и Меллвар для ответа нижеОтветы:
Если вы говорите о живом хранилище данных , откройте панель управления вашего приложения (войдите в appengine), затем хранилище данных -> просмотрщик данных, выберите все строки для таблицы, которую вы хотите удалить, и нажмите кнопку удаления (вам придется сделайте это для всех ваших таблиц). Вы можете сделать то же самое программно через remote_api (но я никогда не использовал его).
Если вы говорите о хранилище данных для разработки , вам просто нужно удалить следующий файл: "./WEB-INF/appengine-generated/local_db.bin" . Файл будет сгенерирован для вас снова при следующем запуске сервера разработки, и у вас будет чистый db.
Обязательно очистите свой проект после этого.
Это одна из маленьких ловушек, которые пригодятся, когда вы начнете играть с Google Application Engine. Вы обнаружите, что сохраняете объекты в хранилище данных, а затем изменяете объектную модель JDO для своих устойчивых сущностей, в результате чего получаются устаревшие данные, что приведет к сбою вашего приложения повсюду.
источник
Лучшим подходом является метод удаленного API, предложенный Ником, он инженер App Engine из Google , так что доверяйте ему.
Это не так уж и сложно, и последняя версия 1.2.5 SDK предоставляет remote_shell_api.py прямо с полки. Итак, скачивайте новый SDK. Затем выполните следующие действия:
подключите удаленный сервер в командной строке:
remote_shell_api.py yourapp /remote_api
оболочка запросит информацию для входа в систему и, если она авторизована, создаст для вас оболочку Python. Вам нужен обработчик URL-адресов для / remote_api в вашем app.yamlвыберите объекты, которые вы хотите удалить, код выглядит примерно так:
Обновление 2013-10-28 :
remote_shell_api.py
был заменен наremote_api_shell.py
, и вы должны подключитьсяremote_api_shell.py -s your_app_id.appspot.com
, согласно документации .Существует новая экспериментальная функция Datastore Admin , после включения ее в настройках приложения вы можете выполнять массовое удаление, а также резервное копирование хранилища данных через веб-интерфейс.
источник
Самый быстрый и эффективный способ справиться с навалом удалить на датастор с помощью нового сопоставителя API объявил на последней конференции Google I / O .
Если вы предпочитаете язык Python , вам просто нужно зарегистрировать свой картограф в файле mapreduce.yaml и определить такую функцию:
На Java вы должны прочитать эту статью, в которой предлагается такая функция:
РЕДАКТИРОВАТЬ:
Начиная с SDK 1.3.8, для этой цели есть функция администратора хранилища данных.
источник
Вы можете очистить хранилище данных сервера разработки при запуске сервера:
/path/to/dev_appserver.py --clear_datastore=yes myapp
Вы также можете сократить
--clear_datastore
с помощью-c
.источник
/path/to/google_appengine/dev_appserver.py --clear_datastore yes myappname/
(обратите внимание на «да»)Если у вас есть значительный объем данных, вам необходимо использовать сценарий для его удаления. Однако вы можете использовать remote_api, чтобы очистить хранилище данных со стороны клиента простым способом.
источник
Вот и все: перейдите в Администратор хранилища данных, выберите тип объекта, который вы хотите удалить, и нажмите «Удалить». Mapreduce позаботится об удалении!
источник
Удалить записи из хранилища данных App Engine можно несколькими способами:
Сначала подумайте, действительно ли вам нужно удалять записи. Это дорого, и, возможно, будет дешевле не удалять их.
Вы можете удалить все записи вручную с помощью администратора хранилища данных.
Вы можете использовать Remote API и удалять записи в интерактивном режиме.
Вы можете удалить записи программно, используя пару строк кода.
Вы можете удалить их сразу с помощью очередей задач и курсоров.
Или вы можете использовать Mapreduce, чтобы получить что-то более надежное и красивое.
Каждый из этих методов описан в следующем сообщении блога: http://www.shiftedup.com/2015/03/28/how-to-bulk-delete-entries-in-app-engine-datastore
Надеюсь, поможет!
источник
Способ с нулевой настройкой сделать это - отправить HTTP-запрос на выполнение с произвольным кодом в службу администратора, которая автоматически уже есть в вашем запущенном приложении:
источник
Источник
Я получил это от http://code.google.com/appengine/articles/remote_api.html .
Создайте интерактивную консоль
Во-первых, вам нужно определить интерактивную консоль appenginge. Итак, создайте файл с именем appengine_console.py и введите следующее:
Создайте базовый класс Mapper
Как только это будет сделано, создайте этот класс Mapper. Я только что создал новый файл с именем utils.py и бросил это:
Mapper должен быть просто абстрактным классом, который позволяет вам перебирать каждую сущность заданного типа, будь то извлечение их данных или их изменение и сохранение обновленных сущностей обратно в хранилище данных.
Беги с этим!
Теперь запустите интерактивную консоль appengine:
Это должно запустить интерактивную консоль. В нем создайте подкласс модели:
И, наконец, запустите его (из интерактивной консоли): mapper = MyModelDeleter () mapper.run ()
Это оно!
источник
Сделать это можно через веб-интерфейс. Войдите в свою учетную запись, переходите по ссылкам слева. В управлении хранилищем данных вы можете изменять и удалять данные. Используйте соответствующие параметры.
источник
Я создал панель надстроек, которую можно использовать с развернутыми приложениями App Engine. В нем перечислены виды, которые присутствуют в хранилище данных в раскрывающемся списке, и вы можете нажать кнопку, чтобы запланировать «задачи», которые удаляют все объекты определенного типа или просто все. Вы можете скачать его здесь:
http://code.google.com/p/jobfeed/wiki/Nuke
источник
Для Python 1.3.8 включает в себя экспериментальный встроенный для этого админ. Они говорят : «Включите следующую встроенную функцию в вашем файле app.yaml:»
источник
Откройте «Администратор хранилища данных» для своего приложения и включите Админ. После этого все ваши объекты будут отмечены флажками. Вы можете просто выбрать ненужные объекты и удалить их.
источник
Это то, что вы ищете ...
Выполнение запроса только с ключами выполняется намного быстрее, чем полная выборка, и ваша квота потребует меньшего воздействия, поскольку запросы только с ключами считаются небольшими операциями.
Вот ссылка на ответ Ника Джонсона, который описывает это дальше.
Ниже представлено комплексное решение REST API для усечения таблицы ...
Я настраиваю REST API для обработки транзакций базы данных, где маршруты напрямую сопоставляются с соответствующей моделью / действием. Это можно вызвать, введя правильный URL-адрес (example.com/inventory/truncate) и войдя в систему.
Вот маршрут:
Вот обработчик:
Он начинается с динамической загрузки модели (т.е. инвентарь, находящийся в api.models), затем вызывает правильный метод (Inventory.truncate ()), как указано в параметре действия.
@Basic_auth - это декоратор / оболочка, обеспечивающая аутентификацию для конфиденциальных операций (например, POST / DELETE). Там также OAuth декоратора доступны , если вы беспокоитесь о безопасности.
Наконец, действие называется:
Это похоже на магию, но на самом деле все очень просто. Самое приятное то, что delete () можно повторно использовать для обработки удаления одного или нескольких результатов, добавив в модель еще одно действие.
источник
Вы можете удалить все хранилища данных, удаляя все типы по одному. с панелью управления google appengine. Пожалуйста, следуйте этим шагам.
для получения дополнительной информации см. Это изображение http://storage.googleapis.com/bnifsc/Screenshot%20from%202015-01-31%2023%3A58%3A41.png
источник
Если у вас много данных, использование веб-интерфейса может занять много времени. App Engine Launcher утилита позволяет удалять все в одном дыхании с «Clear датастором на старте» флажок. Эта утилита теперь доступна как для Windows, так и для Mac (платформа Python).
источник
Для сервера разработки вместо запуска сервера через средство запуска движка приложений Google вы можете запустить его с терминала, например:
dev_appserver.py --port = [номер порта] --clear_datastore = да [nameofapplication]
Пример: мое приложение «reader» работает на порту 15080. После изменения кода и перезапуска сервера я просто запускаю «dev_appserver.py --port = 15080 --clear_datastore = yes reader».
Это хорошо для меня.
источник
Добавляю ответ о последних событиях.
Google недавно добавила функцию администратора хранилища данных. Вы можете создавать резервные копии, удалять или копировать свои объекты в другое приложение с помощью этой консоли.
https://developers.google.com/appengine/docs/adminconsole/datastoreadmin#Deleting_Entities_in_Bulk
источник
Я часто не хочу удалять все хранилище данных, поэтому я извлекаю чистую копию /war/WEB-INF/local_db.bin из системы управления версиями. Возможно, это только я, но кажется, что даже с остановленным режимом разработки мне нужно физически удалить файл, прежде чем вытащить его. Это в Windows с использованием подключаемого модуля Subversion для Eclipse.
источник
Вариант PHP:
Да, это займет время и 30 сек. это предел. Я думаю поставить образец приложения ajax для автоматизации за 30 секунд.
источник
import
? Определение константы как экземпляра объекта?источник
Если вы используете ndb, метод, который сработал для меня для очистки хранилища данных:
источник
Sorry, unexpected error: The kind "__Stat_Kind__" is reserved.
это похоже, что appengine имеет некую внутреннюю статистическую сущность, которая может быть обнаружена этим методом (возможная ошибка на их стороне?)Для любого хранилища данных, которое находится на движке приложения, а не локально, вы можете использовать новый Datastore API . Вот пример того, как начать .
Я написал сценарий, который удаляет все не встроенные сущности. API меняется довольно быстро, поэтому для справки я клонировал его при фиксации 990ab5c7f2063e8147bcc56ee222836fd3d6e15b.
источник
Продолжая идею svpino, разумно повторно использовать записи, помеченные как delete. (его идея заключалась не в том, чтобы удалить, а пометить как «удаленные» неиспользуемые записи). немного кеша / кеша памяти для обработки рабочей копии и записи только разницы состояний (до и после желаемой задачи) в хранилище данных сделает его лучше. для больших задач можно записывать в хранилище данных фрагменты промежуточных отличий, чтобы избежать потери данных в случае исчезновения кэша памяти. чтобы сделать его без потерь, можно проверить целостность / существование результатов memcached и перезапустить задачу (или требуемую часть), чтобы повторить недостающие вычисления. когда разница в данных записывается в хранилище данных, необходимые вычисления сбрасываются в очередь.
Другая идея, аналогичная уменьшенной карте, - это разделение типа сущности на несколько разных типов сущностей, поэтому они будут собраны вместе и видны конечному пользователю как единый вид сущности. записи помечаются только как «удаленные». когда количество "удаленных" записей на шард превышает некоторый предел, "живые" записи распределяются между другими шардами, и этот шард закрывается навсегда, а затем удаляется вручную из консоли разработчика (предположительно с меньшими затратами).upd: кажется, нет таблицы отбрасывания на консоли, удаляйте только запись за записью по обычной цене.можно удалить по запросу кусками большой набор записей без сбоя gae (по крайней мере, работает локально) с возможностью продолжить при следующей попытке, когда время истечет:
источник
Для всех людей, которым нужно быстрое решение для сервера разработки (на момент написания статьи в феврале 2016 г.):
Это сотрет все данные из хранилища данных.
источник
Я был настолько разочарован существующими решениями для удаления всех данных в реальном хранилище данных, что создал небольшое приложение GAE, которое может удалить довольно много данных за 30 секунд.
Как установить и т. Д .: https://github.com/xamde/xydra
источник
Для Java
Хорошо работает в сервере разработки
источник
У вас есть 2 простых способа,
# 1: Чтобы сэкономить, удалите весь проект
# 2: использование ts-datastore-orm:
https://www.npmjs.com/package/ts-datastore-orm await Entity.truncate (); Усечение может удалять около 1 КБ строк в секунду.
источник