Mongo DB - 독립 실행형 및 1노드 복제본 세트의 차이점
Mongo DB 트랜잭션을 사용해야 했고, 최근에 Mongo 독립 실행형 모드에서는 트랜잭션이 작동하지 않고 복제본 세트(Mongo DB with C# - document added with transaction과 관계없이 추가됨)에서만 트랜잭션이 작동하는 것으로 알고 있습니다.
또한, 독립형 모드는 생산에 권장되지 않는다고 읽었습니다.
그래서 mongod.cfg에서 복제본 세트 이름을 정의하는 것만으로도 Mongo DB를 독립 실행형이 아닌 복제본 세트로 실행하기에 충분하다는 것을 알게 되었습니다.
그것을 바꾼 후에, Mongo 거래가 작동하기 시작했습니다.
그러나 복제 기능을 실제로 사용하지는 않지만 복제 세트로 사용하는 것이 약간 이상하게 느껴지며 올바른 구성을 사용하고 있는지 확인하고 싶습니다.
그래서 제 질문은 다음과 같습니다.
- 복제, 로드 밸런싱 또는 기타 확장 가능한 기능이 필요하지 않다고 가정할 때 Mongo를 1노드 복제본 세트로 실행하는 데 문제가 있습니까?(말씀드린 대로 거래를 허용하기 위해 필요합니다)
- 독립 실행형으로 실행할 때와 1노드 복제본 세트로 실행할 때의 기능 및 성능 차이는 무엇입니까?
- 가장 기본적인 구성인 것처럼 들리지만, 독립형 모드는 생산에 권장되지 않는다고 읽었습니다.대부분의 시나리오에서 이 구성이 사용되지 않는 것은 이해하지만, 로컬 컴퓨터에서 표준 DB로 사용하는 경우도 있습니다.그렇다면 독립 실행형 모드가 권장되지 않는 이유는 무엇입니까?그것이 충분히 안정적이지 않나요, 아니면 다른 이유들인가요?
복제, 로드 밸런싱 또는 기타 확장 가능한 기능이 필요하지 않다고 가정할 때 Mongo를 1노드 복제본 세트로 실행하는 데 문제가 있습니까?
적절한 복제본 집합에서 제공하는 고가용성이 없습니다.따라서 프로덕션 배포에는 권장되지 않습니다.하지만 이것은 개발에 좋습니다.
복제본 집합의 기능은 주로 확장 대신 고가용성에 관한 것입니다.
독립 실행형으로 실행할 때와 1노드 복제본 세트로 실행할 때의 기능 및 성능 차이는 무엇입니까?
단일 노드 복제본 세트에는 oplog가 있습니다.즉, oplog를 저장하는 데 더 많은 디스크 공간을 사용하고 모든 삽입/업데이트 작업도 oplog에 기록됩니다(쓰기 증폭).
그렇다면 독립 실행형 모드가 권장되지 않는 이유는 무엇입니까?그것이 충분히 안정적이지 않나요, 아니면 다른 이유들인가요?
운영 환경의 MongoDB는 다음과 같은 목적으로 복제 세트 배포를 염두에 두고 설계되었습니다.
- 노드 장애 발생 시 고가용성 제공
- 다운타임 없이 유지보수/업그레이드 수행
- 읽기를 스케일아웃할 수 있음
- 고가용성 노드의 일부가 아닌 특수 목적 노드에 데이터 복제본이 있을 가능성
즉, MongoDB는 일반적인 SQL 모노리식 데이터베이스(수평 확장)가 아닌 내결함성 분산 데이터베이스(수평 확장)로 설계되었습니다.즉, 복제본 세트의 노드 중 하나를 잃게 되면 다른 노드가 즉시 작업을 인계받게 됩니다.대부분의 경우 애플리케이션은 데이터베이스 측에 오류가 있는지조차 알지 못합니다.반대로 단일 데이터베이스 서버에서 오류가 발생하면 애플리케이션이 즉시 중단됩니다.
저는 케빈아디가 잘 대답했다고 생각하지만, 그래도 추가하고 싶습니다.
독립 실행형은 단일 서버에서 실행되지만 복제본 집합의 일부가 아닌 mongod의 인스턴스입니다.테스트 및 개발에 사용되는 독립 실행형 인스턴스이지만 프로덕션에서 복제본 세트를 사용하는 것이 항상 권장됩니다.
단일 노드 복제본 세트에는 데이터 세트의 모든 변경 사항을 기록하는 oplog가 있습니다.즉, oplog를 저장하는 데 더 많은 디스크 공간을 사용하고 모든 삽입/업데이트 작업도 oplog에 기록됩니다(쓰기 증폭).또한 시점 복구도 지원합니다.
독립 실행형 데이터베이스를 복제본 집합으로 변환하려면 독립 실행형을 복제본 집합으로 변환을 수행하십시오.
트랜잭션은 MongoDB 버전 4.0에 도입되었습니다.버전 4.0부터 MongoDB는 여러 문서에 대한 업데이트 또는 여러 문서에 대한 읽기 간의 일관성을 위해 원자성이 필요한 상황에서 복제본 세트에 대한 다중 문서 트랜잭션을 제공합니다.트랜잭션은 클러스터 내에서 강력한 일관성을 유지하기 위해 oplog가 필요하므로 독립 실행형에서는 사용할 수 없습니다.
언급URL : https://stackoverflow.com/questions/56336101/mongo-db-difference-between-standalone-1-node-replica-set
'programing' 카테고리의 다른 글
에 대한 링커 상태.NET 앱("Please Sir, May I have a Linker" 2009년판) (0) | 2023.05.11 |
---|---|
Angular 2에서 동적으로 CSS 업데이트 (0) | 2023.05.11 |
프로젝트를 Angular v5에서 Angular v6로 업그레이드하려고 합니다. (0) | 2023.05.11 |
Xcode 프로젝트를 위해 포드 파일에 여러 대상을 지정하려면 어떻게 해야 합니까? (0) | 2023.05.11 |
Xcode를 완전히 제거하고 모든 설정을 지우는 방법 (0) | 2023.05.11 |