2012-01-17 3 views
2

Mongo 데이터베이스를 고도로 비정규 화하도록 설계했기 때문에 컬렉션에 많은 필드가 일부 필드로 포함 된 많은 문서가 생성되었습니다. 당연히 문서가 너무 크기 때문에 DB에서 다운로드하는 데 시간이 오래 걸릴 수 있습니다.Mongoid를 사용하여 데이터베이스에서 Lazily 필드를 다운로드하거나 대용량 문서를 처리합니다.

DB에서 일부 레코드를 가져올 필요가있을 때마다 필자는 원하는 필드를 선택하기 위해 .only를 사용하여 성능에 미치는 영향을 완화했지만 필자는 필 요하기 전에 추가 데이터를 다운로드해야합니다. 그리고 일반적으로 필자가 문서를 질의 할 때 어떤 필드가 필요하게되었는지를 추적하는 것이 훨씬 더 복잡합니다.

Mongoid에는 내 모델의 특정 필드를 지연로드해야만 특정 필드를 처음 액세스 할 때 서버에서 가져올 수있는 방법이 있습니까? Mongoid의 설명서를 검색하여 내장 된 것이 있는지 확인했지만 그와 같은 것을 볼 수는 없습니다. 몽고이에게이 기능을 추가 한 제 3의 보석이 있을까요?

답변

2

Mongoid는 서버에서 지연로드 데이터를 지원하지 않으며, 플러그인을 인식하지 못합니다.

기술적으로 Mongoid에 추가 할 수 있지만 수동으로 only을 지정하는 것이 좋습니다. 한 번만로드하면됩니다. 사용법에 따라 필드를 게을리하게로드 한 경우에는 필드가 액세스 될 때마다 MongoDB에서 데이터를 가져와야합니다.

의미 원래 문서로드 위에 5 개의 다른 필드를 액세스 한 경우 MongoDB에 6 개의 쿼리를 보냅니다.이 쿼리에는 일반적인 왕복/처리가 포함되어 있는데, 이는 처음에는 only에 지정하는 것과 비교됩니다.

+0

감사합니다. 저는 Mongo 컨퍼런스에서 10gen의 사람들과 이야기를 나누었습니다. 많은 조언을 드리 자면 많은 양의 데이터를 포함해서는 안되며 다른 일대일 관계에서 문서를 참조해야합니다. – Aaron

관련 문제