0

기본적으로 색인 생성은 ndb 기반 모델 클래스의 모든 입력란에 사용됩니다.Google Datastore의 색인

필드의 색인 정의를 변경하고 응용 프로그램을 다시 배포하면 어떻게됩니까? 모델 클래스의 변경 사항을 기반으로 해당 필드에 대해 색인을 제거하거나 다시 작성합니까?

또는 일단 정의되면 변경할 수없는 엔티티 관계와 비슷합니다. 나는이 시점에서, 최종 신청서에서 색인을 생성해야하는 필드가 몇 개인 지 확신 할 수 없기 때문에이를 묻는 중입니다.

+0

나는 이것을 실험하는 좋은 방법을 발견합니다. 가능하다면 인터넷에서 임의의 사람에게 물어보십시오. –

+0

조언 해 주셔서 감사합니다! 이것은 stackoverflow에 대한 질문 중 적어도 95 %에 대한 유효한 답변입니다. –

+0

이 사실입니다. 앱에서 로컬로 쿼리를 실행하면 index.yaml https://cloud.google.com/appengine/docs/python/config/indexconfig가 생성됩니다. 여기에 "사용자가 직접 색인을 삭제하려면 파일을 수동으로 수정하기 만하면됩니다. 더 이상 사용하지 않거나 개발 웹 서버에서 생성하지 않은 색인을 정의 할 수 있습니다. " 따라서 해당 파일 당 배포 할 때 자체 정렬해야합니다. –

답변

2

엔티티 개체의 정의를 언제든지 변경할 수 있지만 중요한 것은()을 (를) 넣을 때 속성의 인덱스가 설정되었는지 여부입니다. 인덱싱되지 않은 "이름"속성을 가진 객체 묶음을 삽입했다고 가정 해보십시오. 나중에 나는 그 엔티티들에 미래의 put()의 인덱스를 추가한다. 모든 엔티티는 여전히 데이터 저장소에 있으며, 색인 된 항목은 쿼리 가능합니다. 언어 로컬 모델 속성 (예 : objectify를 사용하여 Java @Entity 클래스)에서 인덱싱을 제거한 다음 put()을 수행하면 비슷한 논리가 적용됩니다.

이것은 스키마가없는 데이터 저장소를 갖는 것을 의미합니다. 그것들은 속성의 모든 다른 조합과 그것들 각각에 대한 온/오프의 색인을 가질 수 있습니다. 이 엔티티들을 진정으로 바인딩하는 유일한 방법은 사용하는 프레임 워크에 의해 클래스 네임으로 설정되는 "종류"입니다. 또는 진정한 저수준 API를 사용한다면 손으로 설정하십시오.

Read more here 스키마가없는 데이터 저장소에서 색인 생성이 어떻게 작동하는지 더 잘 이해할 수 있습니다. 링크 된 섹션을 읽으면이 질문에 대한 답변이 완전히 나옵니다.