SQLD

    3-4 TCL

    3-4 TCL

    트랜잭션TRANSACTION 개요 트랜잭션은 데이터베이스의 논리적 연산단위로, 밀접히 관련되어 분리될 수 없는 한 개 이상의 DB 조작을 가리킨다. 한 트랜잭션에는 한 개 이상의 SQL 문장이 포함된다. 트랜잭션은 분할할 수 없기 때문에 전부 적용하거나 전부 취소한다. 즉, ALL OR NOTHING의 개념이다. 은행에서의 계좌이체 상황을 연상해보자. 계좌이체는 최소 두 가지 이상의 작업으로 이뤄진다. 우선 자신의 계좌에서 잔액을 확인하고 이체할 금액을 인출한 후 나머지 금액을 저장한다. 그리고 이체할 계좌를 확인하고 앞에서 인출한 금액을 더한 다음 저장하면 계좌이체가 완료된다. 계좌이체 사례: 1. 100번 계좌의 잔액에서 10,000원을 뺀다. 2. 200번 계좌의 잔액에 10,000원을 더한다. 계..

    3-3 DML

    3-3 DML

    - 좌측 정렬 : 문자 및 날짜 데이터 - 우측 정렬 : 숫자 데이터 앞 절에서 테이블을 생성하고 생성된 테이블의 구조를 변경하는 명령어에 대해서 알아보았다. 지금부터는 만들어진 테이블의 관리할 자료들을 입력/수정/삭제/조회하는 DML(DATA MANIPULATION LANGUAGE) 사용 방법을 알아보자. DB는 DDL 명령어와 DML 명령어를 다르게 처리한다. DDL(CREATE, ALTER, RENAME, DROP) 명령어는 직접 DB 테이블에 영향을 미치기 때문에 DDL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시 완료(AUTO COMMIT)된다. 하지만 DML(INSERT, UPDATE, DELETE, SELECT) 명령어는, 조작하려는 테이블을 메모리 버퍼에 올리고 작업하기 때문에 테..

    3-2 DDL

    3-2 DDL

    데이터 유형 데이터 유형은 DB 테이블에 특정 자료를 입력할 때 그 자료를 받아들일 공간을 자료 유형별로 나누는 기준이다. 즉 특정 칼럼을 정의할 때 선언한 데이터 유형은 그 칼럼이 받아들일 수 있는 자료 유형을 규정한다. 선언한 유형이 아닌 다른 종류의 자료가 들어오려고 하면 DB는 에러를 발생시킨다. 또, 데이터 유형과 더불어 지정한 크키Size도 중요하다. 선언 당시 지정한 데이터 크기를 넘어선 자료가 입력되면 역시 에러가 난다. DB에서 사용하는 데이터 유형은 다양한 형태가 있는데, 벤더 별로 약간 차이가 있다. 숫자 타입을 예시로 들면 ANSI/ISO 기준에서는 NUMERIC Type의 하위 개념으로 NUMERIC, DECIMAL, DEC, SMALLINT, INTEGER, INT, BIGINT..

    3-1 관계형 데이터베이스 개요

    3-1 관계형 데이터베이스 개요

    데이터베이스의 발전 - 1960년대 : 플로우차트 중심의 개발. 파일 구조를 통해 데이터를 저장/관리함. - 1970년대 : 데이터베이스 관리 기법이 태동되던 시기. 계층형Hierarchical 데이터베이스, 망형Network 데이터베이스 같은 제품들이 상용화 됨. - 1980년대 : 현재 대부분의 기업에서 사용되고 있는 관계형 데이터베이스가 상용화. Oracle, Sybase, DB2 등 등장함. - 1990년대 : 보다 향상된 기능의 많은 DB 제품으로 정보시스템의 확실한 핵심 솔루션으로 자리잡음. 인터넷 환경의 급속한 발전과 객체 지향 정보를 지원하기 위해 객체 관계형 데이터베이스로 발전. 관계형 데이터베이스Relational Database의 등장 관계형 데이터베이스 1970년 영국의 수학자였던 ..

    2-6 분산 데이터베이스와 성능

    2-6 분산 데이터베이스와 성능

    분산 데이터베이스 DB 시스템 구축 시 한 대의 물리적 시스템에 DBMS를 설치하고 여러 사용자가 접속하여 DB를 사용하는 구조를 중앙 집중형 데이터베이스라고 한다. 또 분산 데이터베이스는 데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역의 여러 노드로 위치시켜 사용성/성능 등을 극대화 시킨 데이터베이스이다. 분산데이터베이스의 정의는 다음과 같다. 여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터들의 모임 물리적 Site 분산, 논리적으로 사용자 통합·공유 분산 데이터베이스의 투명성Transparency 투명성 설명 분할 투명성 고객은 하..

    2-5 데이터베이스 구조와 성능

    2-5 데이터베이스 구조와 성능

    슈퍼타입/서브타입 모델의 성능고려 방법 슈퍼/서브타입 데이터 모델의 개요 'Extended ER모델'이라고 부르는 '슈퍼/서브타입 데이터 모델'은 최근에 데이터 모델링을 할 때 자주 쓰이는 모델링 방법이다. 업무를 구성하는 데이터를, 공통점/차이점 등 특징을 고려하여 효과적으로 표현할 수 있기 때문이다. 즉 공통의 부분은 슈퍼타입으로 모델링하고 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성은 별도의 서브엔터티로 구분해서, 업무의 모습을 정확하게 표현하고 물리적 데이터 모델로 변환할 때 선택의 폭을 넓힐 수 있는 장점이 있다. 당연히 슈퍼/서브타입의 데이터 모델은 논리적 데이터 모델에서 이용되는 형태이고 분석/설계단계를 구분하자면, 분석단계에서 많이 쓰인다. 따라서 물리적인 데이터 모델을 설계하는 ..

    2-4 대량 데이터에 따른 성능

    2-4 대량 데이터에 따른 성능

    대량 데이터발생에 따른 테이블 분할 개요 아무리 설계가 잘되어 있는 데이터 모델이라고 하더라도 대량의 데이터가 한 테이블에 집약되어 있고 한 하드웨어 공간에 저장되어 있으면 성능저하를 피하기 힘들다. 일이 처리되는 양이 한군데에 몰리는 현상은 어떤 업무에 있어서 중요한 데이터가 특정 테이블에 있는 경우에 발생되는데, 이런 경우 트랜잭션이 분산 처리될 수 있게 테이블 단위의 분할을 적용할 필요가 있다. 대량의 데이터가 처리되는 테이블의 성능이 저하되는 이유는 SQL 문장에서 데이터 처리를 위한 I/O량이 증가하기 때문이다. 막연하게 데이터량이 많아져 그 처리를 위한 I/O량이 많아질 것이라고 생각한다면, 인덱스의 적절한 구성(원하는 데이터만 접근하여 I/O량을 조절하는 방법)을 통해 해결될 수 있다고도 생..

    2-3 반정규화와 성능

    2-3 반정규화와 성능

    반정규화De-Normalization DB의 성능 향상을 위해 데이터 중복을 허용하고 조인을 줄이는 것으로, 반정규화를 통해 조회 성능은 좋아지지만 데이터 모델의 유연성을 낮아진다. 또 데이터 무결성을 깨뜨릴 위험이 있다. 반정규화를 수행하는 경우 정규화에 충실하면 종속성, 활용성을 향상되지만 수행 속도가 느려질 때 다량의 범위, 대량의 데이터를 자주 처리할 때 특정 범위의 데이터만 자주 처리할 때 통계성 프로세스에 의해 통계/요약/집계 정보가 자주 요구될 때 + 문제 지문: 반정규화 정보에 대한 재현의 적시성으로 판단한다. 예를 들어 빌링의 잔액은 다수 테이블에 대한 다량의 조인이 불가피하므로 데이터 제공의 적시성 확보를 위한 필수 반정규화 대상이다. 반정규화의 적용방법 반정규화 절차 설명 반정규화 대..

    2-2 정규화와 성능

    2-2 정규화와 성능

    정규화Normalization 정규화는 최소한의 데이터 중복, 데이터의 일관성, 최대한의 데이터 유연성을 위해 데이터를 분행하는 과정이다. 따라서 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하는 방법이다. 정규화를 통해 업무 상의 변화가 생겨도 데이터 모델의 변경을 최소화할 수 있다. 제1정규화부터 제5정규화까지 있지만 실질적으로는 제3정규화까지만 수행한다. 위 그림의 왼쪽 테이블에서 새로운 직원이 추가된다고 가정하자. 만약 부서 정보가 없으면 부서코드를 임의로 채워넣어야 한다. 즉 불필요한 정보를 꼭 추가해야 한다. 새로운 부서도 마찬가지인데, 사원 정보가 없기 때문에 임의의 값으로 사원번호를 입력하지 않으면 추가할 수 없다. 이를 이상현상Anomaly이라고 하며 테이블 분해가 필요하다. 오른쪽..

    2-1 성능 데이터모델링의 개요

    2-1 성능 데이터모델링의 개요

    성능 데이터 모델링의 정의 성능이 저하되는 데이터 모델의 경우 크게 세 가지 경우를 고려하여 그 성능을 향상시킬 수 있다. 데이터 모델 구조에 의해 성능이 저하될 수도 있고 데이터가 대용량이 됨으로 인해 불가피하게 성능이 저하되어 나타나는 경우도 있다. 인덱스 특성을 충분히 고려하지 않고 인덱스를 생성함으로 인해 성능이 저하되어 나타나는 경우도 있다. 일반적으로 성능이라고 하면 데이터조회의 성능을 의미한다. 데이터입력/수정/삭제는 일시적이고 빈번하지 않고 단건 처리가 많은 반면 데이터조회의 경우는 반복적이고 빈번하며 여러 건을 처리하는 경우가 많기 때문이다. 이러한 특징은 일반적인 트랜잭션의 성격이 조회의 패턴을 가지고 있다는 것이다. 하지만 어떤 업무의 경우에는 데이터 입력/수정/삭제에 대한 성능이 중..

    1-5 식별자

    1-5 식별자

    식별자Identifiers의 개념 식별자는 엔터티 내에서 인스턴스들을 구분하는 구분자로, 엔터티를 대표하는 속성이다. 따라서 하나의 엔터티에는 반드시 하나의 유일한 식별자가 존재한다. 보통 식별자와 키Key를 동일하게 사용하는데, 논리 데이터 모델링 단계에서는 업무적으로 구분이 되는 '식별자'로, 물리 데이터 모델링 단계에서는 DB 테이블 접근을 위핸 매개체로서 '키'를 사용한다. 식별자의 특징 유일성: 주식별자에 의해 엔터티 내 모든 인스턴스들이 유일하게 구분된다. 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수이다. 불변성: 지정된 주식별자의 값은 자주 변하지 않는다. 존재성: 주식별자가 지정되면 반드시 값이 들어와야 한다. Null 값도 안된다. 대체식별자의 특징은 주식별자의 ..

    1-4 관계

    1-4 관계

    관계의 정의 관계는 엔터티 간의 관련성을 의미하며 존재 관계와 행위 관계로 분류된다. 관계의 패어링 관계는 엔터티 안의 인스턴스가 개별적으로 관계를 가지는 '관계 패어링Relationship Paring'의 집합이다. 따라서 개별 인스턴스가 각각 다른 종류의 관계를 가진다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다. 관계의 분류 관계를 연결할 때 어떤 목적으로 연결되었느냐에 따라 존재에 의한 관계와 행위에 의한 관계로 구분된다. 1. 존재 관계 -엔터티 간의 상태를 의미한다. -'소속된다'라는 의미는 행위(이벤트)에 의해 발생되는 의미가 아니라 황경빈 사원이 DB팀에 소속되어 있기 때문에, 즉 존재에 의해 형성된 의미이다. -UML 클래스 다이어그램의 관계 중 연관관계Associatinon..