4

必要のない多数のオブジェクトをデータストアから削除しました(そのうちの約7000個)。これらの各オブジェクトには、文字列(blobキー)によって参照されるblobが関連付けられていました。

ご想像のとおり、これらのブロブを削除するのを忘れました。今はそれらへの参照はありませんが、削除したいと思います。私はそれをする方法を見つけることができないようです。どんな助けでもありがたいです。

UPDATE 解決策が見つかりました。

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);
4

1 に答える 1

11

更新解決策が見つかりました。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);
于 2011-03-20T09:05:17.163 に答える