본문 바로가기

DB

(3)
[DB] 인덱스 개념 및 원리 인덱스란? 인덱스의 개념을 설명할 때 가장 많이 드는 예시가 있다. 바로 책의 색인(Index)이다. 데이터베이스 공부를 하다가 RDBMS 개념이 궁금해 책을 찾아보고 있다고 가정해보자. 책을 첫 장부터 넘기면서 해당 내용을 찾을 수도 있지만 이는 매우 비효율적이다. 아마 대부분의 똑똑한 독자들은 책의 맨 뒤에 있는 색인 페이지에서 해당 개념이 포함되어 있는 페이지를 찾아 볼 것이다. 이처럼 책의 색인은 우리가 원하는 단어를 쉽고 빠르게 찾을 수 있게 도와준다. 이와 마찬가지로 데이터베이스에서 인덱스를 설정하면 테이블 안에 내가 찾고자 하는 데이터를 쉽고 빠르게 찾을 수 있다. 여기까지만 보면 인덱스를 사용하는게 매우 효과적으로 보이지만 무조건 인덱스를 사용하는 것은 오히려 성능을 악화시킬 수 있다. 예..
[DB] 데이터베이스 정규화 정규화란? 정규화는 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정입니다. 정규화는 무결성을 충족시키기 위해 같은 의미를 담는 릴레이션을 더 좋은 구조로 만들면서 자료의 중복은 최소화하고 독립적인 관계는 별개의 릴레이션으로 표현해야 하며, 각각의 릴레이션은 독립적인 표현이 가능해야 합니다. 이상 현상 삽입 이상(insertion anomalies) : 원하지 않는 데이터가 삽입되거나 필요한 데이터가 삽입되지 않아 발생하는 문제 삭제 이상(deletion anomalies) : 하나의 데이터를 삭제할 때 다른 필요한 데이터까지 같이 삭제되는 문제 수정(갱신) 이상(modification an..
[DB] 트랜잭션과 격리 수준 트랜잭션이란? 트랜잭션이란 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위라고 할 수 있으며, 트랜잭션에는 여러개의 연산이 수행될 수 있다. 그리고 트랜잭션은 아래 네 가지 원칙(ACID)가 반드시 지켜져야 한다. 원자성 (Atomicity) 처음에 언급했듯이 트랜잭션에는 여러개의 연산이 수행될 수 있는데 이 연산들이 모두 성공하거나 모두 실패해야 한다. 예를 들어 은행의 계좌 이체 서비스를 개발한다고 가정하면 하나의 계좌에서는 출금이 이루어져야 하고, 이체의 대상이 되는 계좌에는 입금이 동시에 일어나야 한다. 만약 출금에는 성공했는데 입금에는 실패한다면 결국 출금 계좌의 주인은 돈만 잃은 셈이 된다. 즉 한 트랜잭션 안에 있는 모든 연산이 성공했을때만 커밋(COMMIT)되어 데이터베이스에 영..