MongoDB 스토리지 엔진에 대한 심층 분석(개략도 포함)
이 기사는 mongodb에 대한 관련 지식을 소개하고 MongoDB의 스토리지 엔진을 소개하는 데 도움이 되길 바랍니다!
간단한 리뷰
지난번에 mongodb 클러스터에 대해 이야기했는데, 이는 마스터-슬레이브 클러스터와 샤드 클러스터로 나누어집니다. 샤드 클러스터의 샤드와 관련하여 다음 사항에 유의해야 합니다. :
- 핫 데이터
특정 샤드 키(샤드 키는 컬렉션의 각 문서에 존재하는 인덱스 필드 또는 복합 인덱스 필드임)의 경우 모든 읽기 또는 쓰기 요청이 작동하게 됩니다. 단일 데이터 블록 또는 샤드에서 이로 인해 단일 샤드 서버에 과부하가 발생하고 자체 증가하는 샤드 키로 인해 쉽게 쓰기 문제가 발생할 수 있습니다. [권장: MongoDB 비디오 튜토리얼]
- 분할할 수 없는 데이터 블록의 경우
개별 분할 키의 경우 동일한 분할 키를 사용하는 많은 문서가 발생할 수 있습니다
이 경우 이러한 문서는 여러 데이터 블록으로 분할할 수 없으므로 mongodb에서 데이터의 균등한 배포가 제한됩니다.
- 쿼리 장애물
샤드 키가 쿼리와 관련이 없기 때문에 쿼리 성능이 저하될 수 있습니다
위의 주의 사항을 숙지하고 실제 작업 문제에서도 유사한 문제에 직면하게 됩니다.
오늘 우리는 간단히 이해하겠습니다 mongodb의 스토리지 엔진은 무엇인가요? 플러그형 스토리지 엔진의 개념
이제 주로 다음 엔진이 있습니다.
WiredTiger 스토리지 엔진
inMemory 스토리지 엔진- 스토리지 엔진이 처음 나왔을 때는 기본적으로 MMAPV1 스토리지 엔진이 사용되었습니다
- MMAPV1 엔진, 이름만 보면 mmap을 사용하고 리눅스 메모리 매핑의 원리를 사용한다는 것을 알 수 있을 것입니다
MMAPV1 엔진은
WiredTiger 스토리지 엔진이 더 좋기 때문에 현재 사용되지 않습니다. 멀티 코어 시스템의 처리 능력WiredTiger
잠금 세분성이 더 작음
MMAPV1 엔진 테이블 수준 잠금을 사용하면 단일 테이블에 동시 작업이 있는 경우 처리량이 제한됩니다- 그리고 WiredTiger는 동시성과 처리량을 향상시키는 문서 수준 잠금을 사용합니다
WiredTiger
압축 방법이 더 발전되었습니다. 좋음-
WiredTiger는 MMAPV1
에 비해 메모리 공간 소비를 절약하는 접두사 압축을 사용하며 WiredTiger는 또한하드 디스크 리소스 소모를 크게 줄일 수 있는 압축 알고리즘
- 위 그림에서 WiredTiger 디스크 쓰기 원리도 매우 간단하다는 것을 알 수 있습니다
응용 프로그램 요청이 mongodb에 오면 mongodb가 처리를 수행하고 결과를 캐시에 저장합니다
캐시가 2G
에 도달하거나60s
타이머가 만료되면 캐시의 데이터가 플러시됩니다. 주의 깊게 xdm이 알게 되면 지금 정확히 59초가 되면 1G 이상이면 캐시의 데이터가 디스크에 동기화되지 않고 mongodb가 비정상적으로 중단됩니다. 데이터를 잃어버리셨나요?우리는 모두 손가락으로 생각할 수 있습니다. mongodb의 설계자가 어떻게 이런 상황을 허용할 수 있었는지, 그러면 해결책이 있을 것입니다 , 다음과 같이
- 위 그림과 같이 extra one 저널링 버퍼
mongodb 추가, 삭제, 수정 명령을 저장하는 버퍼
저널 파일
은 관계형 데이터베이스의 트랜잭션 로그와 비슷합니다
journaling buffer
和 journal 文件
저널링을 도입한 목적
- 저널링은 예상치 못한 실패 후 빠른 복구로 인해 mongod b 데이터베이스를 활성화할 수 있습니다
- mongodb에서 2.4, 이미기본값입니다. Journaling 기능을 켜면, mongod 인스턴스를 시작할 때 서비스에서 데이터를 복원해야 하는지 여부를 확인합니다
그러면 위에서 언급한 것처럼 mongodb에서는 데이터 손실이 발생하지 않습니다
여기서 우리는 저널링의 로깅 기능이 mongodb에서 쓰기 작업을 수행해야 할 때, 즉 추가, 삭제 또는 수정 시 저널링이 로그를 작성하므로 성능에 영향을 미칠 것이라는 점을 알아야 합니다.
하지만 mongodb는 읽습니다. 가져오기 작업을 수행하면 캐시에 기록되지 않으므로 저널링 로그에 기록되지 않습니다. 따라서 오늘 배운 내용은 이것뿐입니다. 편차가 있으면 정정해주세요
위 내용은 MongoDB 스토리지 엔진에 대한 심층 분석(개략도 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

다른 응용 프로그램 시나리오에서 MongoDB 또는 Oracle을 선택하는 것은 특정 요구에 따라 다릅니다. 1) 많은 양의 구조화되지 않은 데이터를 처리해야하고 데이터 일관성에 대한 높은 요구 사항이없는 경우 MongoDB를 선택하십시오. 2) 엄격한 데이터 일관성과 복잡한 쿼리가 필요한 경우 Oracle을 선택하십시오.

MongoDB에서 문서를 업데이트하는 방법에는 다음이 포함됩니다. 1. 기본 업데이트를 수행하기 위해 UpdateOne 및 Updatemany 방법을 사용합니다. 2. $ set, $ inc 및 $ push와 같은 운영자를 사용하여 고급 업데이트를 수행하십시오. 이러한 방법과 운영자를 사용하면 MongoDB에서 데이터를 효율적으로 관리하고 업데이트 할 수 있습니다.

MongoDB의 유연성은 다음과 같이 반영됩니다. 1) 모든 구조에 데이터를 저장할 수 있고, 2) BSON 형식 사용 및 3) 복잡한 쿼리 및 집계 작업을 지원합니다. 이러한 유연성은 가변 데이터 구조를 다룰 때 잘 수행되며 현대적인 애플리케이션 개발을위한 강력한 도구입니다.

MongoDB에서 모든 데이터베이스를 보는 방법은 "showdbs"명령을 입력하는 것입니다. 1.이 명령은 비어 있지 않은 데이터베이스 만 표시합니다. 2. "사용"명령을 통해 데이터베이스를 전환하고 데이터를 삽입하여 표시 할 수 있습니다. 3. "로컬"및 "구성"과 같은 내부 데이터베이스에주의를 기울이십시오. 4. 드라이버를 사용하는 경우 "ListDatabases ()"메소드를 사용하여 자세한 정보를 얻어야합니다. 5. "db.stats ()"명령은 자세한 데이터베이스 통계를 볼 수 있습니다.

소개 현대 데이터 관리 세계에서 올바른 데이터베이스 시스템을 선택하는 것은 모든 프로젝트에 중요합니다. 우리는 종종 선택에 직면 해 있습니다. MongoDB와 같은 문서 기반 데이터베이스 또는 Oracle과 같은 관계형 데이터베이스를 선택해야합니까? 오늘 저는 Mongodb와 Oracle의 차이점의 깊이로 당신을 데려 가서 장단점을 이해하고 실제 프로젝트에서 그것들을 사용하는 경험을 공유하도록 도와 줄 것입니다. 이 기사에서는 기본 지식으로 시작 하여이 두 가지 유형의 데이터베이스의 핵심 기능, 사용 시나리오 및 성능 성능을 점차적으로 심화시킵니다. 새로운 데이터 관리자이든 숙련 된 데이터베이스 관리자이든이 기사를 읽은 후 프로젝트에서 MongoDB 또는 ORA를 선택하고 사용하는 방법에 참여하게됩니다.

MongoDB에서 컬렉션을 작성하라는 명령은 DB.CreateCollection (이름, 옵션)입니다. 특정 단계에는 다음이 포함됩니다. 1. 기본 명령 DB.CreateCollection ( "MyCollection")을 사용하여 컬렉션을 만듭니다. 2. 캡핑, 크기, max, stac

MongoDB에서는 Sort () 메소드를 사용하여 컬렉션에 문서를 정렬 할 수 있습니다. 1. 기본 사용 : 필드와 정렬 순서를 지정하여 정렬 (1은 오름차순이고 -1은 하강합니다). 2. 고급 사용 : DB.Products.find (). Sort ({카테고리 : 1, 가격 : -1})와 같은 여러 필드에 따라 정렬 할 수 있습니다. 3. 성능 최적화 : 인덱싱을 사용하여 오버 소싱 및 페이징 분류를 피하십시오.

MongoDB는 쇠퇴 할 운명이 아닙니다. 1) 이점은 유연성과 확장성에 있으며 복잡한 데이터 구조 및 대규모 데이터를 처리하는 데 적합합니다. 2) 단점에는 높은 메모리 사용량과 산 거래 지원의 늦은 도입이 포함됩니다. 3) 성능 및 거래 지원에 대한 의문에도 불구하고 MongoDB는 여전히 기술 개선 및 시장 수요에 의해 주도되는 강력한 데이터베이스 솔루션입니다.
