0

게시물을 자동으로 업데이트하는 블로그를 실행하는 예를 들어 보겠습니다.같은 종류의 엔터티 그룹

클래스 (= 모델) BlogPost의 엔티티를 두 개의 다른 "그룹"(하나는 "FutureBlogPosts", 다른 하나는 "PastBlogPosts")에 보관하고 싶습니다.

블로그 게시물을 효율적으로 처리 할 수있는 합리적인 부서입니다 (별도로 쿼리하는 등).

기본적으로 문제는 내 모델의 "종류"가 항상 "BlogPost"가 될 것입니다. 그렇다면 어떻게 그것을 두 개의 다른 그룹으로 분리 할 수 ​​있습니까?

여기에 지금까지 볼 수있는 옵션은 다음과 같습니다

  • 은 두 번 같은 모델 클래스 코드를 복제 (한 번 FutureBlogPost 클래스와 PastBlogPost 클래스 (그래서 그 종류가 다를 수 있습니다) 번) - 보인다 꽤 우스운.

  • 다른 Anchestors (FutureBlogPost, "SomeConstantValue", BlogPost, #id)에 두는 것이지만이 방법에도 의미가 있습니다 (초당 1 회 쓰기?) 또한 전체 조상 - 자식 관계는 여기에 적합하지 않습니다. . (그리고 왜 내가이 옵션을 선택하면 "SomeConstantValue"를 사용해야합니까?) 다른 네임 스페이스를 사용

  • 는 - 올바른 방법은 무엇 같은 간단한 분리

너무 급진적 인 것 같다 그걸 할거야?

+0

왜 그들을 분리합니까? 이해가 안돼 .. 만약 당신이 문제가 데이터베이스에서 별도의 모델을 원한다면, 당신은 모델을 분리하지 않고 – marcadian

+0

폴리 모델을 사용할 수 있습니다. 그것은 단지 두 개의 다른 그룹에 특정 모델을 두는 것입니다 ... 하나의 그룹은 과거의 그룹입니다 블로그 게시물과 다른 블로그 게시물입니다. – shaylevi2

답변

1

마침내 관련 기사를 찾은 것 같습니다.

모든 종류의 엔티티를 특정 종류로 가져 와서 특정 속성으로 가져 오면 아무런 차이가 없으므로 둘 다 백그라운드에서 동일한 유형의 작업이 필요합니다. (그러나 특정 전체 키로 쿼리하는 것이 더 빠름)

기본적으로 "유형"또는 특정 엔터티를 그룹으로 분할하는 데 사용할 다른 속성을 추가하는 것은 그것은 특정 종류. 자세한 내용은 여기

읽기 : 보시다시피 https://developers.google.com/appengine/articles/storage_breakdown

, EntitiesByKind 및 EntitiesByProperty 모두 원래의 키에 인덱스 테이블에 지나지 않습니다.

마지막으로 대답입니다.

0

부울을 "BlogPost"엔터티에 넣지 않는 이유는 과거의 경우 0, 미래의 경우 1? 따로 따로 쉽게 쿼리 할 수 ​​있습니다.

+0

이것이 가장 좋은 방법입니까? 오히려 비효율적 인 것처럼 보이기 때문입니다. 위의 예제는 단지 예일뿐입니다. 15 개의 그룹으로 나누고 싶다면 "GroupType"으로 매개 변수를 저장 하시겠습니까? 그리고 새 게시물을 저장할 때 문자열을 사용하여 형식을 지정해야합니까? – shaylevi2

+0

부모 - 자식 관계를 잘 수행하면 전체 엔티티 그룹을 빠르게 잠글 위험이 있으며 1 쓰기/초 제한은 놀랄만 한 것이 아니며 네임 스페이스를 사용하거나 모델 클래스를 복제 할 수는 있지만 둘 다 길은 조금 과잉스러운 것처럼 보입니다. 불행히도 데이터 저장소에서는 다른 방식으로 저장/검색하는 방식을 사용하기 때문에 많은 "모범 사례"가 여전히 설정되어야합니다. 네가 원하는 것을 위해 네가 15 개의 그룹을 가지고 있다면 부울 (int)을 믿는다. 좋은 방법이다. – Patrice

+0

그 이유는 내가 더 나은 대답이 있어야한다고 생각했기 때문입니다. O – shaylevi2