DataBase
정보 vs 데이터
데이터: 원시 사실 또는 관찰 결과물
정보: 데이터를 가공하고 해석하여 의미를 부여
데이터베이스
데이터 베이스 개요
데이터베이스 정의
조직체의 응용 시스템들이 공유하고 사용하는 운영 데이터들이 구조적으로 통합된 것
데이터베이스의 구조는 사용되는 데이터 모델에 의해 결정
데이터베이스 특징
대규모 데이터 저장
여러 사용자에 의해 동시 사용
중복 최소화
데이터에 대한 설명을 설명 -> 데이터베이스 스키마 / 메타데이터
프로그램과 데이터 간 독립성 제공
효율적으로 접근하고 질의
DBMS란
데이터베이스를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등의 작업을 수행하는 소프트웨어
DBMS 개요
데이터베이스 스키마
데이터베이스 구조를 정의하고 설명
데이터베이스의 모든 가능한 상태를 미리 정의
데이터베이스 상태
특정 시점의 데이터베이스 내용
시간이 지남에 따라 바뀜
데이터베이스 수정에 따라 바뀜
데이터베이스 시스템(DBS)
DB부터 DBMS, 사용자 및 관련 프로세스를 포함하는 전체 시스템
데이터베이스
조직체의 응용 시스템들이 공유하고 사용하는 운영 데이터들이 구조적으로 통합된 모임
시스템 카탈로그와 저장된 데이터베이스로 구성
시스템 카탈로그: 데이터베이스에 저장된 도든 개체에 대한 정의나 명세를 수록
DBMS
사용자가 새로운 데이터베이스를 생성
데이터베이스의 구조를 명시
사용자가 데이터를 효율적으로 질의하고 수정할 수 있도록 함
시스템의 고장이나 권한이 없는 사용자로부터 데이터를 안전하게 보호
동시에 여러 사용자가 데이터베이스를 접근하는 것을 제어
DBMS 요구사항
데이터 독립성
효율적인 데이터 접근
데이터에 대한 동시 접근
백업과 회복
중복을 줄이거나 제어하며 일관성 유지
데이터 무결성
데이터 보완
쉬운 질의어
다양한 사용자 인터페이스
하드웨어
보조기억장치에 데이터를 저장하고 연산을 위해 CPU를 사용.
주기억장치에 적재되어 실행
파일 시스템 vs DBMS
파일 시스템
파일시스템은 1960년대에 DBMS보다 먼저 등장
데이터에 대한 응용 프로그램의 의존도가 높음
파일 시스템 단점
데이터의 잦은 중복
다수의 사용자들을 위한 동시성 제어가 제공되지 않음
검색하려는 데이터를 쉽게 명시하려는 질의어가 제공되지 않음.
보안 조치가 미흡
회복 기능이 없음.
프로그램-데이터 독립성이 없어 높은 유지보수 비용
파일을 검색하거나 갱신하는 절차가 상대적으로 복잡하기 때문에 프로그래머의 생산성이 낮음.
DBMS 장점
스키마 정의를 통한 중복, 불일치 감소 / 표준화 / 조직체의 요구사항 식별
관리도구를 통한 유지보수 비용 감소 / 보안성 / 무결성 / 회복기능 / 공유와 동시 접근 가능
DBMS 단점
추가적인 하드웨어 비용, DBMS 비용
관리도구 사용법 교육 비용
비밀, 프라이버시 노출 우려
DBMS 도입이 적절하지 않은 경우
초기 투자 비용이 너무 클 때
오버헤드가 너무 클 때
응용이 단순하고 잘 정의되어있고 잘 변경되지 않을 것 같을 때
엄격한 실시간 처리 요구사항이 있을 때
데이터에 대한 다수 사용자의 접근이 필요 없을 때
DBMS 구조의 종류
계층 DBMS 구조
1960년대에 등장한 최초의 계층 DBMS 등장
트리 구조 기반
특정 유형의 응용에 대해서는 빠른 속도와 높은 효율성을 제공
단점
어떻게 데이터에 접근하는 가를 미리 응용 프로그램에서 정의 필요
데이터베이스가 생성될 때 각각의 관계를 정의 필요
레코드들이 링크로 연결되어 구조를 변경하기 어려움
네트워크 DBMS 구조
레코드들을 노드로, 레코드들 관계를 간선으로 표현하는 그래프 기반 모델
링크로 연결되어 레코드 구조를 변경하기 어려움
관계 DBMS
모델이 간단하여 이해하기 쉬움
사용자는 원하는 것만 명시하고 나머지는 DBMS가 결정
객체 지향 DBMS
객체지향 프로그래밍 패러다임 기반 모델
데이터와 프로그램을 그룹화
복잡한 객체를 이해하기 쉬움
유지와 변경 용이
객체 관계 DBMS
DBMS에 객체 지향 개념을 통합
DBMS 언어
DDL(데이터 정의어)
Data Definition Language
데이터베이스 스키마를 정의
데이터 구조 생성(CREATE) / 변경(ALTER) / 삭제(DROP) / 인덱스 생성(CREATE INDEX)
정의어 입력 시 DBMS는 스키마에 대한 명세를 시스템 카탈로그에 저장
DML(데이터 조작어)
데이터 검색(SELECT) / 수정(UPDATE) / 삽입(INSERT) / 삭제(DELETE)
DCL(데이터 제어어)
사용자 권한 부여 (GRANT) / 권한 취소 (REVOKE)
DBMS 사용자
응용 프로그래머
데이터 베이스에서 특정 응용이나 인터페이스를 구현
프로그래밍 언어로 응용 프로그램을 개발하면서, 데이터 조작어를 사용해 데이터베이스 접근
이들이 만든 기작성 프랜잭션을 사용하여 사용자들은 쿼리하고 업데이트
데이터베이스 관리자
조직의 여러 부분의 상이한 요구를 만족시키기 위해서 일관성 있는 데이터베이스 스키마를 생성하고 유지
실제 DB 변경이 필요할때 DBA에게 요청하여 처리
데이터 베이스 스키마를 생성하고 변경
무결성 제약조건을 명시
사용자의 권한을 허용하거나 취소하고, 사용자의 역할을 관리
저장 구조와 접근 방법(물리적 스키마) 정의
백업과 회복
표준화 시행
오퍼레이터
DBMS가 운영되고 있는 컴퓨터 시스템과 전산실을 관리
최종 사용자
질의하거나 갱신하거나 보고서를 생성하기 위해서 데이터베이스를 사용
관계형 데이터베이스(SQL)
릴레이션에 대해서 모든 레코드가 같은 구조를 가짐
선언적 질의어를 통해 데이터 접근
레코드의 순서와 무관하게 응용 프로그램 작성
사용자는 원하는 것만 명시 -> 어떻게 데이터를 찾을지는 명시하지 않음
가장 개념이 단순한 데이터 모델
테이블 구조를 사용
중첩과 같은 복잡한 구조가 없음
집합 위주의 데이터 처리
숙련되지 않은 사용자도 쉽게 이해할 수 있음
표준 데이터베이스 응용에서 좋은 성능
용어
Relation: 2차원 테이블 = SQL의 Table
Tuple: 릴레이션의 각 행 = Record, Row
Attribute: 릴레이션의 이름을 가진 각 열 = Column
도메인(Domain)
한 속성에 나타낼 수 있는 값들의 집합
각 속성의 도메인의 값은 원자값
데이터 타입과 유사
동일한 도메인이 여러 속성에서 사용될 수 있음
복잡 속성, 다치 애트리뷰트 불가
Degree / Cadinality
Degree: 한 릴레이션의 속성들의 수(Column 수)
자주 변경되지 않음
Cardinality: 릴레이션의 튜플 수(Row 수)
시간에 따라 계속 변함
비관계형 데이터베이스(NoSQL)
Not Only SQL
key-value 형식
스키마 정의 관점에서 관계형 데이터베이스보다 유연한 데이터 구조
데이터 저장과 검색에 특화
분산 환경의 데이터 처리 특화
대용량 데이터 처리 효율적
SQL에 비해 읽기, 쓰기 성능이 좋음
PK, FK 등을 정의하지 않음
수평적 확장
복잡한 데이터 구조 표현 가능
문서의 크기가 너무 크면 성능 저하 발생
Document DB
문서처럼 데이터를 저장
일반적으로 JSON과 유사한 형식으로 데이터를 저장
컬렉션의 하위에 문서가 존재하는 방식
MongoDB
Key-Value 타입 DB
Key-Value 쌍의 데이터를 배열 형태로 저장
Redis, Dynamo
Wide-Column Store DB
데이터베이스 열에 대한 데이터를 집중 관리
각 열에는 key-value 형식으로 데이터 저장
Column Families라는 열의 집합체 단위로 데이터 처리
하나의 행에 많은 열을 포함할 수 있어 유연성이 좋음
규모가 큰 데이터 분석에 주로 사용
Cassandra, HBase
Graph DB
자료구조의 그래프와 비슷한 형식
nodes에 entities별로 데이터를 저장
각 node 간의 관계는 edge로 표현
Neo4J, InfiniteGraph
SQL NoSQL 선택
SQL이 적합한 경우
DB의 ACID 성질을 준수하는 경우
데이터베이스의 상호작용 방식을 명확히 규정하여 예외를 줄이고 무결성을 보호할 때
일반적으로 금융 서비스는 ACID를 준수
NoSQL이 적합한 경우
정형화되지 않은 데이터 구조가 필요할 때
클라우드 기반 또는 확장성 중시
데이터 구조를 자주 변경해야 하는 경우
DBMS
DBMS 용어
Relation
SQL에서정보를 구분하여 저장하는 단위, 테이블
Tuple
테이블의 행, Record, Row
릴레이션 내에서 중복되는 값을 가질 수 없음
튜플의 수 -> Cardinality(기수)
Attribute
테이블의 열, Column
어트리뷰트의 수 -> Degree(차수)
Key
테이블에서 행의 식별자로 이용되는 테이블의 열
Identifier
여러개의 집합을 가진 하나의 테이블에서 각각을 구분할 수 있는 논리적인 이름
PK(Primary Key): 현재테이블에서 행을 식별하는 식별자
FK(Foreign Key): 현재 테이블과 연관 있는 외부 테이블의 행을 식별
DBMS 요구사항
DB를 효율적이고 안전하게 사용
성능 관리: 데이터 분산, 캐시, 인텍싱
동시성: 트랜잭션, Lock, MVCC
보안: 접근 제어
무결성: 정규화, Sequence, FK
일관성: 중복 제어
장애 대응: 데이터 백업, 복구
서로 다른 데이터 간의 관계를 표현하는 관계 표현
편리한 인터페이스 제공
트랜잭션
데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하는 작업 단위
DBMS에서 병행 제어와 회복 작업 시 처리되는 작업 논리적 단위로 사용
ACID 특성
원자성(Atomicity): 트랜잭션의 연산은 모두 반영되거나 전혀 반영되지 않아야 한다
일관성(Consistency): 트랜잭션이 성공적으로 완료되면 일관성 있게 상태가 바뀌어야 한다
독립성(Isolation): 둘 이상의 트랜잭션이 동시에 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
영속성, 지속성(Durability): 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장이 나더라도 영구적으로 반영되어야 한다.
데이터 관리의 원칙
안전하게 / 접근이 용이하게 / 다수가 공유 가능하게 / 최소한의 비용으로 / 일관성을 가지고 / 손상되지 않게
Last updated