4

이 필요하지 않은 많은 수의 개체가 데이터 저장소에서 삭제되었습니다 (약 7000 개). 해당 객체 각각에는 String (blob 키)으로 참조되는 blob이 있습니다.

지금까지 짐작 하셨겠지만, 나는 그 얼룩을 삭제하는 것을 잊었습니다. 이제 참조 할 권한이 없지만 삭제하려고합니다. 나는 그렇게 할 방법을 찾을 수없는 것 같습니다. 도움이 될 것입니다.

업데이트 해결책을 찾았습니다.appengine blobstore에서 고아 방울 지우기

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 
List<BlobInfo> blobsToCheck = new LinkedList<BlobInfo>(); 
Iterator<BlobInfo> iterator = null; 
if(afterBlobKey == null){ 
    iterator = new BlobInfoFactory().queryBlobInfos(); 
}else{ 
    iterator = new BlobInfoFactory().queryBlobInfosAfter(new BlobKey(afterBlobKey)); 
} 

while(iterator.hasNext()){ 

    blobsToCheck.add(iterator.next()); 

} 

//Check those blobs if they have reference in datastore 
//Delete using blobstoreService.delete(blobKey); 
+1

가능한 중복 [이 가능 찾을 앱 엔진 Blob 저장소에서 분리 된 모양을 삭제할 수 있나요?] (http://stackoverflow.com/questions/2935980/is-it-possible-to-find-and -delete-orphaned-blob-in-the-app-engine-blobstore) – systempuntoout

+1

@systempuntoout 감사합니다. 자바 솔루션을 찾고 있었지만, 문제를 해결하고 내 문제를 해결하는 데 도움이되었습니다. – Gaurav

+0

도움이 되니 기쁩니다. 자바 솔루션을 승인 된 것으로 표시하는 답변으로 게시 할 수 있습니다. 그것은 다른 사람들에게 도움이 될 것입니다. – systempuntoout

답변

11

UPDATE 솔루션, BlobInfoFactory 발견(). queryBlobInfos은() 내가 찾던 것입니다.

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 
    List<BlobInfo> blobsToCheck = new LinkedList<BlobInfo>(); 
    Iterator<BlobInfo> iterator = null; 
    if(afterBlobKey == null){ 
     iterator = new BlobInfoFactory().queryBlobInfos(); 
    }else{ 
     iterator = new BlobInfoFactory().queryBlobInfosAfter(new BlobKey(afterBlobKey)); 
    } 

    while(iterator.hasNext()){ 

     blobsToCheck.add(iterator.next()); 

    } 

    //Check those blobs if they have reference in datastore 
    //Delete using blobstoreService.delete(blobKey);