2012-03-30 4 views
11

MongoDB의 시스템 및 DB 아키텍처에 대해 더 알고 싶습니다.MongoDB 데이터베이스 아키텍처

MongoDB가 문서를 저장하고 검색하는 방법을 이해하려고합니다. 모든 것이 메모리에 있다면.

MongoDB와 오라클 간의 비교 분석은 보너스이지만, 대부분 MongoDB 아키텍처 그 자체를 이해하는 데 초점을 맞추고 있습니다.

모든 포인터가 도움이 될 것입니다.

+0

전문가가 될 수는 없지만 디스크에 쓰는 것이 가장 확실합니다 (언제/얼마나 자주/항상 플러시하는지/명시 적으로 플러시 할 수 있는지 여부는 확실하지 않음). 실제로, 이것은 꽤 많은 공간을 잡아 먹습니다. (인덱스를 할 수있을 것 같아요.) –

+0

일반적으로 비교할 수없는 비교로서, Oracle과 같은 전통적인 관계형 데이터베이스 MS SQL Server 또는 MySQL)은 거래 성/신뢰성 대 극한 규모 중 하나입니다. 일부 데이터가 휴지통으로 인해 밤에 잠을 자지 않는다면 Mongo와 같은 NoSQL 옵션은 성능이 뛰어나며 동시 사용자의 * 많은 * 규모로 확장 할 수 있습니다. 그래도 데이터에 대한 보증이 필요한 경우 트랜잭션 dbs를 사용하는 것이 좋습니다. –

+0

이 질문은 SO에 대한 질문에 대한 지침보다 조금 광범위 할 수 있습니다. mongodb 문서로 이동하여 그들이 제공 한 자료를 읽는 것이 좋습니다. 특히 관심 대상은 다음과 같습니다. http://www.mongodb.org/display/DOCS/Architecture+and+Components, http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+ 차트, http://www.mongodb.org/display/DOCS/Production+Notes 이 정보가 도움이되기를 바랍니다. – marr75

답변

18

MongoDB 메모리는 데이터베이스 파일을 매핑합니다. OS가이를 제어하고 최대 RAM 용량을 메모리 매핑에 할당 할 수 있습니다. MongoDB가 DB에서 업데이트하고 읽음에 따라 RAM으로 읽고 쓰고 있습니다. 데이터베이스에있는 문서의 모든 색인은 RAM에 보관됩니다. RAM에있는 파일은 60 초마다 디스크로 플러시됩니다. 정전시 데이터 손실을 방지하기 위해 기본값은 저널링을 켠 상태에서 실행됩니다. 저널 파일은 100ms마다 디스크로 플러시되며 전원이 손실되면 데이터베이스가 일관된 상태로 되돌아갑니다. mongo의 중요한 디자인 결정은 RAM의 양입니다. 작업 세트 크기를 알아 내야합니다. 즉, 데이터베이스에서 가장 최근 10 %의 데이터 만 읽고 쓰는 경우이 10 %가 작업 세트이며 최대한의 성능을 위해 메모리에 보관해야합니다 . 따라서 작업 세트가 10GB라면 최대 성능을 위해 10GB를 버릴 것입니다. 그렇지 않으면 메모리 페이지가 디스크에서 메모리로 페이징 될 때 쿼리/업데이트 속도가 느려질 것입니다. mongoDB의 다른 중요한 측면은 백업을위한 복제와 스케일링을위한 샤딩입니다. 학습을위한 훌륭한 온라인 리소스가 많이 있습니다. MongoDB는 무료이며 opensource입니다.

편집 : 그것은 튜토리얼 http://www.mongodb.org/display/DOCS/Tutorial 및 수동 http://www.mongodb.org/display/DOCS/Manual 과 관리 영역이 너무 http://www.mongodb.org/display/DOCS/Admin+Zone 유용을 확인하는 것이 좋습니다 당신은 다음 읽기 지루하면 프리젠 테이션 체크 아웃 가치가있다. http://www.10gen.com/presentations

+0

정보 주셔서 감사합니다. 나는 실제로 당신의 대답의 라인에 대한 정보를 찾고 있습니다. 비슷한 세부 사항을 얻는 것이 좋을 것입니다. MongoDB 내부 desgin/architecture 등의 온라인 리소스를 가르쳐 주시겠습니까? – Ayusman

+0

복제뿐만 아니라 읽기/쿼리 확장을위한 복제. –

+0

이 질문에 대한 답변이나 도움이 필요하십니까? – Gregor

관련 문제