Google App Engine에서 대량 엔티티 삭제
-
06-07-2019 - |
문제
Java를 사용하여 Datastore에서 원치 않는 데이터를 삭제하려고 노력하고 있으며 10 초 안에 가능한 한 많은 항목을 삭제하도록 수정 한 DatastorEservice를 사용하여 일부 코드를 찾았습니다.
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query query = new Query("PostalCodes");
long starttime = (new Date()).getTime();
for (Entity entity : datastore.prepare(query).asIterable()) {
datastore.delete(entity.getKey());
if ((new Date().getTime()) > (starttime + 10000))
break;
}
내가 이것을 실행할 때 효과가있는 것 같습니다. 콘솔의 데이터 뷰어를 확인하고 삭제하려는 종류 ( "PostalCodes")가 사라졌지만, 다음날이 작업을 수행 한 다음날 모든 것이 복원되었습니다. 플러시하거나 커밋하라는 전화가 누락 되었습니까?!?
더 좋은 방법이 있습니까?
해결책
비슷한 질문을 살펴보십시오. Google App Engine에서 모든 종류의 데이터 삭제 다른 방법은 정보 삭제를 대량으로 삭제합니다.
다른 팁
'Datastore Admin'내에서 특정 유형의 모든 엔티티를 삭제할 수 있습니다.
엔티티를 선택한 다음 '엔티티 삭제'를 선택하십시오.
public final class PMF {
private static final PersistenceManagerFactory pmfInstance =
JDOHelper.getPersistenceManagerFactory("transactions-optional");
private PMF() {
PersistenceManagerFactory pmfInstance = PMF.get();
PersistenceManager pm = pmfInstance.getPersistenceManager();
pm.deletePersistentAll();/* by using this all the entities which are created earlier will be deleted*/
}
public static PersistenceManagerFactory get() {
return pmfInstance;
}
}
제휴하지 않습니다 StackOverflow