콘텐츠 속성을 새 모델 (PageContentModel)로 옮길 수 있습니다. PageContentModel의 부모를 PageModel (db.Model의 부모 속성 사용)으로 지정하여 참조를 구현합니다. 이렇게하면 단일 엔티티 그룹에있는 것처럼 단일 트랜잭션에서 두 개를 모두 수정할 수 있습니다. 합니다 (PageModel PageContentModel에 대한 참조를 가지고 반대) PageContentModel가 PageModel에 대한 참조를 필요로 모델링 가지의
이점 중 하나는 당신이 이제까지 1메가바이트보다 큰 만족해야하는 경우 각을 허용함으로써 그렇게 할 수 있다는 것입니다 PageModel에 1 개 이상의 PageContentModel 객체가 있고 내용을 1MB 청크로 분할하고 각 청크를 다른 PageContentModel 인스턴스에 쓰면됩니다. 컨텐트를 다시 얻으려면 PageContentModel 객체에 관련하여 "주문"속성이 있어야 컨텐트를 올바른 순서로 다시 빌드 할 수 있습니다. @Nick으로 컨텐츠를 작성하는 files api을 사용하는 것이 작업을 수행하는 다른 방법을 제안한 것처럼
PageContentModel.all().ancestor(page_model_instance)
:
는이 같은 조상 필터를 사용하는 것 PageModel 관련된 PageContentModel 인스턴스에 대한 조회하려면 blobstore의 blob에 연결 한 다음 PageModel에 BlobReferenceProperty를 지정하여 해당 BLOB를 PageModel에 연결하십시오. 나는 이제 이것을 시도 할 수있는 기회를 얻었으며 실험적인 특징 임에도 불구하고 꽤 잘 작동하고있다. 이렇게하면 콘텐츠가 매우 커지고 새로운 가격 책정 모델에 따라 실제로 데이터 저장소 모델에 콘텐츠를 저장하는 것보다 비용이 적게 듭니다.
2012 년 2 월 7 일에서 blobstore에 대한 @Nick의 제안을 포함하도록 업데이트했습니다.
좋은 아이디어 브라이스 - 감사 – Yarin
괜찮습니다. 나는 각각의 잠재적 인 여러 메가 바이트의 콘텐츠를 가진 수천 개의 기사가있는 내 응용 프로그램 중 하나에서 이것을 정확히 수행하고 있습니다. 부모 모델의 일부였던 콘텐츠를 많은 수의 개체에 대해 쿼리 할 때마다 결과 개체가 소프트 메모리 한도를 초과하는 처리기를 밀었습니다. 콘텐츠를 하위 모델로 옮기면 내 메모리 사용량을 제정신으로 유지할 수 있었고 기사 당 훨씬 더 많은 콘텐츠를 저장할 수있었습니다. 단 하나의 기사를 보여주는 페이지의 내용 만 사용하기 때문에 그 페이지를 만들기위한 추가 쿼리가 그렇게 나쁘지는 않습니다. –
굉장합니다 - 업데이트 해 주셔서 감사합니다. – Yarin