2011-01-12 2 views
0

많은 관계가있는 응용 프로그램을 작성하고 있습니다. '그림'항목은 여러 갤러리 ('갤러리')에 연결할 수 있습니다. 물론 갤러리는 여러 장의 사진을 저장할 수 있습니다.GQL에서 선호하는 것; StringListProperty 또는 ListProperty?

여기 Google 제안에 따라 '갤러리'의 외래 키를 보유하고있는 '그림'에서 목록을 사용합니다. BigTable 방식입니다.

(옛 스타일의 관계형 DB 접근 방식은 '사진'과 '갤러리'사이에서 테이블/엔티티를하는 것입니다.)

여기

내 질문 : 키를 저장할 때, 나는 갈해야 " StringListProperty "그림 '또는"ListProperty (db.Key) "더 잘 작동합니까?

StringList을 볼 수있는 한 가지 이유는 다른 값을 Keys에 저장할 수 있지만 어쨌든 더러운 스타일이 될 수 있다는 것입니다. 그러나 색인이 폭발하기 때문에 엔티티에서 하나 이상의 목록을 사용하지 않을 것을 Google이 제안했다고 확신합니다. 그래서 이것은 내가 뒷문을 지킬거야. 값이 실제로 키의 경우, 자동으로 검증 될 것 ""한 지점 형태로 ListProperty에 관해서는

.

String을 Keys로 또는 그 반대로 변환하는 것이 매우 쉽기 때문에 목록 유형 중 하나가 여기에서 선호하는 이유가 표시되지 않습니다.

성능 문제와 관련하여 필자는이 문제를 테스트 할 수있는 방법에 대해서는 잘 모릅니다. 그러나 이것이이 결정의 주요 요인이 될 것으로 보입니다.

입력 사항이 궁금합니다. 특히 누군가가 이것에 성과를 시험하거나 아주 친절하고 그것을 할 것 인 경우에.

건배, // 한스

답변

0

사용하십시오 db.ListProperty(db.Key) 당신은 키의 목록을 저장하고자하는 경우. 이진 표현으로 저장되며 문자열 목록에서 사용하는 문자열 표현보다 더 간단합니다.

목록에있는 다른 개체와 키를 믹싱하는 것이 쉽지 않습니다. 하나의 엔티티에 여러 개의 목록이있는 것은 동일한 사용자 정의 색인에서 두 개 이상의 색인을 색인하지 않으면 색인이 파열됩니다.

+0

감사합니다, Nick! 그렇게 할거야. 건배, // Hannes – Hannes

0

db.ListProperty (db.Key)를 사용하십시오. 이것은 갤러리 모델에 속성이있는 pic_list 유형이 db.ListProperty (db.Key) 인 경우 목록을 포함하는 경우 데이터 가져 오기가 문자열보다 쉽습니다. 그림 엔티티의 이름입니다. 그러면 Picture.get (// GalleryObject // .pic_list)이 그림을 모두 가져옵니다.

+0

귀중한 의견 Abdul을 보내 주셔서 감사합니다. – Hannes

관련 문제