안에 난으로 관계형 데이타베이스에 있던 동적 데이터 저장을 만들고있어 form_data와 field_data를 MongoDB로 옮길 계획입니다. 이제는 모든 form_data에 대해 하나의 콜렉션을 사용하여 MongoDB 콜렉션을 설계하고 그 안에 map_data를 이동시키고 key는 field_id이고 value는이 field_data의 값입니다. 각 양식 레코드에 대한 컬렉션 및 form_data에 직접 데이터를 저장하지 않고이 경우 모든 데이터가 일치합니다.동적 데이터 MongoDB를
답변
MongoDB와 같은 문서 지향 데이터베이스에서는 여러 문서를 연결하기 위해 데이터베이스에서 JOIN 연산을 지원하지 않으므로 MongoDB와 같은 문서 지향 데이터베이스에서 참조에 대한 집계를 항상 선호해야합니다.
두 엔티티 사이에 "A가 많은 B"관계를 두 개의 테이블 A와 B로 모델링해서는 안되며, 각 A에 B 오브젝트의 임베디드 배열이있는 A 모음 하나를 모델링해야합니다.
그러나 MongoDB와 관련하여 MongoDB는 성장하는 개체를 좋아하지 않습니다. 개체가 수명 기간 동안 점점 더 많은 데이터를 축적하면 개체가 커집니다. 즉, MongoDB에 할당 된 하드 드라이브 공간이 계속해서 다시 실행되므로 공간 재 할당이 필요합니다. 이렇게하면 성능이 향상되고 데이터베이스가 조각납니다. 또한 MongoDB는 문서 작성시 인위적인 크기 제한이 있으며 주로 개발자가 개체를 디자인하지 못하도록 막습니다.
그 때문에은 :
데이터 생성시 존재 직접 삽입.
생성 후 점점 더 많은 데이터가 추가되면 다른 컬렉션에 넣으십시오.
양식에 X 필드가있는 경우 필드 수는 평생 동안 많이 변경되지 않을 가능성이 큽니다. 따라서 필드와 설명을 폼 객체에 직접 포함시켜야합니다.
그러나 이러한 양식에 입력 된 답변 수는 시간이 지남에 따라 커질 것이며 이는 별도의 컬렉션에서 개별 개체로 처리되어야 함을 의미합니다.
두 개의 콜렉션, forms
및 form_data
을 사용하는 것이 좋습니다.
forms
의 각 문서에는 정적 필드 속성이있는 fields
의 하위 개체가 포함되어 있습니다. form_data
에
각 문서는 대응하는 형태의 _id와 필드를 가지며 forms
의 fields
서브 - 객체와 동일한 키를 사용하여 항목을 그 형태로 만든 사용자 저장 field_data
의 부 객체를 포함합니다.
공용 웹 사이트에 최신 통계를 게시하려는 경우처럼 사용 사례에 집계 된 데이터에 자주 액세스해야하는 경우이 정보를 forms
필드에 저장하여 많은 form_data
문서에 대해 값 비싼 집계 쿼리. 일반적으로 MongoDB는 데이터의 의미보다는 성능 요구 사항에 따라 데이터베이스 스키마의 방향을 지정할 것을 권장합니다.
귀하의 말에 대해서는 "이 경우 모든 데이터는 일관성이 있습니다" : MongoDB는 참조 무결성을 시행하지 않습니다. 응용 프로그램이 문서를 삭제하거나 변경하면 응용 프로그램에서 다른 문서의 오래된 참조를 수정해야합니다.
- 1. MongoDB를 동적 값
- 2. MongoDB를 동적 EmbeddedDocument - 그래서 MongoEngine
- 3. MongoDB를 선택 데이터
- 4. 봄 데이터 MongoDB를
- 5. MongoDB를 집계 데이터
- 6. 봄 데이터 MongoDB를 BigDecimal를 지원
- 7. 여기 내 데이터 형식의 MongoDB를
- 8. MongoDB를 사용한 데이터 모델의 딜레임
- 9. 쿼리 문서 - 봄의 데이터 MongoDB를
- 10. MongoDB를 :
- 11. MongoDB를 :
- 12. MongoDB를 수집
- 13. 내가 MongoDB를 시작으로하고 MongoDB를
- 14. MongoDB를 : 나는 MongoDB를 사용하고
- 15. 데이터 바인딩 동적 데이터
- 16. MongoDB를 -
- 17. MongoDB를
- 18. MongoDB를 :
- 19. MongoDB를
- 20. MongoDB를
- 21. MongoDB를
- 22. MongoDB를
- 23. MongoDB를 -
- 24. MongoDB를
- 25. MongoDB를
- 26. MongoDB를
- 27. MongoDB를
- 28. MongoDB를
- 29. MongoDB를
- 30. MongoDB를
필자는 사실 모양과 필드에 JPA를 사용하여 캐싱의 이점을 얻으 려하고 자주 변경되지 않으므로 데이터에 대해서는 데이터가 커지면서 확장성에 MongoDB를 사용할 것입니다. 그리고 여기 내 질문입니다, 그것은 모든 form_data 하나 "컬렉션"을 만드는 것이 좋습니다 또는 각 양식 유형 "컬렉션"을 만드는 것이 좋습니다? –
한 번에 둘 이상의 컬렉션을 쿼리 할 수 없습니다. 따라서 각 양식이 완전히 분리 된 응용 프로그램이라는 것을 절대적으로 확신하지 못하면 교차 참조를 수행하지 않으므로 모든 양식을 하나의 모음으로 모아야합니다. – Philipp
내 응용 프로그램은 REST 인터페이스를 사용하여 다른 양식을 동적으로 처리하므로 나머지 URL과의 관계를 처리하므로 양식 데이터 엔터티간에 MongoDB 수준의 관계가 필요하지 않지만 모든 양식 유형에 대한 액세스를 동시에 제공해야합니다. –