누구든지 Google App Engine 에서 모든 데이터 저장소를 삭제하는 방법을 알고 있습니까?
답변
라이브 데이터 저장소 에 대해 이야기하는 경우 앱의 대시 보드를 열고 (appengine에 로그인) 데이터 저장소-> dataviewer를 열고 삭제하려는 테이블의 모든 행을 선택한 다음 삭제 버튼을 누릅니다. 모든 테이블에 대해 이렇게하십시오). remote_api를 통해 프로그래밍 방식으로 동일한 작업을 수행 할 수 있습니다 (하지만 사용하지 않았습니다).
개발 데이터 저장소 에 대해 이야기하는 경우 “./WEB-INF/appengine-generated/local_db.bin” 파일을 삭제하기 만하면 됩니다. 다음에 개발 서버를 실행할 때 파일이 다시 생성되고 명확한 db가 생성됩니다.
나중에 프로젝트를 청소하십시오.
이것은 Google Application Engine으로 게임을 시작할 때 편리하게 사용할 수있는 작은 문제 중 하나입니다. 개체를 데이터 저장소에 유지 한 다음 지속 가능한 엔터티에 대한 JDO 개체 모델을 변경하면 쓸모없는 데이터로 끝나고 앱이 모든 곳에서 충돌하게됩니다.
답변
최선의 접근 방식은 Nick이 제안한 원격 API 방법입니다. 그는 Google 의 App 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에서 항목을 제거하는 데 사용할 수있는 몇 가지 방법이 있습니다.
-
먼저 항목을 정말로 제거해야하는지 생각해보십시오. 이것은 비싸고 제거하지 않는 것이 더 저렴할 수 있습니다.
-
Datastore 관리자를 사용하여 모든 항목을 직접 삭제할 수 있습니다.
-
Remote API를 사용하고 대화식으로 항목을 제거 할 수 있습니다.
-
몇 줄의 코드를 사용하여 프로그래밍 방식으로 항목을 제거 할 수 있습니다.
-
작업 대기열 및 커서를 사용하여 대량으로 제거 할 수 있습니다.
-
또는 Mapreduce를 사용하여 더 강력하고 멋진 것을 얻을 수 있습니다.
이러한 각 방법은 다음 블로그 게시물에 설명되어 있습니다.
http://www.shiftedup.com/2015/03/28/how-to-bulk-delete-entries-in-app-engine-datastore
도움이 되었기를 바랍니다.