Database/MongoDB
-
Conf Options GuideDatabase/MongoDB 2023. 2. 2. 23:05
Conf 파일은 yum , apt 를 이용한 설치시 /etc/mongod.conf 에 구성됩니다. Conf 파일은 YAML 포멧을 사용합니다. Command Line 이 길어지면 불편하기 때문에 mongod.conf 를 기준으로 하여 설정사항에 대하여 안내합니다. Command Line 구성시 각 Option 의 Command 는 아래 참조를 확인하세요. Option Command : https://docs.mongodb.com/manual/reference/configuration-file-settings-command-line-options-mapping/#std-label-conf-file-command-line-mapping systemLog Options systemLog: verbosity: ..
-
Import, Export, DumpDatabase/MongoDB 2023. 2. 2. 22:58
dump $ mongodump --host 127.0.0.1 --port 27017 모든 DB를 덤프하며, 해당 위치에 dump 폴더를 생성합니다. --out 옵션을 사용하여 경로를 지정할 수 있습니다. --db 옵션을 사용하여 특정 DB만을 덤프할 수 있습니다. -u, -p 옵션을 사용하여 인증 할 수 있습니다. restore 데이터 복구는 아래의 명령을 통해서 할 수 있습니다. --drop 옵션은 복구하는db와 중복될 경우 drop 시키는 옵션입니다. $ mongorestore --host 127.0.0.1 --port 27017 -u계정명 -p비번 --drop 원래디비에서 드랍시킬 디비명 --db 선택적으로 복구하려는 db명 "복구하려는 덤프된 디렉터리 위치" export -d database -c..
-
ReadConcern & WriteConcernDatabase/MongoDB 2023. 2. 2. 22:55
ReadConcern ReplicaSet 에서 Secondary 가 해당 데이터를 가지고 있는지 검증 후 읽기 작업을 진행하는 기능입니다. 이는 Shard Cluster 에서도 적용됩니다. 기본 형식은 다음과 같습니다. readConcern: { level: } level description "local" 추가 검증을 하지 않고 읽기 작업 진행(default) "avaliable" local 과 동일하지만 Shard Cluster 에서의 읽기작업인 경우 "majority" 과반수의 구성원에 대하여 검증 "linearizable" 쓰기 동작이 있을 경우 대기 후 처리 "snapshat" 다중 트랜젝션에서 사용 WriteConcern 쓰기 작업에 대한 요청 승인 수준을 지정할 수 있습니다. ReplicaS..
-
TransactionDatabase/MongoDB 2023. 2. 2. 22:52
원자성은 트랜잭션이 시작되고 종료되었는지를 알려주는 메커니즘과 변경 전, 후 데이터의 복사본을 보존하는 것에 의해 실행되며, 이 원자성을 가질 수 있게 해주는것이 tansaction 입니다. 단일 도큐먼트에서는 원자성이 성립하나 여러 개의 도큐먼트를 CRUD하는 경우에는 원자성이 성립하지 않는다는 것입니다. 여러 도큐먼트에서 원자성을 유지하기 위해서는 트랜잭션이 필요합니다. 단순하게 보면 여러개의 작업을 할때, 명령 중 하나가 실패했을때 반영되지 않아야 한다면 트랜잭션 을 사용하면 됩니다. 트랜잭션으로 처리할 수 있는 작업은 도큐먼트를 CRUD하는 것만 가능하며 컬렉션을 생성하는 등 도큐먼트 레벨을 벗어나는 작업은 할 수 없습니다. session = db.getMongo().startSession() s..
-
ReplicaSetDatabase/MongoDB 2023. 2. 2. 22:49
ReplicaSet 구성 Primary : 메인 DB Secondary : Primary DB 정보를 동기화 ( Primary 절체시 Primary로 동작 ) Arbiter : 데이터 동기화 하지 않으며, 절체시 다음 Primary를 선정하는데 사용 성능규격상에는 천대이상이 하나의 ReplicaSet으로 구성될 경우 성능상 이슈가 있을 수 있으며, 각 ReplicaSet을 구성하는 서버들은 같은 장비에 구성하지 않는 것을 권고합니다. Primary 레플리카 셋에서 프라이머리 노드는 단 하나만 존재 할 수 있습니다. 프라이머리만이 직접적으로 클라이언트와 정보를 주고 받기 때문에 프라이머리가 장애가 발생하거나 네트워크에 문제가 발생하면 실제 레플리카셋이 구성되어 있더라도 세컨더리가 프라이머리로 올라오는 동안..
-
2대의 서버로 구성하는 개발용 Shard ClusterDatabase/MongoDB 2023. 2. 2. 22:46
각 장비에 mongodb 2개, config server 1개, mongos 1개가 구성됩니다. Config, db, pid 경로 및 파일을 추가생성하여 하나의 서버에서 다수개를 구동할 수 있습니다. 다만 ReplicaSet 의 절체가 정상적으로 이루어지지 않는 경우가 발생할 수 있는점과 성능 및 구조상 이슈로 인하여 MongoDB 에서는 해당 구조를 추천해주지 않지만, 기존 IPRON 의 구조가 장비 2대를 통한 Active/Standby 임으로 임의 구성해보았습니다. 커맨드구성으로도 가능하지만, 차후 관리편의성을 생각해서 systemctl 에 등록하는 방향으로 가이드합니다. 두대의 장비에 이중화 설정 및 Shard Cluster 구성은 다음과 같이 생성됩니다. Shard Cluster 에서 Confi..
-
Sharding & ClusterDatabase/MongoDB 2023. 2. 2. 22:41
Sharding Sharding 은 데이터를 여러서버에 분산해서 저장하고 처리하는 기술을 의미합니다. 일반적인 환경 구성시 Sharding 과 ReplicaSet 둘을 모두 구성합니다. Sharded Cluster Shard : ReplicaSet 을 의미합니다. Mongos : Application 과 Sharded Cluster 간 인터페이스를 제공해주고 라우터와 같은 역활을 합니다. Config Servers : 설정 서버에서는 클러스터의 메타 데이터와 설정들을 저장합니다. 기본적인 Shareded Cluster 는 MongoDB 측에서 다음과 같은 구성을 권장합니다. Shard Key Shard Key 를 이용하여 Collection 의 Document 를 배포합니다. 별도로 지정하지 않을 경우 ..
-
ViewDatabase/MongoDB 2023. 2. 2. 22:36
기본 컬렉션에서 파생하여 생성되는 읽기전용 Collection 으로, Shard나 인덱스에 대하여 기본 컬렉션의 설정과 동기화 됩니다. View 에서 사용가능한 명령 db.collection.find() db.collection.findOne() db.collection.aggregate() db.collection.countDocuments() db.collection.estimatedDocumentCount() db.collection.count() db.collection.distinct()View 의 생성은 다음 형식을 통해 진행됩니다. db.createView(, , , ) Parameter Type Description view string 이름 source string 기반 데이터가 되는 컬..