2010-03-21 4 views
0

) countrycodes가있는 테이블이 있는데,이 2 자리 코드를 저장하는 가장 좋은 방법은 일반 속성 또는 key_name 속성에 있습니다.Google 애플리케이션 엔진 국가 코드 (키 이름

나는 key_name을 사용하면 더 빠른 성능을 낼 수있을 것이라고 생각 했습니까?

톤.

+0

"참고 : 키를 반환하는 쿼리는 엔터티를 반환하는 쿼리보다 빠르고 비용이 적습니다. 키 자체는 이미 인덱스에 있으므로 실제 엔터티를 가져올 필요가 없습니다. 키를 쿼리 결과에서 가져옵니다. 예를 들어 결과 만 삭제하려는 경우 키 전용 쿼리 사용을 고려해보십시오. " - http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html#Queries_on_Keys – Jasper

답변

0

key_name을 사용할지 여부는 사용 방법에 따라 다릅니다. 나는 당신이 당신의 질문에있는 정보에 기초하여이 국가 코드를 어떻게 사용하고 싶은지 완전히 확신하지 못합니다. 그러나 예를 들어 "us"에서 "United States"를 얻으려면 두 자로 된 코드를 기반으로 국가의 전체 이름을 조회 할 수 있기를 원합니다. 이 경우 다음과 같은 엔티티를 가질 수 있습니다.

class CountryName(db.Model): 
    name = db.StringProperty() 

    @classmethod 
    def lookup_by_code(cls, code): 
     country_name = "" 
     country = cls.get_by_key_name(code) 
     if country is not None: 
      country_name = country.name 

     return country_name 

이제이 코드는 완전하지 않습니다. 모델에 데이터를 채워야하고이 방법은 역방향 조회를 허용하지 않습니다. 국가 이름이있을 때 코드를 가져 오는 것이지만이 방법을 사용하면 key_names를 어떻게 사용할 수 있는지 알 수 있습니다. 이렇게하면 코드와 이름이 필드로 모두 포함 된 모델을 만드는 것이 훨씬 빠릅니다.

관련 문제