2011-07-06 11 views
0

내 모델에 대한 범용 데이터 버전을 만드는 중입니다. 새로운 종류의 SomeModel(db.Model)에 대한 새 백업을 동적으로 생성하고 싶습니다. BackupSomeModel.기존 모델 클래스의 모든 동일한 속성으로 동적으로 새 종류를 만듭니다.

파이썬에서이 작업을 수행하는 방법에 대한 조언이 있으십니까? 또는 GAE에서 데이터를 버전 화하는 방법에 대한 일반적인 아이디어가 있습니까?

추신 : in here으로 설명 된 해결책을 벗어나려고합니다.

+1

왜 모델 정의를 복제해야합니까? 정확히 당신이 성취하고자하는 것은 무엇입니까? 가능성이 더 좋은 해결책이 있습니다. –

+0

사용자 데이터의 90 %에 대한 변경 로그가 필요합니다. 그것은 정책 준수를위한 것이며, 독서에 거의 사용되지 않을 것이며, 나는 원래 종류와 분리하여 저장되기를 원합니다. –

+0

지금까지 Expandable 모델 클래스를 사용하여 모든 데이터를 복사했습니다 (예 : 데이터 및 시간을 datetime으로 저장해야하는 등의 데이터 정리가 필요함).하지만 각 모델마다 백업 유형이 필요합니다. 내 모든 데이터에 대한 하나의 백업 종류. –

답변

1

가장 쉬운가이처럼 수행하는 방법 :

class BackupSomeModel(SomeModel): pass 

는하지만, 감사 로그를 유지하는 별도의 종류의 직렬화 된 프로토콜 버퍼를 저장하는 경우는 아마 더 나은 방법입니다. 나는 그들이 감사하는 레코드의 하위 엔티티 인 엔티티 인 'AuditLog'를 제안하고 각 수정 후에 데이터의 직렬화 된 PB를 포함합니다.

+0

PB 기반 솔루션은 흥미 롭습니다. 시도해 보겠습니다. 이전 버전을 보여줄 필요가 있다고하더라도 데이터를 즉시 역 직렬화 할 수 있으며 데이터 저장소에서 데이터를 가져 오는 것과 비용이 거의 같을 수 있습니다. 맞습니까? –

+1

@WooYek 수정. 그것은 약간 더 높을 것이지만, 나는 그것이 어쨌든 중요한 경로 운영이 될 수는 없다고 생각합니다. –

관련 문제