컴공/데이터베이스

    [DB] partitioning (파티셔닝 뜻과 종류, 사례)

    partitionig? DB 테이블을 더 작은 테이블로 나누는 것을 의미한다 paritioning에는 vertical partitioning과 horizontal partitioning이 있다 vertical partitioning? vertical partitioning은 column을 기준으로 테이블을 나누는 것을 말한다 정규화가 대표적으로 vertical partitioing의 한 종류이다 이미 정규화가 된 테이블이라도 여러 이유로 vertical partitioning을 할 수 있는데, 주로 다음과 같은 이유일 때이다 * 자주 사용되는 column들을 따로 분리하고 싶을 때 * 사이즈가 큰 column이 자주 사용되지 않을 때 * 민감한 정보를 가지는 column들을 따로 분리해서 조금 더 보안을..

    DB 테이블에 인덱스(index)가 매우 중요한 이유

    만약 table에 인덱스를 걸지 않으면 어떻게 될까? 원하는 데이터를 찾고 싶을 때 table 전체를 full scan 해야 한다 full scan 이란? row를 하나하나씩 모두 확인하는 것을 의미하며, table scan 이라고도 부른다 full scan은 당연히 시간이 오래 걸리기 때문에 서비스에 좋지 않은 영향을 끼친다 아래와 같이 ARTICLE 테이블이 있다고 가정해보자 article_id writer_id title created_at read_cnt comment_cnt 1 aaa ... ... ... ... 2 bbb ... ... ... ... ... ... ... ... ... ... 만약 codingyo가 작성한 글을 찾고 싶다면 쿼리문은 아래와 같다 SELECT * FROM arti..

    [DB] transaction isolation level(격리 수준) 존재 이유

    isolation level 존재 이유 데이터의 일관성과 DBMS의 transaction 전체 처리량 사이에서 개발자가 직접 선택할 수 있도록 하기 위함이다 즉, DB 성능과 데이터 정확성 사이에서 개발자가 알아서 선택하도록 하기 위함이다 transaction의 isolation 속성이 완벽하게 동작한다면, 데이터 불일치는 발생하지 않겠지만 그만큼 DBMS에서 동시에 처리할 수 있는 transaction 수는 줄어든다. 그렇다고 isolation을 완벽하게 구현하지 않는다면, 동시에 처리할 수 있는 transaction의 수는 증가하겠지만 데이터 일관성이 깨질 수 있다 그래서 SQL 표준에서는 총 네 가지의 isolation level을 정의해서 개발자가 데이터 일관성과 DBMS의 성능 사이에서 적절하게..

    [DB] key와 index의 차이

    key와 index는 무엇인가? key는 테이블에 있는 tuple을 유일하게 식별하는(uniquely identify) attributes 집합을 의미한다 index는 테이블에 있는 tuple을 빠르게 찾기 위해 테이블에 적용되는 추가적인 자료 구조다 (보통 candidate key를 줄여서 그냥 key라고 부른다. 즉 key = candidate key) primary key와 index의 관계 한 테이블에는 여러 key들이 존재할 수 있다. 그중에서 tuple을 식별할 목적으로 DB 설계자가 공식적으로 선택하여 지정한 key를 primary key라고 한다 primary key는 엄밀히 말하면 constraint다 테이블을 생성할 때 primary key를 지정하게 되면 해당 primary key에 ..

    [DB] key와 functional dependency 차이

    Key? - super key : DB table의 각 튜플(tuple)을 유니크하게 식별(uniquely identify)할 수 있는 attribute(s)를 의미 - key (or candidate key) : super key인데, 이 key에서 attribute를 하나라도 제거하면 더 이상 튜플을 유니크하게 식별할 수 없는 super key Functional dependency? DB 테이블의 attributes로 이루어진 집합 X와 집합 Y 사이에 'tuple들의 X값이 같다면 Y값도 같다'는 의존 관계가 존재할 때 X와 Y 사이의 이런 관계를 functional dependency(FD)라고 부르며, 'X는 Y를 함수적으로 결정한다(functionally determine)' 혹은 'X는 Y..