DB/이론 6

RDBMS vs NoSQL

Relational DBMS 관계형 데이터 베이스로 객체를 나타내는 각 테이블의 관계로 정의되는 데이터 모델링 기법을 사용한다. RDBMS에서 사용하는 테이블은 고정된 스키마가 존재하며 SQL 언어를 사용하여 데이터를 조작하고 ACID 특성을 보자한다. NoSQL 고성능의 비관계적 데이터를 지향하기 위해 고안되었다. 빅데이터 등으로 저장해야하는 데이터 양이 늘어나자 수평적 확장에 대한 유연함이 요구 되었고 기존 관계형 데이터 베이스에서 고정된 스키마의 변경의 어려움을 극복하고자 하였다. 관계형 테이블을 만들지 않고 모든 데이터를 한 형식, Key-Value Pair 혹은 JSON document 등으로 저장하는 방식을 택한다. 따라서 테이블 JOIN이 필요없게 되었다. 대신 기존 관계형 테이블에서 무결성..

DB/이론 2022.05.02

무결성 제약 조건

무결성 제약 조건 (Intergrity Constraint) 관계형 데이터 베이스에서 데이터 무결성을 지키기 위한 제한된 조건을 의미한다. 입력, 삭제, 갱신하는 경우 항상 무결성 제약 조건을 만족할 때만 실행하도록 허용한다. 종류 설명 도메인 제약조건 속성의 자료 값은 항상 도메인의 원자값을 가져야한다. 개체 무결성 제약조건 속성은 null이 아니고 중복이 불가능하다. 키 제약조건 키 값은 유일하게 튜플을 식별해야한다. 참조 무결성 제약조건 외부키 값은 반드시 기본키의 도메인 값이어야 한다. 의미 무결성 제약 조건 조건을 명시한 제약조건은 지켜야한다. MySQL 에서 제공하는 제약조건 기본 키 제약 조건 PRIMARY KEY 기본 키 제약 조건에 해당하는 경우 해당 속성의 값은 중복을 허용하지않고 NU..

DB/이론 2022.05.02

트랜잭션 고립 수준에 따른 부정합 문제

트랜잭션 격리 수준 (isolation level) 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것이다. 부정합 문제 격리 수준에 따라 Dirty Read / Non-Repeatable Read / Phantom Read가 발생할 수 있다. Dirty Read 트랜잭션 T1에서 Reika라는 이름을 가진 계정 정보를 INSERT하였다. 트랜잭션 T2에서는 T1이 COMMIT을 하기 전에 해당 레코드를 읽었다. 트랜잭션 T1이 COMMIT을 완료한다. Dirty Read 현상에서는 한 트랜잭션에서 변경한 사항을 아직 COMMIT하기 전임에도 불구하고 다른 트랜잭션에서 읽을 수 있는 것을 말한다. 이러한 현상을 허용하는..

DB/이론 2022.05.01

내부 조인과 외부 조인

내부 조인 Inner Join 두 테이블의 컬럼 값을 결합으로써 새로운 결과 테이블을 만들어내는 것. 비교하는 컬럼 값이 항상 존재하는 레코드만으로 테이블을 생성해낸다. 명시적 조인 JOIN 키워드 뒤에 ON 절을 사용하여 결합 기준이되는 컬럼을 지정한다. SELECT * FROM employee INNER JOIN department ON employee.DepartmentID = department.DepartmentID; 암시적 조인 SELECT 구문의 FROM 절에서 컴마를 사용하여 단순히 조인을 위한 테이블을 나열한다. 이는 CROSS JOIN을 암묵적으로 사용하게 되고 WHERE 절에 오는 컬럼 비교를 사용하여 새로운 조인 테이블을 만들게 된다. SELECT * FROM employee, de..

DB/이론 2022.04.30

테이블 정규화

데이터 베이스 ACID ACID(원자성, 일관성, 고립성, 지속성) 특징은 데이터 베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다. 데이터베이스에서 데이터에 대한 하나의 논리적 실행단계를 트랜잭션이라고 한다. 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 예를 들어, 사용자 A가 B에게 돈을 입금한 경우 B의 계좌에 입금과 A의 출금 실행이 한번에 이루어져야하며 둘 중 하나가 실패한 상태가 존재해서는 안된다. 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 말한다. 독립성(Isolation) 트랜잭션을 수행 시 다른 트랜잭션이 ..

DB/이론 2022.04.29

클러스터형 인덱스 / 보조 인덱스

클러스터형 인덱스 데이터 베이스에 저장된 테이블에서 특정 행 데이터를 빠르게 검색하기 위해 사용한다. B-Tree 자료구조를 이용하여 기준이 되는 컬럼값을 정렬하여 사용한다. 페이지를 단위로 노드가 만들어지며 각 노드는 기준값으로 정렬된 행 데이터로 구성된다. 전체 자료구조는 루트 페이지에서 부터 리프 페이지로 나뉘며 계층 구조를 가지는 트리 형태이다. 각 페이지에 행 데이터가 직접 저장된다. 클러스터형 인덱스의 특징 트리 자료구조로 인덱스를 기준으로 검색이 매우 빠르다. MYSQL에서 PRIMARY KEY로 설정된 컬럼은 자동으로 인덱스가 생성되며 기본적으로 인덱스 컬럼을 기준으로 정렬된 테이블이 출력된다. 삽입, 삭제시 B-Tree 자료구조의 특성 때문에 페이지 병합과 분할이 일어난다. 테이블당 하나..

DB/이론 2021.11.29