식별자(Identifier)의 개념 - 데이터베이스에서 인스턴스(Instance)의 집합인 엔터티(Entity)를 구분할 수 있는 논리적인 값으로 하나의 Entity에 구성되어 있는 여러가지 속성 중에 대표할 수 있는 속성 - ex) 주민등록번호, ISBN(도서번호) 등과 같이 객체의 고유한 값들을 일반적으로 식별자라 부른다 식별자와 키(Key)를 동일한 의미로 보통 사용하는데 식별자의 용어는 논리 데이터 모델링 단계에서 사용하며, Key는 물리 데이터 모델링 단계에서 사용된다. 식별자의 특징 유일성 - 주식별자에 의해 엔터티(Entity)내의 모든 인스턴스들을 유일하게 구분한다. - ex) 대학교 학생들에서 학번 부여 최소성 - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다..
트랜잭션(Transaction)의 개요 트랜잭션의 개념 - 한번에 수행되어야 할 데이터베이스의 일련의 Read, Write 연산을 수행하는 단위 - 하나의 논리적 기능을 수행하기 위한 데이터베이스 처리작업의 단위 - 데이터베이스의 일관된 상태를 다른 일관된 상태로 변화시킴 트랜잭션의 특징(ACID) 원자성(Atomicity) - 트랜잭션은 분해가 불가능한 최소의 단위로 연산 전체가 처리 되거나 처리 되지 않아야 됨 (All or Nothing) - Commit/Rollback 연산 일관성(Consistency) - 일관성 있는 데이터베이스 상태를 보존함 - 트랜잭션 실행이 성공적으로 완료된 상태면, 데이터베이스는 모순이 없이 일관된 데이터 상태를 유지 고립성(Isolation) - 트랜잭션이 실행 중에 ..
함수적 종속성(Functional Dependency)의 개요 함수적 종속성의 개념 - 데이터베이스(Database, DB)의 릴레이션(Relation)에서 두 개의 애트리뷰트(attribute) 집합 간 제약의 일종 - 데이터들이 어떤 기준값에 의해서 항상 종속이 되는 현상 - Y는 X에 함수적으로 종속된다라고 정의하고 X -> Y로 표기 - X를 결정자(determinant set)라 하고, Y는 종속자(dependent attribute)라 한다. 함수적 종속성의 필요 종속된 테이블에 데이터를 배치하여 반복 차단 이상현상을 제거할 경우 데이터의 정합성을 유지할 수 있음 정규화 작업 수행 시 가장 중요한 작업으로 제2 정규형에서 BCNF까지 적용 함수 종속 다이어그램 (Functional Depend..
연결함정(Connection Trap) 연결함정의 개념 - 관계형 데이터베이스에서 데이터간에 관계가 모호해져서 원하는 결과를 얻을 수 없거나 업무 처리시 영향을 주는 ER모델의 문제점 연결함정의 유형 부채꼴 함정(Fan Trap) - 개체 집합(Entity Set) 사이에 관계성 집합(Relation set)이 정의되어 있지만 관계성이 모호한 경우 부채꼴 함정이라 한다 균열 함정(Chasm Trap) - 개체 집합 사이에 관계성 집합이 정의되어 있지만 일부 개체집합과 개체집합 사이에 관계성이 존재하지 않는 경우 균열 함정이라 한다. 부채꼴은 관계성이 모호한 것이고, 균열은 일부 개체의 관계성이 존재하지 않는 경우이다 부채꼴 함정의 사례 및 해결 방법 부채꼴 함정의 사례 유재석이라는 교수 경우 상경대학인것..
데이터베이스 무결성 확보를 위한, 동시성 제어 개요 개념 - 다중 사용자 환경을 지원하는 DB(데이터베이스) 시스템에서 여러 트랜잭션들이 동시에 성공적으로 실행될 수 있도록 지원하는 기능 - 동시성 제어는 병행성 제어와 같은 말 여러명이 동시에 접근하는 데이터베이스의 경우, 데이터를 삽입,갱신,삭제할 경우 다른 사용자에게 영향을 줄 수 있다. 이를 위해 데이터베이스는 트랜잭션을 관리하며 최소의 응답시간, 최대의 공유, 무결성, 일관성 등을 위해서 동시성 제어(concurrency control)는 필연적으로 구현되어 있어야 한다. 주요 목표 - 직렬화 : 동시 수행 트랜잭션 처리량을 최대화하면서, 직렬성 보장 - 성능 : 공유도 최대, 응답 시간 최소, 시스템 활동의 최대 보장 동시성 제어를 하지 않을 ..
DB 서버 부하 분산, 샤드의 개념 - 부하 분산을 위해 Application/DB Level에서 다수의 데이터베이스에 데이터를 분산 저장하는 기법 - 데이터베이스 분야에서 성능, 확장성 및 I/O 대역폭을 개선하는데 사용하는 분산처리 기법 샤드 혹은 샤딩기법은 데이터를 분리하기 용이한 기준을 잡고 데이터를 분산저장하거나 Row의 행수 등을 기준으로 분산저장을 한다. 최근 데이터의 폭발적인 증가는 빅데이터(Bigdata)라는 신조어를 만들게 되었고, 수많은 빅데이터를 처리하기 위해서는 데이터를 모두 동일하게 복제하는 방식이 아닌 수평적인 서버들에 분산 저장하여 처리를 하는 방식으로 가게 되었다. 물론 샤드의 문제를 방지하기 위해서 리플리카(replica)의 방식을 섞어서 실제로는 둘 중 하나의 방식이 아..
순환관계, 자기참조관계의 개념가. 순환관계(Recursive Relationship)의 정의- 하나의 엔터티(Entity)가 다른 엔터티가 아닌 자기 자신과 관계를 맺는 타입으로 순환관계 혹은 자기참조관계라 불린다.- 동일 Entity 타입 내에서 자기가 자기의 인스턴스를 참조하는 구조, 대표적으로 조직을 표현할 때 자주 사용 동일한 Entity타입의 Entity들이 상호간에 계층적으로 데이터가 구성되는 관계 나. 자기 엔터티타입을 참조하는 구성방법에 따른 유형복합형(다중Entity) : 동일한 PK를 가진 테이블을 별도로 분리통합형(단일Entity) : Entity타입 내에서 자기자신을 참조 다. 복합형(다중Entity)로 구성 시 자기참조관계의 단점 - 추가적인 관계 발생이나 변경 시 새로운 엔터티 ..
NoSQL은 전통적인 관계형 DBMS을 문제점을 극복하기 위해서 나온 개념으로 빅데이터에 특화된 DB라고 이해를 하면 쉽다. 관계형 DBMS의 무거운 처리와 다양한 기능들을 제거하고 심플한 매커니즘을 장착하여 범용적인 서비스보다는 특별한 목적이 있는 DB라고 생각하면 된다. 일관성 모델의 Not only SQL, NoSQL의 개요 가. NoSQL의 개념- 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공하는 DB (wikipedia)- Not only SQL, 즉 SQL만을 사용하지 않는 데이터베이스 관리 시스템 데이터를 저장하는 방법에는 여러가지가 있으며, NoSQL은 SQL만을 사용하여 저장하지 않는다는 의미를 담고 있다..
데이터 독립성(Data Independence) 가. 데이터 독립성의 개념 - 하위 단계의 데이터 구조가 변경되더라도 상위 단계에 영향을 미치지 않는 속성- 데이터베이스 구조의 변화로 인한 영향을 프로그램에 미치지 않도록 하는 것- 데이터 표현 방법이나 저장 위치가 변하더라도 응용 프로그램에는 아무런 영향을 미치지 않는 성질- DBMS의 궁극적인 목적으로 응용프로그램이 데이터에 종속되지 않는 것을 의미한다.- 미국 표준 협회(ANSI) 산하의 X3 위원회(컴퓨터 및 정보 처리)의 특별 연구 분과 위원회에서 1973년 DBMS와 인터페이스를 위해 제안한 Three-Schema Architecture 나. 데이터 독립성의 필요성 각 View의 독립성 유지, 계층별 View에 영향을 주지 않고 변경 유지보수 ..
조인연산(Join Operation) 이란? - SQL 명령문에 의해서 여러 테이블에 저장된 데이터를 한번에 조회할 수 있게 하는 DBMS의 기능- 두 집합(테이블) 간의 곱으로 데이터를 연결하는 가장 대표적인 데이터 연결 방법- 대표적인 종류로 Nested-Loop Join, Sort-Merge Join, Hash Join 등이 존재함 ※ 조인연산은 옵티마이저(Optimizer)의 성능 및 DBMS의 고유의 성능, 그리고 조인연산의 알고리즘에 의해서 속도 등의 차이가 있을 수 있으나, 결과집합은 동일함 Nested Loop Join 가. Nested Loop의 개념- 2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 Row를 결합하여 원하는 결과를 조합하는 방식- 먼저 선행 테이블의 처리..
Isolation Level의 필요성 DBMS를 혼자서 사용한다면 문제가 없겠지만, 대부분의 프로그램이 여러명이 사용하고 있으며 상대방이 변경된 부분이 반영이 안되거나 혹은 반영이 이상하게 되어서 화면상의 데이터가 꼬이는 문제등이 발생하게 된다. 내가 실행하고 있는 이 트랜잭션 안에서 중간에 다른 트랜잭션의 결과가 반영이 되어, 치명적인 연산 버그등이 발생하게 되면 이미 사용할 수 없는 수준으로 폐기처리 해야 할 것이다. 예를 들어, A라는 값이 1000이라는 값이 있고, B라는 값이 2000이라는 값이 있는데 처음 시작했을 때, A+B를 해서 3000이라는 값을 저장하였다. 그러나 다른 트랜잭션이 A의 값을 1500으로 변경하여, 마지막에 한번 더 A+B를 해서 3500으로 변경이 되었다면 처음과 마지..