CS/DB

    2. 관계형 데이터베이스

    2. 관계형 데이터베이스2. 관계형 데이터베이스키무결성뷰(View) (B)인덱스인덱스의 주요 개념인덱스의 장단점주요 인덱스 유형클러스터형 인덱스(Clustered Index)비클러스터형 인덱스(Non-Clustered Index)유니크 인덱스(Unique Index)유니크 인덱스와 기본 키의 차이점복합 인덱스(Composite Index)인덱스 사용 시 고려사항인덱스의 컬럼 선택 기준인덱스의 사용 예해시 테이블 인덱스B +/- 트리 인덱스B - 트리 인덱스B-트리 인덱스의 주요 특징B-트리 인덱스의 작동 방식B-트리 인덱스의 장단점B + 트리B+ 트리의 주요 특징B+ 트리의 작동 방식B+ 트리의 장단점B-트리와 B+ 트리의 비교ORM(Object-Relational Mapping)ORM의 주요 개념ORM..

    1.데이터베이스의 종류

    1.데이터베이스의 종류1.데이터베이스의 종류데이터베이스란데이터베이스의 특징데이터베이스의 개념적 요소스키마(schema)데이터 설계 3단계관계형 데이터베이스NoSQL(Not Only SQL) 데이터베이스주요 특징NoSQL의 한계NoSQL 데이터베이스 유형NoSQL의 사용 사례RDBMS vs NoSQL데이터베이스란사용자나 프로그램에서 사용하기 위해 저장 및 관리하는 데이터 집합이다.데이터베이스의 특징실시간 접근 : 데이터베이스에 언제든지 접근해 필요한 처리를 할 수 있다.동시 공유 : 여러 사용자가 데이터베이스에 접근할 수 있다.지속적 변화 : 데이터의 갱신, 삽입, 삭제 등을 통해 계속해서 변화한다.내용 기반 참조 : 데이터의 값을 이용해 데이터에 접근할 수 있다데이터베이스의 개념적 요소개체(entity,..

    인덱스

    인덱스(index)란? 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕고 있다. 인덱스를 활용하면, 데이터를 조회하는 SELECT 외에도 UPDATE, DELETE의 성능이 함께 향상된다. 만약 index를 사용하지 않은 컬럼을 조회해야 하는 상황이라면 전체를 탐색하는 Full Scan을 수행해야 한다. Full Scan은 전체를 비교하여 탐색하기 때문에 처리 속도가 떨어진다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정력하여 별도의메모리 공간에 데이터의물리적 주소와 ..

    정규화

    정규화 목차 정규화란 이상 현상이란 정규화 단계 정규화의 장점 정규화의 단점 반정규화 정규화란 정규화(Normalization)의 기본 목표는 테이블 간에 중복된 데이타를 허용하지 않는다는 것이다. 중복된 정보로 인해 이상 현상이 발생하게 된다. 이러한 문제를 해결하기 위해 정규화 과정을 거치는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 테이블을 분해하는 정규화 단계가 정의되어 있으며, 테이블이 어떻게 분해되는지에 따라 정규화 단계가 달라진다. 이상 현상(Anomaly)이란 이상 현상이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하며 이 중복으로 인해 테이블 조작 시 문제가 생기는 현상을 의미 1...

    스프링 트랜잭션과 트랜잭션 전파

    스프링 트랜잭션 Isolation SQL 의 Isolation level 과 동일하게 동작 (SQL 격리수준 속성에 대한 자세한 내용은 이곳을 참고) READ_UNCOMMITED : commit 되지 않은 데이터를 읽는다 READ_COMMITED : commit 된 데이터만 읽는다 REPEATABLE_READ : 자신의 트랜잭션이 생성되기 이전의 트랜잭션(낮은 번호의 트랜잭션)의 커밋된 데이터만 읽는다 SERIALIZABLE : LOCK 을 걸고 사용 DEFAULT : 사용하는 DB 기본 설정을 따른다. (Oracle 은 READ_COMMITED, Mysql InnoDB 는 REPEATABLE_READ 가 Default) 스프링 트랜잭션 전파 타입 Propagation 트랜잭션이 시작하거나 참여하는 방법..

    트랜잭션 격리수준

    트랜잭션 격리 수준 개발을 하다 보면 여러 스레드에서 동시에 하나의 자원에 접근하는 경우가 있다. 접근을 적절하게 제한하지 않는다면 생각지 못한 버그가 발생할 수 있다. 게다가 이런 경우는 디버깅하기도 굉장히 어렵다. 데이터베이스도 N개의 트랜잭션을 동시에 처리하다 보면 같은 데이터에 접근할 수 있다. 트랜잭션의 목적은 로직의 흐름 속에서 데이터를 일관되게 처리하기 위한 것이나, 동시에 같은 데이터에 write 접근을 하는 경우엔 문제가 될 수 있다. 동시성 문제를 해결하기 위해 데이터베이스는 격리 수준이라는 기능을 제공한다. 격리 수준의 종류 격리 수준은 4개로 구분된다. READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE 4에 가까울 수록 동시..