Как выполнить массовое удаление из Google App Engien Datastore
Мне нужно удалить массовые записи из хранилища данных, я перебрал все предыдущие ссылки, но все только что говорили о получении сущностей из хранилища данных и последующем их удалении, проблема в моем случае в том, что у меня есть около 80 КБ сущностей, и чтение выполняется по времени всякий раз, когда я пытаюсь сделать это, используя метод datastore db.delete().
Кто-нибудь здесь случайно знает метод, более близкий к SQL, для массового удаления?
3 ответа
Вы можете использовать Task Queue + DB Cursor для удаления.
Задание может быть выполнено до 10 минут, вероятно, достаточно времени, чтобы удалить все объекты. Но если это займет больше времени, вы можете получить текущую позицию курсора и еще раз вызвать саму задачу с этим курсором в качестве параметра, и начать обработку с последней позиции.
Определите, какой API вы используете. СДО? GAE? JPA? Вы ссылаетесь на некоторый db.delete, но помечаете это как JDO; Они не то же самое. JDO, очевидно, предоставляет pm.deletePersistentAll(), и, если вам нужно больше, вы можете использовать Google Mapper API
Вы можете использовать Cloud Dataflow для массового удаления объектов в хранилище данных. Вы можете использовать GQL-запрос, чтобы выбрать объекты для удаления: