DataBase/DB theory

    Concurrency control - schedule과 serializability

    보호되어 있는 글입니다.

    [DB] ORM이란?

    영속성(Persistence)이란? 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터 특성을 말한다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다. Object Persistence(영구적인 객체) 메모리 상의 데이터를 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 영구적으로 저장하여 영속성을 부여한 객체를 말한다. 데이터를 데이터베이스에 저장하는 3가지 방법 JDBC (Java에서 사용) Spring JDBC (Ex. JdbcTemplate) Persistence Framework (Ex. Hibernate, MyBatis) Persistence Layer 프로그램의 아키텍처에서, 데이터에 영속성을 부여해주는..

    [DB] 동시성 문제와 제어 기법(Concurrency Control )

    동시성 제어(Concurrency Control) 동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 트랜잭션의 실행 순서를 제어하는 기법이다 다중 사용자 환경을 지원하는 DB 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능으로 DB의 일관성을 해치지 않도록하는 트랜잭션의 데이터 접근기술이다. 다중 사용자 환경을 지원하는 DBMS의 경우 필수적으로 지원해야 하는 기능으로 병행제어라고도 한다. 트랜잭션의 직렬화 수행 보장 ACID의 중 하나인 고립성은 상호 간의 트랜잭션을 독립적으로 만들어준다. 그런데 2개 이상의 트랜잭션이 하나의 값에 접근하는 경우에는 어떻게 될까? 2개의 트랜잭션이 모두 읽는 경우에는 문제가 발생하지 않지만, 1개의 트랜잭션은 쓰고 1..

    [DB] 트랜잭션이란?

    보호되어 있는 글입니다.

    [DB] Join 이란, join의 종류, inner join과 outer join의 차이점

    조인이란? 두개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법이다. 자신이 검색하고 싶은 컬럼이 다른 테이블에 있을 경우 주로 사용하며 여러 개의 테이블을 마치 하나의 테이블인 것처럼 활용하는 방법이다. 보통 Primary key혹은 Foreign key로 두 테이블을 연결한다. 테이블을 연결하려면 적어도 하나의 컬럼은 서로 공유되고 있어야 한다. 조인의 종류 INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN SELF JOIN SQL 조인 쉽게 이해하기 위한 다이어그램 그렇다면, 이제 다음과 같은 테이블 두 개를 가지고 각각의 조인에 대해 알아보자. [Star 테이블] ID Name DepNo 1 강호동 10 ..

    [DB] 정규화(Normalization) & 역정규화 기법

    정규화(Normalization) 정규화(Normalization)의 기본 목표는 테이블 간에 중복된 데이터를 최소화시키는 것이다. 즉, 중복요소를 찾아 제거해 나가는 과정이라고 할 수 있다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 또한 삽입/갱신/삭제 시 발생할 수 있는 각종 이상현상(Anamolies)들을 방지할 수 있다. 데이터베이스 정규화의 목적은 주로 두 가지이다. 1. 불필요하고 중복된 데이터(data redundancy)를 제거한다. 2. 데이터 저장을 "논리적으로" 한다. 여기서 2번 데이터 저장을 논리적으로 한다는 것은 데이터 테이블의 구성이 논리적이고 직관적이어야한다는 것이다. 우선 정규화를 안 했을 때..

    [DB] 데이터베이스 관계(Relationship)

    데이터베이스 관계(Relationship) 관계형 데이터베이스(Oracle, MySQL, MS-SQL, SQLite 등등)는 엔티티(Entity)끼리 관계를 맺을 수 있어서 관계형 DB라는 이름이 붙었다. 이때 관계는 두 엔티티가 서로 관련이 있을 때를 말하는데, 1:1, 1:N, N:M 관계를 맺을 수 있다. 엔티티간의 관계를 알기 전에 알아야할 지식에 대해 먼저 살펴보자. 스키마(Schema) & 쿼리 디자인(Query Design) 스키마(Schema)란? 스키마란 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것을 말한다. 즉, 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명을 말한다. 데이터베이스의 ..

    [DB] 테이블 제약 조건

    테이블 제약 조건 - 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 여러가지 규칙을 적용해 놓는 것 - 간단하게 말하면 테이블 안에서 데이터의 성격을 정의하는 것. 1. NOT NULL 조건 컬럼을 필수 필드화 시킬 때 사용. NOT NULL 제약조건 설정 시 해당 컬럼에는 꼭 데이터를 입력해야 함. -- emp3라는 테이블을 만들고, ename 컬럼의 제약조건명을 emp_nm_ename 으로 하여 NOT NULL 제약조건을 설정하자. SQL> CREATE TABLE emp3( ename VARCHAR2(30) CONSTRAINT emp_nm_enmae NOT NULL ); -- 제약조건을 확인할 때는 USER_CONSTRAINTS 뷰를 통해서 확인할 수 있다. SQL> SELECT CONSTR..

    [DB] 무결성 제약 조건

    데이터 무결성이란? 무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다 즉, 데이터 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미한다. 정확성 : 중복이나 누락이 없는 상태 일관성 : 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태 만약 데이터베이스에서 데이터 무결성 설계를 하지 않는다면 테이블에 중복된 데이터 존재, 부모와 자식 데이터 간의 논리적 관계 깨짐, 잦은 에러와 재개발 비용 발생 등과 같은 문제가 발생할 것이다. 그렇기 때문에 DBMS에서 데이터의 무결성이 유지되는 것은 중요한 사항이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지한다. 무결성 제약조건 무결성 제약조건이란 데이터베이스의..

    [DB] 데이터베이스 키(KEY) 종류

    Relation 주로 테이블(Table)과 같은 의미로 사용되며, 데이터의 집합을 의미한다. 튜플(Tuple)과 어트리뷰트(Attribute)로 구성되어있다. Table 중 데이터베이스에서 사용되기 위한 조건을 갖춘 것이 relation이다. Relation의 제약 조건 중 가장 자주 등장하는 조건은 다음과 같다. table의 cell은 단일 값을 갖는다. 어떤 두 개의 row도 동일하지 않다. 키가 존재하는 이유 튜플을 구별하기 위해 튜플을 유일하게 구별하기 위해 모든 속성을 이용하는 것보다 일부 속성만 이용하는 것이 효율성을 높일 수 있다. 릴레이션에 포함된 튜플들을 유일하게 구별해주는 역할은 속성 또는 속성들의 집합인 키가 담당한다. ※ 튜플 (Tuple) : 릴레이션 (테이블) 을 구성하는 각각의..