CS 지식/데이터베이스
-
MySQL Hint (옵티마이저 힌트 & 인데스 힌트)CS 지식/데이터베이스 2022. 7. 29. 15:47
Hint 조인이나 인덱스 실행 계획을 개발자가 옵티마이저에 힌트를 주어 바꿀 수 있는 것이 힌트 옵티마이저 힌트 와 인덱스 힌트 두 종류로 나뉜다. 옵티마이저 힌트 optimizer_switch 시스템 변수를 설정하여 제어 가능 후속 쿼리에 대한 영향을 주기 때문에 mysql에 대한 이해도가 깊지 않다면 지양해야한다. 명령문 내의 옵티마이저 힌트 optimizer_switch 보다 선행되며 다양한 범위 수준에서 적용된다. 전역 전체 문에 영향 쿼리 블록 명령문 내의 특정 쿼리 블록에만 영향 테이블 쿼리 블록 내의 특정 테이블에만 영향 인덱스 테이블 내의 특정 인덱스에만 영향 주석 내에 지정해서 사용하며 SEMIJOIN, BKA 등이 있다. (상세한 것은 나중에 옵티마이저 힌트가 필요해지면 추가 정리) 인..
-
Surrogate key vs Natural Key (대체 키 vs 자연 키)CS 지식/데이터베이스 2022. 7. 29. 15:20
Surrogate key vs Natural Key Surrogate Key(대체 키) 비즈니스 의미가 없는 시스템 생성 값 (system generated) GUID, sequence, unique identifier... 컬럼들 중 유일하게 식별 가능한 단일 후보키가 존재하지 않는 경우, 임의의 식별번호로 이루어진 후보키 하나 이상의 컬럼으로 구성 (복합키) 비즈니스 의미가 없이 순차적 정수가 고유 키 역할을 하는 예시. 장점 비즈니스 요구 사항에 따른 변경 사항이 없음 모든 엔티티에서 동일한 키 전략을 유지하는 경우 코드가 줄어듦 애플리케이션 코드가 모두 순차적인 정수로 구현된 경우, 기본 키를 참조할 때 재사용 가능 대체 키는 고유성이 보장됨 시퀀스가 사용되면 값이 계속 증가하여 인덱스 단편화가 ..
-
NoSQLCS 지식/데이터베이스 2021. 1. 14. 15:35
NoSQL RDBMS를 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화된 data store 동적 스케일 아웃을 지원 CAP 이론 일관성 (Consistency) 다중 클라이언트에서 같은 시간에 조회하는 데이터는 항상 동일한 데이터 보증 관계형 데이터베이스가 지원하는 가장 기본적인 기능 일관성을 지원하지 않는 NoSQL 을 사용하면, 데이터의 일관성이 느슨하게 처리되어 동일한 데이터가 나타나지 않을 수 있음 느슨하게 처리된다는 것 === 데이터의 변경을 시간의 흐름에 따라 여러 노드에 전파하는 것 이러한 방법을 최종적으로 일관성이 유지된다고 하여 최종 일관성 또는 궁극적 일관성을 지원한다고 함 분산 노드 간의 데이터 동기화를 위해서 두 가지 방법 동기 방법 데이터의 저장 결과를 클라이언트로 응답..
-
트랜잭션(Transaction)CS 지식/데이터베이스 2021. 1. 14. 15:33
Transaction이란 무엇인가? 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 or 한번에 모두 수행돼야하는 연산들을 의미 작업의 완전성을 보장해준다. 논리적인 작업을 모두 완벽히 처리하거나 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생되지 않게 만들어준다. 트랜잭션과 Lock Lock은 동시성을 제어하기 위한 기능, 트랜잭션은 정합성을 보장하기 위한 기능 Lock은 여러 커넥션에서 동시에 동일 자원에 대해 자원을 요청할 때 순서대로 하나의 커넥션만 변경할 수 있게 해주는 역할 트랜잭션은 쿼리의 갯수에 관계 없이 논리적인 작업 셋 자체가 100% 적용되거나 아무것도 적용되지 않아야함을 보장 특징 (ACID) 원자성(Atomicity) ..
-
정규화CS 지식/데이터베이스 2021. 1. 14. 15:23
정규화 목적 불필요한 데이터 제거하고 데이터를 논리적으로 저장하기 위해서 이상 현상 삽입 이상 원하지 않은 자료 삽입 or 삽입이 안되는 문제점(데이터 부족) 삭제 이상 하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제 수정 이상 정확하지 않거나 일부의 튜플만 갱신 ~> 정보가 모호 or 일관성 깨짐 위의 이상 현상을 해결하기 위해 릴레이션의 애트리뷰트를 나눠 작은 릴레이션으로 분해하는 작업 1정규화 모든 속성이 원자 값을 가져야 함(더 이상 작은 단위로 쪼개지지 않는 값) 2정규화 1정규형을 만족하면서, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속이 돼야함 문제점 이행적 함수 종속이 존재함 삽입이상 새로운 엔티티가 생길 때, 종속되는 기본 키값이 없으면 NULL이 되므로 삽입 ..
-
인덱스(Index)CS 지식/데이터베이스 2021. 1. 14. 15:20
인덱스(Index) 인덱스(Index)란 데이터베이스 테이블의 모든 데이터를 검색해서 원하는 결과 값을 가져오려면 시간이 오래 걸리기 때문에, 특정 칼럼에 인덱스를 부여해서 정렬하는 것을 의미함 데이터가 저장된 칼럼의 값과 레코드가 저장된 주소의 키와 값의 쌍으로 인덱스를 만든다. 기본적으로 기본키가 인덱스의 기능을 하기는 한다. Index 의 성능과 고려해야할 사항 인덱스를 기준으로 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데 빠르다. 하지만, 새로운 값을 추가,삭제,수정하는 경우에는 쿼리문 실행 속도가 느려진다. ~> 트리구조로 관리하고 있기 때문에 B-Tree & B+Tree B-Tree는 데이터가 정렬된 상태로 유지되는 트리 루트 노드와 브랜치 노드, 리프 노드로 이루어져서, 어떠한 값에..
-
데이터 베이스CS 지식/데이터베이스 2021. 1. 14. 15:18
데이터 베이스 특징 데이터 독립성 외부단계(논리적 데이터 독립성) - 개념적 단계(물리적 독립성)-내부적 단계 이 단계는 외부스키마, 내부스키마, 개념스키마로 설명 가능 물리적 독립성 내부 스키마가 변경되어도 외부/개념 스키마에는 영향이 없도록(응용 프로그램을 수정할 필요 없도록) 지원 논리적 독립성 개념 스키마가 변경되어도 외부 스키마에는 영향이 없도록 지원 데이터 무결성 데이터베이스에 저장된 값들에 대해 여러 제한을 통해 데이터에 대한 신뢰를 보장해서 일관성을 유지하는 것(유효성 검사 ~> 잘못된 데이터가 발생하는 것 방지) 영역 무결성 한 컬럼에 대해 NULL 허용 여부와 타당한 데이터 값을 지정 자료형, 규칙과 제약, 값 범위 등을 제한 참조 무결성 기본 키와 참조 키 간의 관계가 항상 유지됨을 ..
-
스키마 3계층 ( 외부 스키마, 개념 스키마, 내부 스키마)CS 지식/데이터베이스 2020. 8. 17. 11:53
스키마의 3계층 데이터베이스 관리 시스템은 외부적 스키마에 따라 명시된 사용자의 요구를 개념적 스키마에 적합한 형태로 변경 다시 내부적 스키마에 적합한 형태로 변환 외부 스키마(External Schema) = 사용자 뷰(View) 사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있음 ~> 서브 스키마(Sub Schema)라고도 한다. 하나의 데이터베이스 시스템에는 외부 스키마가 여러 개 존재할 수 있음 하나의 외부 스키마를 여러 응용 프로그램이나 사용자가 공용할 수도 있음 같은 데이터베이스에 대해서도 서로 다른 관점에서 정의할 수 있도록 허용 일반 사용자는 질의어(SQL)을 이용하여 DB를 사용 응용 프로그..