MongoDB 배포 형태: Replica Set와 Sharded Cluster Replica Set Replica Set은 고가용성(HA)과 데이터 복제를 위해 사용되는 구성입니다. 여러 각 노드는 독립적인 데이터베이스 인스턴스로서 역할을 수행합니다. 때문에 예를 들어 Primary 노드에 장애가 발생하더라도 Secondary 노드들은 여전히 서비스를 제공할 수 있습니다. 이는 시스템의 가용성을 높이고, 사용자가 중단 없이 서비스를 이용할 수 있도록 해줍니다. Primary 노드 Replica Set 중 단 하나의 노드입니다. Primary 노드는 데이터 Read / Write 요청을 모두 처리할 수 있습니다. 다른 Secondary 노드들에게 데이터를 복제합니다. Secondary 노드 Replica ..
MongoDB MongoDB는 NoSQL로서, 오픈소스 문서 지향(Document-Oriented) 데이터베이스 시스템입니다. 우리가 기존에 접할 수 있는 RDBMS(MySQL, Oracle)와는 다른 데이터 형식을 갖고 있는 NoSQL에 대해 먼저 설명하도록 하겠습니다. MongoDB의 특징 NoSQL NoSQL은 'Not Only SQL' 또는 'Non-Relational'의 약자로, 관계형 데이터베이스(RDBMS)와는 다른 DB 시스템입니다. NoSQL은 다양한 유형으로 나뉘며, 각 유형마다 특정한 데이터 모델과 사용 사례에 최적화되어 있습니다. 아래와 같은 유형은 NoSQL의 대표적인 유형입니다. Document Store: MongDB Key-Value Store: Redis, DynamoDB ..
트랜잭션: Transaction 트랜잭션은 DB에서 일련의 작업을 논리적으로 묶은 것입니다. 즉 여러 SQL 쿼리문을 하나의 처리로 묶는 것입니다. 유명한 예를 들어보겠습니다. 예제) 고객 A와 B가 있습니다. 고객 A가 고객 B에게 1,000원을 이체하려는 상황입니다. 문제 1. 고객 A가 고객 B에게 1,000원을 이체하게 된다면 고객 A의 잔고는 -1,000원 연산이 이루어져야 하고, 고객 B의 잔고는 +1,000원 연산이 이루어져야 합니다. 하지만 고객 A의 잔고가 줄어드는 연산은 이루어지고, 그 후 오류가 발생하여 B의 잔고가 오르는 연산이 이루어지지 않으면 고객 A의 돈은 감소하고 고객 B의 돈은 증가하지 않게 됩니다. 우리가 바라는 것은 오류가 발생하게 되어 B의 잔고가 오르지 않는다면, 당..
인덱스 인덱스(Index)는 DB에서 조회, 정렬, 그룹화 등의 연산을 빠르게 수행하기 위해 사용되는 정렬된 자료구조입니다. 특정 열 또는 열의 조합에 대한 정렬된 키와, 해당 키가 대응한 실제 데이터 레코드의 위치로 이루어져 있습니다. (key-value) 형태 예를 들어 위와 같이 주어진 `user` 테이블에서 나이가 20세 미만인 사용자를 찾는 쿼리(`select * from user where age < 20`)를 실행한다고 가정해봅시다. 해당 쿼리는 모든 데이터를 순차적으로 조회하여 조건을 만족하는 결과를 찾아낼 것입니다. 위 테이블은 데이터가 적게 담겨져 있어서 조회 시간에 큰 문제가 없지만, 만약 테이블에 데이터가 매우 많이 담기게 된다면 조회 기능의 성능은 매우 저하될 것입니다. 우리는 조..
일반적으로 배열의 값을 데이터베이스(DB)에 넣기 보다는, 별도의 테이블에 저장하고, 해당 테이블과 원래 테이블 간의 관계를 생성합니다. 즉 정규화를 하는 것인데 이를 통해 배열 요소의 개별 검색, 수정, 추가가 용이해지는 장점이 있지만, 배열의 크기가 크거나 굳이 정규화를 하지 않아도 될 경우에도 정규화를 하게 되면 성능 문제가 발생할 수 있습니다. 때문에 배열 그대로 테이블에 집어넣는 방법에 대해서 알아보도록 하겠습니다. 문자열로 저장하는 방법 `배열 자료형`을 `문자열`로 변환하고, 그대로 테이블에 문자열 컬럼으로 저장해버리는 방법입니다. 배열을 넣을 때는 문자열로 변환하여 저장하고, 가져올 때는 문자열을 불러와 파싱하여 배열 자료형으로 만들어 사용하면 됩니다. 1) org.json 라이브러리 의존..
MariaDB의 포트를 3306으로 설정해줌으로 MySQL의 포트를 따로 설정해주어야 했다. 포트(port)를 변경하기 위해선 다음과 같은 과정을 거치면 된다. 1. my.ini 수정 기본 설정으로 MySQL을 다운로드 하였다면 my.ini의 경로는 다음과 같을 것이다. 경로: C:\ProgramData\MySQL\MySQL Server 8.0 my.ini 파일에서 두 군데 port 번호를 변경해주어야 한다. 2. 서비스에서 MySQL 재구동 my.ini에서 설정한 포트로 정상적으로 구동된다.