본문 바로가기
프로젝트

심부릉 앱 DB

by hyunji00pj 2024. 11. 30.

심부릉 앱 DB는 MongoDB를 사용하려 한다 

MongoDB

MongoDB의 개념

MongoDB는 NoSQL 데이터베이스 시스템 중에서도 문서 지향 데이터베이스(Document-Oriented Database)에 속합니다. 문서 지향 데이터베이스는 관계형 데이터베이스(Relational Database)와 달리 테이블이나 레코드와 같은 구조를 가지지 않고, JSON 형태로 데이터를 저장합니다. 따라서 몽고디비에서는 데이터를 문서(Document)라는 개념으로 관리하며, 각 문서는 필드(Field)와 값(Value)으로 구성됩니다.

 

몽고DB는 동적 스키마를 지원한다, 떄문에 애플리케이션의 데이터 구조가 변경되어도 데이터베이스를 수정할 필요가 없다.

또한 몽고DB는 몽고디비는 여러 대의 서버에 데이터를 분산하여 저장할 수 있는 분산형 데이터베이스 시스템이기 때문에 대용량 데이터를 빠르고 효율적으로 처리할 수 있다.때문에 커뮤니케이션 기반의 어플리케이션의 DB관리에 적합하다고 볼 수 있다.

 

커뮤니티 애플리케이션에서는 사용자의 행동 데이터와 상호작용을 실시간으로 분석하고 반영해야 합니다. 몽고DB는 이러한 요구 사항을 충족시키는 데 적합한 데이터베이스입니다.

 

또한, 몽고DB는 개발 초기 단계에서부터 프로토타이핑과 반복 개발을 쉽게 할 수 있도록 지원합니다.

 

왜냐하면 몽고DB의 유연한 데이터 모델과 쉬운 스케일 아웃 능력은 빠른 피드백과 개선을 가능하게 하기 때문입니다.

복제와 샤딩

몽고디비(MongoDB)는 대규모 분산 데이터베이스 시스템으로서, 데이터를 저장하고 조회하는데 있어서 빠른 속도와 확장성을 제공합니다. 이러한 이유로 몽고디비는 현재 많은 기업과 조직에서 사용되고 있습니다. 그러나 이러한 대규모 시스템에서는 데이터 복제와 샤딩을 통한 분산 처리가 필요합니다.

복제(Replication)

MongoDB에서 복제(Replication)는 동일한 데이터를 여러 서버에 복제하여 데이터의 안정성과 가용성을 높이는 기술입니다. 복제는 데이터베이스에서 발생하는 모든 작업(생성, 갱신, 삭제 등)을 복제본으로 전달하여 데이터의 안정성과 가용성을 높입니다.

데이터 복제의 이점

1. 데이터 안정성: 데이터 복제를 사용하면 데이터베이스의 안정성이 향상됩니다. 데이터의 손실이나 손상이 발생할 경우, 다른 복제본에서 데이터를 복구할 수 있습니다.

2. 데이터 가용성: 데이터 복제를 사용하면 데이터베이스의 가용성이 향상됩니다. 복제본 중 하나가 다운되거나 유지보수를 위해 다운타임이 필요할 경우에도 다른 복제본에서 데이터에 대한 읽기/쓰기 작업을 수행할 수 있습니다.

3. 읽기 작업 분산: 데이터 복제를 사용하면 복제본 중 하나에서 읽기 작업을 수행할 수 있습니다. 이를 통해 읽기 작업이 분산되므로 전체 시스템의 처리량이 향상됩니다.

4. 부하 분산: 데이터 복제를 사용하면 쓰기 작업도 분산할 수 있습니다. 이를 통해 부하가 분산되므로 전체 시스템의 처리량이 향상됩니다.

샤딩(Sharding)

MongoDB에서 샤딩(Sharding)은 대규모의 데이터를 처리하기 위한 분산 데이터베이스 아키텍처 기술입니다. 샤딩은 데이터를 분할(shard)하여 각각 다른 서버에 분산 저장함으로써 전체 시스템의 성능과 가용성을 높입니다.

샤딩은 다수의 노드(노드는 일반적으로 서버를 의미합니다)를 사용하여 대용량의 데이터를 처리하는 방식입니다. 각 노드는 독립적인 데이터 저장소를 가지며, 샤딩된 데이터를 처리하기 위해 필요한 계산 능력을 가지고 있습니다. 노드들은 클러스터(cluster)라는 하나의 시스템으로 통합되어 작동하며, 각 노드는 서로 연결되어 데이터를 공유하고 필요에 따라 서로 작업을 분담합니다.

샤딩은 데이터를 분할하는 방식으로 작동합니다. 데이터는 샤드 키(shard key)라는 필드의 값을 기준으로 샤드로 나누어집니다. 예를 들어, 고객 데이터를 샤드로 나누기 위해서는 고객의 ID나 지역 등과 같은 고유한 값으로 샤드 키를 지정할 수 있습니다. 이렇게 나눈 데이터는 각 샤드 노드에 저장되며, 각 노드는 해당 데이터를 책임지고 처리합니다.

샤딩의 장점

1. 데이터 처리 능력 향상: 샤딩은 데이터를 분할하여 처리하기 때문에, 전체 데이터를 한 곳에서 처리하는 것보다 빠른 처리가 가능합니다.

2. 데이터 확장성: 샤딩은 노드를 추가하거나 삭제하여 시스템을 확장할 수 있습니다. 따라서, 대규모 데이터베이스를 다루는 시스템에서도 데이터베이스를 확장하거나 축소하는 것이 쉬워집니다.

3. 데이터 안정성: 샤딩은 데이터를 분할하여 저장하기 때문에, 전체 데이터가 하나의 장애점에 집중되는 것을 방지할 수 있습니다. 따라서, 시스템의 안정성을 높일 수 있습니다.

4. 데이터 분산: 샤딩은 데이터를 분할하여 저장하기 때문에, 각 샤드 노드에 저장된 데이터의 양이 줄어들어 전체 시스템의 부하가 분산됩니다. 이를 통해 전체 시스템의 처리량이 향상됩니다

 

 

몽고DB를 사용할 때의 고려 사항

몽고DB를 사용하기로 결정했다면, 몇 가지 고려해야 할 사항이 있습니다. 데이터 모델 설계, 성능 최적화, 보안 설정 등이 그것입니다.

 

왜냐하면 잘못된 데이터 모델 설계는 애플리케이션의 성능 저하로 이어질 수 있으며, 이는 사용자 경험에 부정적인 영향을 미칠 수 있기 때문입니다.

 

성능 최적화를 위해서는 적절한 인덱싱, 쿼리 최적화, 샤딩 전략 등을 고려해야 합니다. 이는 시스템의 응답 시간을 개선하고, 더 많은 사용자 요청을 처리할 수 있게 합니다.

 

보안 설정도 중요한데, 몽고DB의 보안 기능을 적절히 활용하여 데이터 접근 제어, 네트워크 보안, 암호화 등을 구성해야 합니다.

 

왜냐하면 데이터베이스는 애플리케이션의 중요한 정보를 저장하는 곳이므로, 보안 사고를 예방하는 것이 중요하기 때문입니다.