DB 93

[8장] 트랜잭션

1. 트랜잭션 소개트랜잭션은 읽기나 쓰기 작업이 가능한 데이터베이스 작업을 하나 이상 포함하는 데이터베이스의 논리적 단위트랜잭션의 중요한 특징은 작업이 성공하든 실패하든 부분적으로는 완료되지 않는다는 점몽고DB에서 트랜잭션을 사용하려면 버전이 4.2 이상이어야 하며 몽고DB 드라이버를 몽고DB 4.2 이상에 맞게 갱신해야 함 1.1 ACID의 정의트랜잭션이 `진정한` 트랜잭션이 되려면 ACID라는 속성을 충족해야 함ACID는 원자성 (Atomicity), 일관성 (Consistency), 고립성 (Isolation), 그리고 영속성 (Durability)의 약어ACID 트랜잭션은 오류가 발생할 때도 데이터와 데이터베이스의 상태의 유효성을 보장 원자성 (Atomicity)은 트랜잭션 내 모든 작업이 적용되..

[7장] 집계 프레임워크

1. 파이프라인, 단계 및 조정 기능 항목집계 프레임워크는 몽고DB 내 분석 도구 모음으로, 하나 이상의 컬렉션에 있는 도큐먼트에 대한 분석을 수행하게 지원집계 프레임워크는 파이프라인 개념을 기반으로 함집계 파이프라인을 통해 몽고DB 컬렉션에서 입력을 받고, 컬렉션에서 나온 도큐먼트를 하나 이상의 단계를 거쳐 전달하며 단계마다 해당 입력에 다른 작업을 수행함각 단계는 전 단계에서 생산한 출력이 무엇이든 입력으로 받아들임모든 단계의 입력과 출력은 도큐먼트 집계 파이프라인은 bash와 같은 리눅스 셸 파이프라인과 매우 유사한 개념이며, 단계마다 특정 작업을 수행함각 단계는 특정한 형태의 도큐먼트를 입력받고 특정 출력을 생성하는데, 출력은 도큐먼트 스트림파이프라인 끝에서는 find 쿼리와 거의 같은 방식으로 ..

[6장] 특수 인덱스와 컬렉션 유형

1. 공간 정보 인덱스몽고DB는 2dsphere와 2d라는 공간 정보 인덱스를 가짐2dsphere 인덱스는 WGS84 좌표계를 기반으로 지표면을 모델링하는 구면 기하학으로 작동2dsphere 인덱스를 사용하면 지구의 형태를 고려하므로 2d 인덱스를 사용할 때보다 더 정확한 거리 계산을 할 수 있음대신 2차원 평면의 점에는 2d 인덱스를 사용하는 것을 권장 2dsphere를 사용하면 GeoJSON 형식으로 점, 선, 다각형의 기하 구조를 지정할 수 있으며 점은 경도 좌표와 위도 좌표를 요소로 갖는 배열 [경도, 위도]로 표현됨   createIndex와 함께 `2dsphere`를 사용해 공간 정보 인덱스를 생성할 수 있음2dsphere 인덱스를 생성하려면 인덱싱할 도형이 포함된 필드를 지정하는 도큐먼트를 ..

[5장] 인덱싱

1. 인덱싱 소개데이터베이스 인덱스는 책의 인덱스와 유사함전체 내용을 살펴보는 대신 인덱스를 통해 특정 내용을 가리키는 정렬된 리스트를 확인하여 엄청난 양의 명령을 더 빠르게 쿼리 가능 인덱스를 사용하지 않는 쿼리를 컬렉션 스캔이라 하며, 서버가 쿼리 결과를 찾으려면 `전체 내용을 살펴봐야 함`을 의미큰 컬렉션을 스캔할 때는 컬렉션 스캔이 매우 느려지니 이런 방식은 지양해야 함 explain 함수를 이용해 쿼리가 실행될 때 몽고DB가 무엇을 하는지 확인 가능explain은 명령을 감싸는 커서 보조자 메서드와 사용하면 좋음explain 커서 메서드는 다양한 CRUD 작업의 실행 정보를 제공하며 해당 메서드는 여러 가지 verbosity 모드에서 실행 가능executionStats 모드는 인덱스를 이용한 쿼..

[4장] 쿼리

1. find 소개몽고DB에서 find 함수는 쿼리에 사용쿼리는 컬렉션에서 도큐먼트의 subset을 반환find의 첫 매개변수에 따라 어떤 도큐먼트를 가져올지 결정빈 쿼리 도큐먼트({})는 컬렉션 내 모든 것과 일치하며 매개변수에 쿼리 도큐먼트가 없으면 find 함수는 빈 쿼리 도큐먼트 {}로 인식 쿼리 도큐먼트에 여러 key-value 쌍을 추가해 검색을 제한할 수 있음대부분의 데이터형에서 간단히 작동하며 정수형은 정수형에, 불리언형은 불리언형에, 문자열형은 문자열형에 일치함간단한 데이터형은 찾으려는 값만 지정하면 쉽게 쿼리 할 수 있음  1.1 반환 받을 키 지정find 또는 findOne의 두 번째 매개변수에 원하는 키를 지정하면 원하는 key-value 정보만 조회 가능이는 네트워크상의 데이터 전..

[3장] 도큐먼트 생성, 갱신, 삭제

1. 도큐먼트 삽입삽입은 몽고DB에 데이터를 추가하는 기본 방법이며 도큐먼트를 삽입하기 위해 컬렉션의 insertOne 메서드를 사용그러면 도큐먼트에 "_id" 키가 추가되고 도큐먼트가 몽고DB에 저장됨 1.1 insertMany여러 도큐먼트를 컬렉션에 삽입하려면 insertMany로 도큐먼트 배열을 데이터베이스에 전달해야 함코드가 삽입된 각 도큐먼트에 대해 데이터베이스로 왕복하지 않고도큐먼트를 bulk insert 하므로 훨씬 더 효율적   insertMany는 여러 도큐먼트를 단일 컬렉션에 삽입할 때 유용함데이터를 몽고DB에 저장하기 전에 날짜를 날짜형으로 바꾸거나 별도로 생성한 "_id"를 추가하는 식으로 가공해 두면 편리하게 insertMany 사용 가능몽고DB의 4.2.X 버전은 48MB보다 큰..

[2장] 몽고DB 기본

1. 도큐먼트몽고DB의 핵심은 정렬된 키와 연결된 값의 집합으로 이루어진 도큐먼트도큐먼트 표현 방식은 프로그래밍 언어마다 상이하지만 대부분의 언어는 Map, Hash, Dictionary와 같이 도큐먼트를 자연스럽게 표현하는 자료구조를 가짐i.g. 자바스크립트에서 도큐먼트는 객체로 표현 도큐먼트의 키는 문자열이며 다음 예외 몇 가지를 제외하면 어떤 UTF-8 문자든 사용 가능키는 \0 (null 문자)을 포함하지 않음, \0은 키의 끝은 나타나는 데 사용.과 $ 문자는 몇 가지 특별한 속성을 가지며 특정 상황에만 사용해야 함, 해당 문자들은 보통 예약어로 취급해야 하며 부적절하게 사용하면 드라이버에서 경고 발생 도큐먼트의 값은 데이터형 또는 내장 도큐먼트 전체가 되기도 함아래 예제에서 "greeting"..

[1장] 몽고DB 소개

몽고DB 소개몽고DB는 강력하고 유연하며 확장성 높은 범용 데이터베이스보조 인덱스 (Secondary Index), 범위 쿼리 (Range Query), 정렬 (Sorting), 집계 (Aggregation), 공간 정보 인덱스 (Geospatial Index) 등을 확장 기능과 결합했음 몽고DB 프로젝트의 주 관심사는 확장성이 높으며 유연하고 빠른, 즉 완전한 기능을 갖춘 데이터 스토리지를 만드는 일 1. 손쉬운 사용몽고DB는 도큐먼트 지향 데이터베이스 (Document-Oriented Database)관계형 모델을 사용하지 않는 주된 이유는 분산 확장 (Scale-Out)을 쉽게 하기 위함이지만 다른 이점도 있음도큐먼트 지향 데이터베이스에서는 행 개념을 사용하지 않고 보다 유연한 모델인 도큐먼트를 사..

[과목 II 2장 1절] 서브 쿼리

서브 쿼리 (Subquery)서브 쿼리란 하나의 SQL 문안에 포함돼 있는 또 다른 SQL 문을 지칭메인 쿼리가 서브 쿼리를 포함하는 종속적인 관계조인은 조인에 참여하는 모든 테이블이 대등한 관계에 있기 때문에 조인에 참여하는 모든 테이블의 칼럼을 어느 위치에서라도 자유롭게 사용할 수 있는 반면 서브 쿼리는 메인 쿼리의 칼럼을 모두 사용할 수 있지만, 메인 쿼리는 서브 쿼리의 칼럼을 사용할 수 없음질의 결과에 서브 쿼리 칼럼을 표시해야 할 경우 조인 방식으로 변환하거나 함수, 스칼라 서브 쿼리 등을 사용해야 함 서브 쿼리는 서크 쿼리 레벨과는 상관없이 항상 메인 쿼리 레벨로 결과 집합이 생성됨i.g. 메인 쿼리로 조직(1), 서브 쿼리로 사원(M) 테이블을 사용하면 결과 집합은 조직(1) 레벨이 됨 SQ..

[과목 II 1장 8절] 표준 조인

1. FROM 절 조인 형태ANSI/ISO SQL에서 표시하는 FROM 절의 조인 형태는 다음과 같음INNER JOINNATURAL JOINUSING 조건절ON 조건절CROSS JOINOUTER JOIN ANSI/ISO SQL에서 규정한 조인 문법은 WHERE 절에 조인 조건을 기술하는 전통적인 방식의 조인 무법과 차이가 있음사용자는 기준 WHERE 절의 검색 조건과 테이블 간의 조인 조건을 구분 없이 사용하던 방식을 그대로 사용할 수 있으면서추가된 선택 기능으로 테이블 간의 조인 조건을 FROM 절에서 명시적으로 정의할 수 있게 됨 INNER JOIN은 조인의 DEFAULT 옵션으로 조인 조건을 만족하는 행들만 반환DEFAULT 옵션이므로 생략 가능CROSS JOIN, OUTER JOIN과는 같이 사용..