이 질문에 대한 정답은 하나도 없습니다. 최적의 솔루션은 주로 특정 시점에 삭제 된 상태로 유지 될 가능성이있는 엔티티의 비율에 따라 달라집니다.
하나의 옵션은 @Index(IfTrue.class) boolean active;
같은 필드를 저장하고 모든 쿼리에이 필터를 추가하는 것입니다
ofy.load().type(Thing.class).filter("size >", 20).filter("active", true)
이것의 단점은 별도의 인덱스를 추가 필요로한다는 것이다 - 당신이 지금 여러 프로퍼티를 필요로 할 수 있기 때문에 가능하면 여러 단일 속성 인덱스가 충분할 인덱스.
또는 '삭제됨'플래그를 저장하고 삭제 된 항목을 쿼리 결과에서 수동으로 제외 할 수 있습니다. 유지 관리해야 할 인덱스가 적지 만 원하지 않는 레코드를 가져올 때 각 쿼리에 추가 오버 헤드가 추가됩니다. 삭제 된 항목이 드문 경우이 문제가되지 않습니다.
마지막 트릭. 아마 가장 유용 할 것이므로 삭제 된 날짜를 인덱스에 저장하는 것이 가장 좋습니다. @Index Date deleted;
이렇게하면 filter("deleted", null)
이 활성 항목을 가져올 수 있으며 삭제할 수있는 정말 오래된 항목을 얻기 위해 datestamp로 필터링 할 수 있습니다. 그러나 이로 인해 삭제 된 날짜가 여러 속성 색인으로 색인화되어 삭제 된 항목의 비율이 높을 경우 색인 크기가 크게 증가 할 수 있습니다. 이 경우 @Index(IfNull.class) Date deleted;
을 사용하고 map-reduce를 사용하여 충분히 오래된 엔티티를 제거 할 수 있습니다.
Datastore는 하나뿐입니다. 아마도 당신은 같은 종류의 존재를 의미했을 것입니다. –
예 ... 동일한 엔티티 종류를 의미했습니다. Peter에게 수정을위한 –