CS/데이터베이스

함수 종속(Functional Dependency)정규화를 알아보기 전에 먼저 함수 종속을 알아야 한다. 함수 종속(FD)이란 한 테이블에 있는 두 개의 속성 집합 사이의 제약을 의미한다.만약 특정 X 값에 따라서 Y 값이 유일하게 결정될 때 X가 Y를 함수적으로 결정한다라고 하고, 반대로 Y가 X에 함수적으로 의존한다고 말한다. 이러한 제약 관계를 함수 종속(FD)라 하며 기호로는 X -> Y로 표현한다.함수 종속을 파악하기 위해서는 테이블의 스키마를 보고 의미적으로 파악해야 한다. 특정 상태에 따라서 파악하게 되면 중복되는 속성 값이 있을 수도 있기 때문에 상태가 아닌 스키마를 보고 함수 종속을 파악한다. 자명 함수 종속(Trivial Functional Dependency)X가 Y를 결정할 때 Y가..
스키마(Schema)데이터베이스에서 스키마(Schema)는 관계형 데이터베이스 내에서 데이터가 어떻게 구성되는지 정의하는 것으로 테이블 이름, 필드, 데이터 유형 및 엔티티 간의 관계와 같은 논리적 제약 조건이 포함된 논리적인 데이터베이스를 의미한다.이러한 스키마를 표현하는 프로세스를 데이터 모델링이라고 하며 데이터베이스의 뼈대를 구축하는데 중요한 메타데이터를 담고 있다. 스키마의 3 계층스키마는 하나의 데이터베이스를 사용자의 관점에 따라 3 계층으로 구분할 수 있다.각 계층에 대해서 하나씩 살펴보자. 외부 스키마(External Schema)외부 스키마는 같은 데이터베이스에 대해서 서로 다른 관점을 정의한 것을 의미한다.외부 스키마의 또 다른 의미로는 프로그래머나 사용자의 입장에서 데이터베이스의 모습을..
인덱스(Index)엄청나게 큰 규모의 데이터에서 원하는 데이터를 찾는다는 것은 쉽지 않다.실제로 몇 GB의 데이터에서 원하는 데이터를 select 쿼리문을 통해 조회하게 되면 엄청 느린 속도로 조회되거나 혹은 아예 동작을 안 할 수도 있다.그렇다면 어떻게 하면 요청된 데이터를 빠르게 조회할 수 있을까?이럴때 사용되는 도구가 바로 인덱스(Index)이다.인덱스라고 하면 가장 많이 나오는 예시가 바로 책이다.책을 한 번이라도 읽어본 사람은 책의 앞부분에 목차가 있다는 것을 알 것이다.이러한 목차는 내가 원하는 정보를 바로 찾을 수 있게 해 주는데 만약 목차가 없었다면 내가 원하는 정보를 페이지 하나씩 넘겨보며 찾아야 될 것이다.또 다른 예시를 들어보면 만약 자바를 공부하기 위해 자바 언어에 대한 책을 구입했..
동시 제어에서 발생하는 이상 현상이전에 동시성 제어에 대해서 알아보았다. 데이터베이스 - 동시성 제어동시성 제어(Concurrency Control)이전에 살펴본 트랜잭션의 개념 중 ACID 속성에서 Isolation(독립성)을 다시 생각해 보자.독립성은 트랜잭션을 병렬적으로 처리하면서 다른 트랜잭션에 영향을 미치지hotechstory.tistory.com트랜잭션을 병렬적으로 처리할 수 있게 되면서 많은 이점을 가져갈 수 있지만 반대로 그에 따른 이상 현상이 발생할 수 있다.대표적인 3가지 이상 현상을 알아보고 그에 따른 고립화 수준(Isolation Level)과 다른 이상 현상까지 알아보자. 대표적인 현상 3가지Dirty readDirty read 어떤 트랜잭션에서 commit 되지 않은 데이터를 다..
동시성 제어(Concurrency Control)이전에 살펴본 트랜잭션의 개념 중 ACID 속성에서 Isolation(독립성)을 다시 생각해 보자.독립성은 트랜잭션을 병렬적으로 처리하면서 다른 트랜잭션에 영향을 미치지 않아야 한다. 하지만 병렬적으로 실행하면 항상 문제가 되는 것이 있는데 바로 공유하고 있는 자원에 대해서 동시에 접근하게 되는 문제이다.또한, 하나의 데이터베이스에서 하나의 작업만 수행할 수 있기 때문에 병렬적으로 처리되는 트랜잭션들을 순차적으로 수행할 필요가 생기게 되고 이러한 것을 제공하기 위해 나온 개념이 스케줄링이다.스케줄링을 통한 동시성 제어는 DBMS 분야에서 중요한 구성 요소이다. 시스템에서 병렬로 실행되는 여러 트랜잭션 간의 일관성, 무결성 및 독립성을 유지하는 데 도움이 되..
트랜잭션(Transaction)트랜잭션(Transaction)은 데이터베이스에서 수행되는 논리적 작업 단위이다.트랜잭션에 대해서 찾아보면 대표적인 예시로 송금 작업이 있다.송금하려는 사람의 계좌에 잔액을 먼저 확인하고 일정 금액을 상대방에게 송금한 후 상대방의 잔액을 조회하는 일련의 작업들을 묶은 것을 트랜잭션이라고 한다.송금 예시는 일반 사용자가 사용하는 입장이고 실제 데이터베이스를 생각해 보자. 실제 데이터베이스에서 이루어지는 작업이라고 하면 읽기, 쓰기, 갱신 등 여러 작업이 있을 것이다.각각의 작업들을 개별적으로 처리하게 된다면 하나의 작업이 완료된 후 다음 작업이 실행되기 때문에 효율적이지 못할뿐더러 중간에 정보가 바뀌는 문제가 발생할 수도 있다. 트랜잭션은 이러한 삽입, 갱신, 삭제 등 여러 ..
ERD(Entity Relationship Diagram)ERD(Entity Relationship Diagram)는 엔티티가 시스템 내에서 서로 어떻게 관련되어 있는지 보여주는 일종의 플로우차트로 엔티티와 엔티티 간의 관계를 그래픽으로 표현한 것이다.그러면 관계나 다이어그램은 알 것 같은데 엔티티는 뭘까?엔티티의 사전적인 의미는 저장되는 데이터를 나타내는 객체 또는 개념이다. 조금 쉽게 말해보자면 표현하고자 하는 대상을 의미한다고 생각하면 될 것 같다.예를 들면 엔티티를 사람, 장소, 사물로 표현할 수 있다. 그리고 각 엔티티마다 속성이라는 것을 갖게 되는데 사람을 예로 들면 사람의 이름, 거주하는 거주지, 전화번호 등 그 사람을 표현할 수 있는 것을 속성이라고 한다.그럼 다시 ERD에서 살펴보자면 식..
키(Key) 방대한 양의 데이터를 관리한다고 생각해 보자. 각 데이터가 정확히 있어야 할 위치에 있는지, 데이터 간의 관계가 유지되는지, 중복이 없는지 등과 같은 것을 어떻게 보장할 수 있을까?내가 생각했을때 데이터가 어디에 위치해 있는지, 어떤 관계를 맺고 있는지, 중복은 없는지 등과 같은 것을 여러 가지로 어떤 표시를 해두면 쉽게 보장할 수 있을 것 같다고 생각한다.이러한 특정 표시는 데이터를 관리할 수 있는 시스템인 DBMS(Database Management System)에서 키(Key)라고 부른다.DBMS에서 키는 데이터의 효율적인 구성 및 검색을 가능하게 하는 필수 구성 요소이다. 앞서 설명했던 것처럼 키를 통해서 데이터의 위치나 관계 등과 같은 것들을 보장할 수 있기 때문이다.또한, 키를 사..
대규모 데이터 처리에 대한 내 생각최근에 취업을 준비하며 여러 채용 공고를 확인해 보면 많은 회사들이 대용량 트래픽이나 데이터를 처리해 본 경험이 있는 사람들을 우대하고 있다.내가 근사한 서비스를 만들어서 많은 사람들이 사용하거나, 서비스 기업에 취업하지 않고서는 그러한 경험을 한다는 게 쉽지 않은 부분이다.직접 경험해보지는 못하지만 다른 사람들의 경험을 간접적으로나마 느껴보고 공부해보면 그나마 괜찮지 않을까 생각이 든다.대규모 데이터를 어떻게 처리해야 될지를 고민하기에 앞서 대규모가 어느 정도인지를 파악해야 한다.조금 부끄러운 얘기지만 이번에 수료한 부트캠프를 다니기 전까지 대규모 데이터라고 하면 수 GB ~ 수십 GB 정도 될 줄 알았다. 물론 잘 모르는 내 입장에서는 저 정도 크기의 데이터도 되게 ..
Hosae905
'CS/데이터베이스' 카테고리의 글 목록