MongoDB 7

mongodb 인스턴스 만들기

우분투 기준으로 설명 1. AWS EC2 인스턴스 생성 2. Data 디렉토리로 사용할 100 GB EBS 생성 3. EBS 인스턴스에 마운트 ubuntu@ip-10-0-160-31:~$ sudo file -s /dev/xvdc ubuntu@ip-10-0-160-31:~$ sudo mkfs -t xfs /dev/xvdc ubuntu@ip-10-0-160-31:~$ sudo mkdir /journal ubuntu@ip-10-0-160-31:~$ sudo mount /dev/xvdc /journal ubuntu@ip-10-0-160-31:~$ sudo file -s /dev/xvdc ubuntu@ip-10-0-160-31:~$ sudo lsblk -f 4. 인스턴스에 mongodb 다운로드 https://w..

Database/MongoDB 2023.12.07

MongoDB의 Failover

Conclusion MongoDB는 데이터베이스 수준의 Failover를 제공하여 과반수 이상의 서버에 문제가 발생하지 않는 한 가용성이 유지된다. Application에서 MongoDB의 Failover가 발생하더라도 문제가 없도록 Connection String과 Option을 구성하고 Failover 시 발생할 수 있는 에러를 처리하는 로직을 작성해야한다. 이를 검증하기 위해 Failover Test를 진행하며 Application에서 MongoDB에 연결하여 부하를 준 상황에서 rs.stepDown(), db.shutdownServer(), kill -9 MONGODB_PID 를 통해 테스트할 수 있다. Failover 우리가 MongoDB를 사용할 때, 보통 Replica Set의 형태로 사용한..

Database/MongoDB 2023.11.19

MongoDB 로그 관리 : logRotate와 로그파일 권한

MongoDB의 경우 mongod.log를 뱉는다. 이 mongod.log는 자동으로 rotate가 되지 않고, rotate를 해주지 않으면 파일의 크기가 계속 커지게 된다. 이때, MongoDB의 admin database에 logRotate 명령을 날려주면 MongoDB가 이쁘게 파일을 변경해준다. replset1:PRIMARY> db.adminCommand({logRotate:1}); { "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1700066060, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } }, "operati..

Database/MongoDB 2023.11.16

[MongoDB] MongoDB 빌드하기

MongoDB는 오픈소스이므로 코드를 Github에서 확인할 수 있다. MongoDB에 더 깊은 이해를 가지고자 소스를 분석해보고 싶다는 생각을 했다. 그리고 능력이 된다면 Commit까지,,,, Opensource Committor는 내 눈에는 멋있어보인다. 이번에는 소스코드를 다운로드 받고, 소스를 통해 빌드한 뒤 빌드된 바이너리로 MongoDB를 실행시켜보고자 한다. 1. 소스 다운로드 https://github.com/mongodb/mongo GitHub - mongodb/mongo: The MongoDB Database The MongoDB Database. Contribute to mongodb/mongo development by creating an account on GitHub. git..

Database/MongoDB 2023.03.05

[MongoDB] 도큐먼트의 배열 필드내 요소 범위를 검사하는 쿼리

MongoDB에서는 $elemMatch 셀렉터를 사용해서 배열 내 요소이 특정 조건을 만족하는 쿼리를 작성할 수 있다. 이 때, $elemMatch로 걸린 조건을 배열 내 하나의 요소라도 만족하면 해당 조건을 가져오게 되는데 다음과 같은 과제가 주어졌을 때에는 어떻게 쿼리를 짜야할 지 모를 수 있다. 배열 안의 모든 요소가 3 ~ 6 사이인 document만 가져와라. db.test.insertMany([ {item: "ABC", ratings: [2, 9], category_id: 10}, {item: "XYZ", ratings: [4, 3], category_id: 10}, {item: "ABC", ratings: [9], category_id: 20}, {item: "ABC", ratings: [9..

Database/MongoDB 2023.02.04

mongoexport, mongoimport 사용해보기

소프트웨어 마에스트로를 통해 진행하는 프로젝트에서 mongodb를 사용하고 있다. 칵테일 관련 어플리케이션이라 칵테일 레시피에 대한 DB를 구축해야 한다. 개발 중 새로운 칵테일 레시피가 추가되거나, 기존의 레시피에 대한 도수, 난이도 등의 속성이 지속적으로 추가되면서 해당 수정내용에 대한 변경사항 추적과 버전 관리가 필요하다고 느꼈다. 버전 관리와 변경사항 주적은 편리하고도 때깔 좋은 git이라는 도구가 있으니 걱정할 일이 없는데 mongoDB에 있는 데이터들에 대해서 어떻게 git을 적용하지?라는 생각이 들었다. 그래서 mongodb에 있는 데이터를 빠르게 가져오고, 변경된 데이터를 빠르게 mongodb에 적용할 수 있는 도구가 필요했다. 문제. 처음에는 nodejs의 mongodb 모듈을 사용해서..

Database/MongoDB 2022.08.05