[google-app-engine] Google App Engine에서 모든 데이터 저장소를 삭제하는 방법은 무엇입니까?

누구든지 Google App Engine 에서 모든 데이터 저장소를 삭제하는 방법을 알고 있습니까?



답변

라이브 데이터 저장소 에 대해 이야기하는 경우 앱의 대시 보드를 열고 (appengine에 로그인) 데이터 저장소-> dataviewer를 열고 삭제하려는 테이블의 모든 행을 선택한 다음 삭제 버튼을 누릅니다. 모든 테이블에 대해 이렇게하십시오). remote_api를 통해 프로그래밍 방식으로 동일한 작업을 수행 할 수 있습니다 (하지만 사용하지 않았습니다).

개발 데이터 저장소 에 대해 이야기하는 경우 “./WEB-INF/appengine-generated/local_db.bin” 파일을 삭제하기 만하면 됩니다. 다음에 개발 서버를 실행할 때 파일이 다시 생성되고 명확한 db가 생성됩니다.

나중에 프로젝트를 청소하십시오.

이것은 Google Application Engine으로 게임을 시작할 때 편리하게 사용할 수있는 작은 문제 중 하나입니다. 개체를 데이터 저장소에 유지 한 다음 지속 가능한 엔터티에 대한 JDO 개체 모델을 변경하면 쓸모없는 데이터로 끝나고 앱이 모든 곳에서 충돌하게됩니다.


답변

최선의 접근 방식은 Nick이 제안한 원격 API 방법입니다. 그는 GoogleApp Engine 엔지니어 이므로 그를 믿으세요.

그렇게 어렵지 않으며 최신 1.2.5 SDK는 선반에서 remote_shell_api.py를 제공합니다. 새 SDK를 다운로드하십시오. 그런 다음 다음 단계를 따르십시오.

  • 명령 줄에서 원격 서버 연결 : remote_shell_api.py yourapp /remote_api
    셸은 로그인 정보를 요청하고 권한이있는 경우 Python 셸을 만듭니다. app.yaml에서 / remote_api에 대한 설정 URL 핸들러가 필요합니다.

  • 삭제하려는 항목을 가져 오면 코드는 다음과 같습니다.

    from models import Entry
    query = Entry.all(keys_only=True)
    entries =query.fetch(1000)
    db.delete(entries)
    \# This could bulk delete 1000 entities a time

2013-10-28 업데이트 :

  • remote_shell_api.py이 (가)로 바뀌 었으므로 설명서 에 따라 remote_api_shell.py와 연결해야합니다 .remote_api_shell.py -s your_app_id.appspot.com

  • 새로운 실험 기능인 Datastore Admin 이 있습니다. 앱 설정에서 사용 설정 한 후 웹 UI를 통해 데이터 저장소를 일괄 삭제하고 백업 할 수 있습니다.


답변

Datastore에서 대량 삭제를 처리하는 가장 빠르고 효율적인 방법 은 최신 Google I / O 에 발표 된 새로운 매퍼 API 를 사용하는 것 입니다.

선택한 언어가 Python 이면 mapreduce.yaml 파일에 매퍼를 등록 하고 다음과 같은 함수를 정의하기 만하면 됩니다.

from mapreduce import operation as op
def process(entity):
 yield op.db.Delete(entity)

자바 당신은에보고해야한다 이 문서 같은 기능을 제안한다 :

@Override
public void map(Key key, Entity value, Context context) {
    log.info("Adding key to deletion pool: " + key);
    DatastoreMutationPool mutationPool = this.getAppEngineContext(context)
            .getMutationPool();
    mutationPool.delete(value.getKey());
}

수정 :
SDK 1.3.8부터이 목적을위한 Datastore 관리 기능 이 있습니다.


답변

서버 를 실행할 때 개발 서버 데이터 저장소를 지울 수 있습니다 .

/path/to/dev_appserver.py --clear_datastore=yes myapp

또한 축약 할 수 있습니다 --clear_datastore-c.


답변

많은 양의 데이터가있는 경우 스크립트를 사용하여 삭제해야합니다. 하지만 remote_api를 사용하여 간단한 방식으로 클라이언트 측에서 데이터 저장소를 지울 수 있습니다.


답변

시작합니다. 데이터 저장소 관리자로 이동 한 다음 삭제할 항목 유형을 선택하고 삭제를 클릭합니다. Mapreduce가 삭제를 처리합니다!


답변

App Engine의 Datastore에서 항목을 제거하는 데 사용할 수있는 몇 가지 방법이 있습니다.

여기에 이미지 설명 입력

  1. 먼저 항목을 정말로 제거해야하는지 생각해보십시오. 이것은 비싸고 제거하지 않는 것이 더 저렴할 수 있습니다.

  2. Datastore 관리자를 사용하여 모든 항목을 직접 삭제할 수 있습니다.

  3. Remote API를 사용하고 대화식으로 항목을 제거 할 수 있습니다.

  4. 몇 줄의 코드를 사용하여 프로그래밍 방식으로 항목을 제거 할 수 있습니다.

  5. 작업 대기열 및 커서를 사용하여 대량으로 제거 할 수 있습니다.

  6. 또는 Mapreduce를 사용하여 더 강력하고 멋진 것을 얻을 수 있습니다.

이러한 각 방법은 다음 블로그 게시물에 설명되어 있습니다.
http://www.shiftedup.com/2015/03/28/how-to-bulk-delete-entries-in-app-engine-datastore

도움이 되었기를 바랍니다.