DB(12)
-
데이터 모델링과 인덱스 (1)
- 데이터 모델링과 인덱싱 데이터베이스를 사용하는 환경에서 하드웨어 개선없이 성능을 개선할 수 있는 방법은 데이터 모델링과 인덱싱이다. 데이터 모델링은 업무 수행 시 발생하는 데이터를 정확하고 효율적으로 데이터베이스에 저장하기 위해 데이터 구조를 설계하는 과정이다. 데이터 모델링 : MongoDB의 특성을 고려하여 저장할 데이터의 구조를 정하는 작업 - 관계를 표현하기 위한 도큐먼트 구조 임베디드 방식 : 다른 객체를 도큐먼트 내부에 포함시키는 방식 레퍼런스 방식 : 참조할 도큐먼트의 id를 저장하는 방식 임베디드 방식이 좋은 경우 레퍼런스 방식이 좋은 경우 작은 서브 도큐먼트 큰 서브 도큐먼트 주기적으로 변하지 않는 데이터 자주 변하는 데이터 결과적인 일관성이 허용될 때 즉각적인 일관성이 필요할 때 증..
2022.11.14 -
MongoDB의 트랜잭션
- 몽고 디비에서 트랜잭션을 수행할 때의 제한 사항 버전의 제한 : 4.2 버전 이상에서만 지원. 트랜잭션으로 사용할 수 있는 명령어에 제한. - 트랜잭션의 특성 4가지 Atomicity Consistency Isolation Durability - 몽고디비에서는 트랜잭션을 수행할 때 "세션"을 할당받아야 한다. - 트랜잭션 예 - 트랜잭션 실행 - 몽고디비에서 API를 사용한 트랜잭션을 사용하는 두 가지 방법 코어 API : 관계형 데이터베이스와 유사한 구문 사용 콜백 API : 트랜잭션 사용에 권장되는 접근 방식. 두 API에서 개발자는 트랜잭션에서 사용할 논리 세션을 시작해야 하며, 트랜잭션의 작업이 특정 논리 세션과 연결되어야 한다. - 트랜잭션 실행에 대한 시간 제한 트랜잭션이 잠금을 획득하기 ..
2022.11.14 -
집계 명령어(3)
- 문자열 연산자 $concat : 두 개 이상의 문자열을 단일 문자열로 연결한다. $strcasecmp : 대/소문자를 구분하지 않는 문자열 비교를 하며, 숫자를 반환한다. $substrBytes : 문자열의 부분 문장열을 만든다. $toLower : 문자열을 모두 소문자로 변환한다. $toUpper : 문자열을 모두 대문자로 변환한다. - 산술 연산자 $add : 배열 번호를 추가한다. $divide : 첫 번째 숫자를 두 번째 숫자로 나눈다. $mod : 첫 번째 숫자의 나머지를 두 번째 숫자로 나눈다. $multiply : 숫자 배열을 곱한다. $subtract : 첫 번째 숫자에서 두 번째 숫자를 뺀다. - 날짜/시간 연산자 $dayOfYear : 연 중의 일로서 1에서 365까지 $dayOfM..
2022.11.14 -
집계 명령어(2)
- $unwind 스테이지 : 하나의 도큐먼트에 있는 배열 요소들을 분리하여 각각의 도큐먼트에 분배하는 역할 수행 배열의 요소를 분리하여 도큐먼트를 만들 때 배열의 순서(인덱스)를 기록하는 방법이 있다. $unwind{ path: //필드 이름과 경로 includeArrayIndex : //새로 생성할 인덱스 필드 이름 preserveNullAndEmptyArrays : //true이면 빈 요소도 포함, false이면 빈 요소 불포함(default는 false) } - $out 스테이지 : 입력받은 도큐먼트를 컬렉션으로 저장하는 역할 - $sort, $limit, $skip 고급 스테이지 $bucket : 도큐먼트를 범위에 따라 그룹화한다. $bucketAuto : 그룹의 개수에 따라 자동 그룹핑 $ad..
2022.11.01 -
집계 명령어(1)
집계 명령어 필요성 : 기존의 find로는 원하는 데이터로 가공하는데 한계가 있음. grouping, filtering 등 다양한 연산 적용 가능 MongoDB의 집계 방법론 맵-리듀스 집계 파이프라인 자유도 좋다 나쁘다 처리 속도 보통 가장 좋다 램 사용량 높음 낮음 처리 위치 자바스크립트 엔진 몽고디비 내부 집계 처리를 위한 주요 스테이지 $project : 출력 도큐먼트 상에 배치할 필드를 지정 $match : 처리될 도큐먼트를 선택하는 것. find()와 비슷한 역할 수행 $limit : 다음 단계에 전달될 도큐먼트의 수를 제한 $skip : 지정된 수의 도큐먼트 건너뛰기 $unwind : 배열을 확장하여 각 배열 항목에 대해 하나의 출력 도큐먼트를 생성 $group : 지정된 키로 도큐먼트를 그..
2022.11.01 -
쿼리 작성하기(2)
문자열 연산자 : $regex MongoDB의 정규 표현식 flag(생략 가능) i : 대소문자 무시 m : 앵커(^) 사용시 \n 무력화 x : 정규식 내의 공백 무시 s : (.)을 사용할 때 \n 포함해서 매치 정규 표현식 메타문자 * : 0번 이상의 반복 + : 1번 이상의 반복 ? : 임의의 문자 0개나 1개 ^ : 문자열의 시작 $ : 문자열의 끝 [^a] : a를 제외한 것 . : \n을 제외한 모든 단일 문자 [ ] : 어떤 범위 값 { } : 반복 수량자 | : or의 의미 / : 정규식 패턴의 시작과 끝 \w : A-Z, a-z, 0-9 \W : \w를 제외한 모든 것 - $regex : “구“이면서 첫글자의 초성이 “ㅇ”인 카운티의 이름 - $text : 문자열 검색. 원하는 텍스트를..
2022.10.31