Mongodb: 인덱스가 있는 여러 컬렉션 또는 하나의 빅 컬렉션
mongo로 데이터를 모델링하는 데 도움이 필요합니다.제 경험의 대부분은 관계형 DB에 있었고, 저는 이제 막 mongo로 시작했습니다.저는 다양한 이벤트에 대한 데이터를 모델링하고 있습니다.
- 의 각 '이벤트' 필드는 동일합니다.
- 각 '이벤트'에는 수백에서 수백만 개의 문서/행이 있습니다.
- 이벤트는 역동적입니다. 즉, 필요에 따라 새로운 이벤트가 생성됩니다. 즉, 새로운 '2016 하계 올림픽' 이벤트가 생성될 수 있습니다.
가장 중요한 것은 이벤트(CRUD 작업)를 처리할 때 사용자가 이벤트 이름을 지정해야 한다는 것입니다.
지금까지 이를 위한 몇 가지 방법을 알 수 있습니다. 데이터 모델을 '잘못된' 방식으로 설정하는 데 큰 실수를 범하고 싶지 않습니다.
모든 이벤트에 대한 데이터를 포함하는 하나의 '이벤트' 컬렉션입니다.'이벤트' 이름의 인덱스입니다.쿼리는 다음과 같습니다.
db.events.find({event: 'Summer Olympics 2012');
{event: 'Summer Olympics 2012', attributes: [{name: 'joe smith', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'jane doe', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'john avery', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'ted williams', .... }
db.events.find({event: 'Summer Olympics 2013'})
{event: 'Summer Olympics 2013', attributes: [{name: 'steve smith', .... }
{event: 'Summer Olympics 2013', attributes: [{name: 'amy jones', .... }
모든 이벤트 이름을 추적하기 위한 컬렉션을 포함하여 제공되는 각 새 이벤트에 대한 컬렉션입니다.각 이벤트가 서로 다른 컬렉션에 저장되므로 이벤트 이름에 대한 인덱스가 필요하지 않습니다.
// multiple collections, create new as needed
db.summer2012.find() // get summer 2012 docs
db.summer2016.find() // get summer 2016 docs
//'events' collection
db.events.find() // get all events that I would have collections for
{name: 'summer2012', title: 'Summer Olympics 2012'};
{name: 'summer2016', title: 'Summer Olympics 2016'};
#1 이벤트 중 하나에 500개의 문서만 있더라도 '이벤트'당 조회되는 수백만 개의 레코드가 있는 이벤트가 각각 100개에 도달하면 속도가 느려질까 봐 약간 걱정됩니다.
#2의 경우 매번 새로운 컬렉션을 생성하여 여기서 몽고 모델을 '스커트'하고 있으며 이벤트가 발생합니까?
어떤 의견/아이디어라도 좋습니다. 어떤 것이 더 나은 결과를 가져올지, 아니면 어떤 것이 앞으로 더 큰 문제를 일으킬지 모르기 때문입니다.주변(몽고 사이트 포함)을 둘러봤는데 정말 구체적인 답을 찾을 수가 없습니다.
특정 상황에서는 정보를 단일 컬렉션이 아닌 여러 컬렉션에 저장할 수 있습니다.
다양한 환경 및 응용프로그램에 대한 로그 문서를 저장하는 샘플 수집 로그를 생각해 보십시오.로그 모음에는 다음 형식의 문서가 포함되어 있습니다.
log: "dev", ts: ..., 정보: ...{log: "filename", ts: ..., 정보: ...}
전체 문서 수가 적을 경우 문서를 유형별로 그룹화할 수 있습니다.로그의 경우 logs.dev 및 logs.debug와 같은 고유한 로그 컬렉션을 유지 관리하는 것이 좋습니다.logs.dev 컬렉션에는 개발 환경과 관련된 문서만 포함됩니다.
일반적으로 컬렉션 수가 많으면 성능 저하가 크지 않고 성능이 매우 우수합니다.고유한 컬렉션은 높은 처리량의 배치 처리에 매우 중요합니다.
또한 10명의 젠 남자와 이야기했습니다.그는 정말 큰 컬렉션에 대해 더 작은 특정 컬렉션으로 분리할 수 있는 여러 가지 이점을 나열했습니다.모든 데이터에 대해 하나의 컬렉션을 사용하고 인덱스를 사용하는 것에 대한 그의 의견은 다음과 같습니다.
여러분이 무언가를 할 수 있다고 해서 해야 한다는 것을 의미하지는 않습니다.데이터를 적절하게 모델링합니다. 하나의 큰 컬렉션과 인덱스에 저장하기가 쉬울 수 있지만 항상 최선의 방법은 아닙니다.
언급URL : https://stackoverflow.com/questions/15314769/mongodb-multiple-collections-or-one-big-collection-w-index
'programing' 카테고리의 다른 글
| C# 4.0의 '다이나믹' 유형은 무엇에 사용됩니까? (0) | 2023.05.29 |
|---|---|
| psql: FATAL: 역할 "postgres"가 존재하지 않습니다. (0) | 2023.05.29 |
| 시도에서 최종적으로 사용해야 하는 이유또 만나 (0) | 2023.05.29 |
| 쿼리 실행 시 Sequetize에서 콘솔로 SQL을 출력하지 못하게 합니까? (0) | 2023.05.29 |
| Angular 4: 구성 요소 팩토리를 찾을 수 없습니다. @NgModule.entryComponents에 추가했습니까? (0) | 2023.05.29 |