2011-07-27 9 views
0

현재 Spring/JPA/Google App Engine을 사용 중입니다. 걱정할 문제가 있습니다.Google App Engine, BigTable 및 모델 개발

GAE의 멋진 점은 일단 매핑이 정의되면 데이터를 삽입하면 모든 데이터가 저장된다는 것입니다.

그러나 매핑을 변경하면 이전 데이터로 어떻게 할 수 있습니까? 무언가가 바뀔 때마다 마이그레이션 스크립트를 만들어야합니까? 이 경우 Liquibase 또는 이와 비슷한 것을 사용할 수 있습니까? 아니면 기존 데이터에서 이러한 변경 사항을 처리 할 수있는 또 다른 방법이 있습니까?

도움을 주셔서 감사합니다. Rolf

답변

1

변경 사항의 성격에 따라 다르지만 대부분의 경우 최소한 가벼운 업데이트가 필요합니다. 명심해야 할 중요한 점 중 하나는 설계 중에 부모 - 자식 관계 (자세한 내용은 this previous question 참조)와 엔티티 그룹입니다. 부모는 엔티티 키의 일부가되므로 매우 불변합니다. 키 이름과 동일합니다.

또 다른 것은 앱 엔진 엔티티가 스키마가 없다는 것입니다. 예를 들어 어떤 클래스가 Foo이고 갑자기 속성을 추가하는 경우 prop = db.BooleanProperty(default=True), 기존의 Foo 엔티티는 모두 prop이 True로 설정되어 있지 않지만 새 속성은 True로 설정됩니다. 마찬가지로 ReferencePropertyListProperty(db.Key)을 수동으로 관리해야합니다. App Engine에는이 작업을 도와주는 _set 연산자가 있지만 솔직히 말해서 내가 신뢰할 수없는 약간의 것으로 밝혀졌습니다. 실제로는 안된다는 사실을 알았을 때 _set이 비어 있습니다. 이에 상관없이 _set 기능 사용에 대한 설명은 documentation입니다.

+0

안녕하세요, 답변 주셔서 감사하지만 링크는 자바가 아닌 파이썬과 관련이 있습니다. – Rolf

+0

아, 죄송합니다. 질문에 명시 적으로 자바 레이블이 지정되지 않았으므로 어느 것이 든 괜찮을 것이라고 생각했습니다. 자바로 작업한다면,'_set' 물건은 당신에게는 적용되지 않지만, 내가 다루는 코드가 다르게 보일지라도, 제기 된 포인트는 여전히 유효합니다. –