2014-11-05 2 views
0

내 응용 프로그램, 할당량 세부 정보에서 인덱스의 수는 200 개 중 200 개가됩니다.하지만 Datastore 인덱스에서 계산할 때 200 개가 넘는 인덱스가 있습니다. 그래서 왜 200 개가 넘는 인덱스를 추가 할 수 있습니까? 인덱스의 수 https://cloud.google.com/appengine/docs/quotas 무료 기본 일일 한도에서GAE 데이터 저장소 인덱스 제한

2는 (*.이 아닌 일상을 제한하는 총 제한) (200) * 당신이 그것을 지불 할 때

은 그래서 의미의 당신이 200 개 이상을 추가합니다 색인? 그게 사실이야?

셋째는, 내 코드 : ModelMeta meta = ModelMeta.get(); List modelList = Datastore.query(meta).filter(meta.fieldA.equal("0")) .filter(meta.fieldB.equal("1").asList(); 이벤트 나는 모든 일이 OK 실행의 여부에 대한 인덱스를 정의했다. 이유를 이해하지 못하겠습니까?

도움 주셔서 감사합니다.

답변

3
  1. 개별 속성에 대한 색인은 한도에 포함되지 않습니다. 어디에서나 정의 할 필요는 없습니다. 즉, 속성에 대한 색인이 생성되면 필터에서 사용할 수 있고 쿼리 결과를 정렬하는 데 사용할 수 있습니다.

  2. 복합 색인을 정의하기 만하면 App Engine Java SDK가 자동으로 색인을 생성합니다. 마지막으로 인덱스를 수동으로 추가해야한다는 것을 기억하지 않지만 로컬에서 많은 테스트를 수행하므로 모든 인덱스를 자동으로 생성하는 데 도움이됩니다.

  3. 200 개가 넘는 합성 색인이 필요하다면 거의 틀린 일을 할 것입니다. 200은 아무리 복잡한 데이터 모델이라 할지라도 아무도 도달 할 수없는 미친 한계라고 생각합니다.

당신에게 예를 위해, 나는 20 개 개의 모듈, 거의 매우 복잡한 관계 기관의 백 종류, 그리고 수천 개체 속성의 총 수와 응용 프로그램을 가지고있다. App Engine 콘솔에는이 앱에 대해 24 개의 색인이 표시됩니다.

많은 합성 색인을 작성하는 대신 모든 엔티티를 검색 한 다음 필터링하는 것이 더 저렴하고 빠른 경우가 많이 있습니다. 그 이유는 간단합니다. 인덱스는 데이터 자체보다 훨씬 많은 공간을 쉽게 차지할 수 있으며 엔티티의 쓰기 비용은 인덱스 된 속성 및 복합 인덱스의 수에 직접 비례합니다. 따라서 각 색인 된 속성에 대해 개별 색인 위에 200 개의 복합 색인이 가장 중요한 비용 및 성능 문제가 될 것입니다. 또한 데이터 모델을 신중하게 설계하여 불필요한 인덱스를 피할 수있는 다른 방법이 있습니다.

관련 문제