[2일차] 데이터 기초 1
[Data의 개요 및 Database 개요]
DIKW : Data(데이터) / Information(정보) / Knowledge(지식) / Wisdom(지혜)
- 정보과학에서 데이터, 정보, 지식을 통해 최종적으로 지혜를 얻어내는 과정을 계층구조로 설명
DATA : 개별 데이터 자체로는 특별한 의미부여가 안 된 객관적 사실 (가공 전 순수한 수치)
Information : 데이터의 가공, 처리와 데이터간 연관관계 속에서 의미가 도출된 것
Knowledge : 상호 연결된 정보 패턴을 이해하여 이를 토대로 예측한 결과물. 정보를 바탕으로 의사결정에 활용하는 것
Wisdom : 지식의 축적과 아이디어가 결합된 창의적인 산물
Data의 분류
- 정형 데이터 : 간단한 자료구조 형식을 갖는 컨텐츠 (RDB, DW, CRM, ERP 등)
- 반정형 데이터 : 복잡한 자료구조 형식을 갖는 컨텐츠 (XML, email, EDI 등)
- 비정형 데이터 : 특정한 자료구조 형식을 갖추기 않는 컨텐츠 (GPS, SNS, 스트리밍, 센서 등)
DataBase
- 어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영데이터 집합
DataBase 구조
- 논리적 구조 : 사용자 관점에서 본 데이터의 개념적 구조 / 데이터의 논리적 배치
- 물리적 구조 : 저장 관점에서 본 데이터의 물리적 배치 / 저장 장치에 저장된 데이터의 실제 구조
스키마(Schema)
- 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합
- 데이터베이스를 구성하는 데이터 개체, 속성, 관계 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의 됨
스키마의 특징
- 데이터 사전에 저장되며, 다른 이름으로 메타데이터라고 함
데이터 딕셔너리의 개념
- 데이터 베이스에 저장되는 데이터에 관한 정보를 저장하는 곳. DB Core 정보
- 시스템 카탈로그라고도 함
스키마 3계층
외부 스키마 = 서브스키마 = 사용자 뷰(view)
- 사용자나 응용프로그래머의 입장에서 필요로하는 데이터베이스의 논리적 구조를 정의한 것
- 하나의 데이터베이스 시스템에는 여러개의 외부 스키마가 존재할 수 있으며, 하나의 외부 스키마를 여러 개의 응용 프로그램이나 사용자가 공용
- 일반 사용자는 질의어(SQL)를 사용하여 데이터베이스를 사용
개념 스키마 = 전체적인 뷰 ( DB입장에서의 스키마)
- 데이터베이스의 전체적인 논리적 구조로서, 모든 이용자가 필요로하는 데이터를 통합한 조직 전체의 데이터 베이스로 하나만 존재
내부 스키마
- 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 실제로 데이터베이스에 저장될 레코드의 물리적인 구조, 저장 데이터 표현방법, 내부 레코드의 물리적 순서
- 시스템 프로그래머나 시스템 설계자가 보는 관점
스키마 3계층 - 데이터 독립성
: 하위 단계의 데이터 논리적, 물리적 구조가 변경되어도 하위 단계에 영향을 미치지 않도록 구성하는 DB 특징
Database 사용자
1) 데이터베이스 관리자(DBA) : DB 시스템 운영 관리
* 데이터 아키텍트(Data Architect) : 데이터 관리 시스템을 위한 청사진 제시
2) 최종사용자(=일반사용자. End User) : DB에 접근하여 데이터 조작 (비즈니스에 대한 이해가 더 중요)
3) 응용 프로그래머 : 데이터 언어를 삽입하여 응용 프로그램을 작성
SQL (Database Language)
사용자가 데이터베이스를 구축하고 접근하기 위해 데이터베이스 관리 시스템과 통신하기 위한 수단
[DBMS 아키텍처와 구성요소]
DBMS : DataBase Management System
- 기존의 파일 시스템이 갖는 문제(데이터의 종속성, 중복성)를 해결하기 위해 만들어진, 데이터베이스 관리 소프트웨어
- 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성
RDBMS 특징
- 2차원 테이블로 표현
- 데이터 무결성(Data Integrity)을 보장해야 함
- 데이터 처리를 위해 SQL 사용
DBMS 기능
DBMS 종류
DBMS 장점
- 중복 데이터의 최소화
- 데이터의 공유 (한번 저장된 데이터를 여러 형태로 표현 가능)
- 데이터 일관성 유지 (중복저장 X -> 데이터 불일치나 모순성 해결)
- 데이터 무결성의 보장 (입력이나 갱신 시 다양한 무결성 처리를 자동적으로 검증)
- 사용의 편의성 증대
- 데이터 보안성 향상
[DBMS 아키텍처]
[DBMS 접속]
Session : 사용자 프로세스를 통해 사용자와 인스턴스 간의 특정 연결
Connection : 사용자 프로세스와 인스턴스 간의 통신
[DB 시스템 개발 과정]
[Database 설계]
정보의 관리
[관계형 데이터베이스]
- 데이터를 2차원 테이블에 저장하고 사용
- 칼럼의 순서와 로우의 순서에 무관
- 구조와 뷰를 독립
- 관계 유지를 위한 정보만을 중복 생성
- 다른 테이블에 있는 같은 데이터들 사이의 관계 유지
[관계형 데이터베이스의 특징]
1. 데이터 무결성(Data Integrity)
- 데이터가 결점이나 손상이 없이 정확하고 완전한 상태에 있는 것을 의미 (Complete, perfect, pure 등)
- 무결성 유형
1) 실체 무결성 : 고유한 객체를 식별할 수 있는 속성(하나 혹은 조합해서)이 각각의 Row(행)에 반드시 하나 이상 존재
2) 참조 무결성 : 자식은 반드시 부모의 고유한 식별 값을 가져야 하고 부모의 식별값이 없는 자식은 존재해서도 안 됨 ex) 영업부서에 속한 김대리
3) 영역 무결성 : 테이블에 저장되는 데이터 타입, 길이는 허용값 범위내에서 입력이 허용 됨
[데이터 모델링]
데이터 모델
- 현실 세계를 데이터베이스로 표현하는 중간과정으로서, 데이터베이스 설계 과정에서 컴퓨터에 저장할 데이터의 구조를 논리적으로 표현하기 위해 사용하는 도구
데이터 모델링
- 시스템을 현재 또는 원하는 모습으로 가시화하도록 도와줌
- 시스템의 구조(data)와 업무 프로세스(Process)를 명세화
- 시스템을 구축하는 기본 틀을 제공
- 보고싶은 것만 볼 수 있으므로 한 영역에 집중하기 위해 다른 영역의 세부사항은 숨기는 다양한 관점의 뷰를 제공
- 특정 목표에 따라 다양한 상세수준을 제공
모델링 표기법(Notation)
- ERD를 볼 때 사용
기수성 - 양쪽 테이블의 관계를 지정할때 1:1의 관계인지, 1:N의 관계인지 등을 표시
선택성 - 필수냐 아니냐를 표시
[데이터 모델링 3요소]
- 엔터티 / 관계 / 속성
- 엔터티 : 물리적 설계과정을 거치면 '테이블'이 됨 / 데이터베이스 내에 나타내는 구별할 수 있는 객체
- 속성 : 물리적 설계과정을 거치면 '컬럼'이 됨 / 개체 또는 관계의 기초적인 성질을 나타냄 / entity를 기술하는 구체적인 정보! 엔터티를 식별하거나 계량화시키거나 상태를 나타낼 수 있는 모든 항목!
- 관계 : 엔터티와 엔터티의 관계는 'FK'로 정의 / entity 간의 관계를 나타내는 것으로 업무에서 요구되는 정보들을 연결하는 업무규칙을 의미
[데이터 모델링 프로세스]
▶업무요구사항 수집 - 각각의 현업에서 발생하는 필요한 데이터를 활용하겠다는 요구
▶요구분석 - 요구분석 명세서 도출
▶개념적 설계 - 엔터티간의 관계 도출 -> 결과 : 개념적 스키마 (추상적인 ERD 도출)
▶논리적 설계 - 구체적인 ERD 도출 / 정규화, 비정규화 수행 / 결과 : 논리적 스키마 (테이블, 뷰 등 물리적 시스템에서 구현해야 할 오브젝트 선택)
▶스키마 정제
▶물리적 설계 - 실제 테이블 생성, 인덱스 생성 등을 위한 SQL문 작성 / 변경사항 발생시 논리적 설계 과정으로 다시 돌아간 뒤 반복 작업 / 결과 : 물리적 스키마
▶응용 및 보안 설계 - 사용 DBMS에 따른 상황 고려 필요
[전사적 아키텍처 구성]
데이터 아키텍처
- 데이터를 전사적인 관점에서 조망하고 데이터를 체계적, 구조적으로 관리하고 설계하는 과정
[데이터 모델링 정리]
[데이터베이스 시스템 개발]
[Table 및 Index 구조]
물리적 DB 설계
- 논리적 데이터베이스 설계를 거치고 나면 관계형 데이터 베이스를 생성하기 위한 테이블 설계 도출
관계형 데이터베이스
- 관계형 모델을 기반으로 만들어진 데이터 베이스
- 관계형 데이터베이스는 정보를 저장하기 위해 릴레이션(relation) 즉, 2차원 테이블을 사용
[Table의 구조]
[테이블 생성]
- SQL문을 사용하여 데이터베이스 설계 단계에서 생성한 관계형 테이블 설계를 실제로 구현
- CREAT TABLE
[테이블의 구조]
- 테이블은 RDBMS의 가장 기본적인 저장구조로서 하나 이상의 열(column)과 0개 이상의 행(row)으로 구성
[테이블의 구성요소]
[관계형 데이터베이스의 속성]
- 관계형 데이터 베이스에서 사용자는 데이터에 접근하기 위해 데이터의 물리적인 주소를 알 필요가 없음(데이터의 독립성, 물리적인 독립성)
- 사용자는 관계형 데이터베이스 언어인 SQL을 사용하여 데이터를 요청
[관계대수]
- 관계대수 : 관계형 데이터베이스에서 사용되는 연산
집합연산
1. 합집합 ( union all, union )
- 양 쪽 테이블의 모든 행 반환
2. 교집합 ( intersect )
- 양 쪽 테이블의 공통된 행만 반환
3. 차집합 ( minus )
- 첫 번째 집합에만 있고 두 번째 집합에는 없는 행 반환
4. 카티션 프러덕트 ( cartesian product )
- 한 릴레이션에 속한 모든 각 행들을 다른 릴레이션의 모든 행과 연결시킨 결과행으로 구성된 릴레이션을 반환
관계연산
1. Select
- 릴레이션에서 주어진 조건을 만족하는 행들을 선택하는 연산
- 전체 릴레이션 중 수평적 부분집합을 가져옴
- 관계에서 지정된 행을 추출
- Where로 조건 지정
2. Project
- 릴레이션에서 특정 열을 선택하는 연산
- 수직적 부분집합
- 관계에서 특정 열 추출
3. Join
- 두 개의 릴레이션에서 특정 열 값 감의 비교 조건을 만족하는 행들을 연결하여 결과 릴레이션을 만들어내는 연산
- 공통 열의 공통 값을 기반으로 두 관계를 결합
[Index 구조]
- 인덱스 : 어떤 데이터가 HDD(하드디스크)의 어디에 있는지 위치 정보를 가진 주소록
- 인덱스는 테이블 데이터와 논리적 및 물리적으로 독립적인 선택적 데이터베이스 객체
- 인덱스는 테이블 데이터를 빠르게 조회하기 위해 사용되는 트리구조
- 인덱스를 사용한다고 해서 항상 빠른 검색이 되는 건 아니므로 기회비용 고려
인덱스 특징
- 데이터가 정렬(내림차순, 오름차순)되어 저장
- key 컬럼과 ROWID로 이루어짐 (key : 인덱스를 생성하기 위해 지정된 테이블 칼럼)
- 시스템은 관련 데이터가 변경도리 때 자동으로 인덱스를 유지, 관리
인덱스 유형 - B*-tree 인덱스
- 가장 일반적인 인덱스
- 이진 트리와 구조가 비슷해 이를 사용하면 키를 통해 개별행 또는 행 범위에 빨리 액세스
- Binary가 아니라 Balance의 'B'
인덱스 유형 - Bitmap 인덱스
- 트리구조이나 단일 인덱스 항목이 비트맵을 사용하여 동시에 여러개의 행을 가리킴
- 각 베트맵 헤더에는 시작 및 끝 ROWID가 저장
- 행 값이 비트맵 조건과 일치하면 저장된 값은 1이고 아니면 0
- 중복값이 많은 경우 사용
Index 조회(scan)
- 인덱스 내의 하나 이상의 열 값을 기준으로 인덱스의 데이터를 검색
- 인덱스 스캔 유형 : Unique, Range(내림차순), Skip, Full 및 fast full, Index join
1. Unique
- SQL 문에 Unique 또는 PRIMARY KEY 제약 조건이 포함된 경우
- 하나의 값만 반환
2. Range(오름차순)
- 선택절 데이터에 엑세스하기 위한 일반적인 작업
- 데이터는 오름차순 인덱스 열로 반환
- 동일한 값을 가진 여러 행은 ROWID에 따라 오름차순으로 정렬
(내림차순)
- 역순으로 인덱스를 스캔
- 결과는 역순으로 출력
3. Full
- 인덱스 모든 블록을 순차적으로 스캔
- 데이터가 인덱스 키 순으로 지정되기 때문에 정렬 작업을 제거하는데 사용
[SQL 종류와 작동원리]
SQL (Structured Query Language)
- ANSI (미국 표준협회)에서 제정한 관계형 데이터베이스를 위한 표준언어
- 프로그래밍 언어X, 데이터를 정의, 검색, 조작하기 위한 기능을 제공하는 명령문
- SQL문은 세미콜론 (;)에 의해 종료
- 대소문자 구별 X
SQL 유형
1. 쿼리문(select 문) : 테이블의 데이터를 조회하거나 검색하기 위한 명령어 (하나 이상의 테이블에서 행 검색)
2. DML문 :기존 데이터를 변경하거나 새로운 데이터 입력하기 위한 명령어 (기존 스키마 객체에서 데이터 조작)
3. DDL문 : 객체 구조의 변경을 하기 위해 create, alter, drop 명령어 사용 (테이블 조작)
4. TCL문 (트랜잭션 제어문) : 데이터의 무결성을 제공하기 위해 사용되는 트랜잭션을 제어하기 위해 Commit, Rollback, Savepoint를 지원 (DML문을 통한 변경 관리)
[Query - Select]
- 데이터 조회를 위한 기능
[DML]
1. Insert
- 테이블에 새로운 하나의 행을 삽입
- 한번에 하나씩의 행 삽입
[DDL]
[TCL]
- Transcation : 논리적으로 연관된 작업의 집합
- 트랜잭션은 단일 단위로 처리하는 일련의 SQL문
- 트랜잭션 제어문은 데이터베이스에서 DML 문에 의해 변경된 사항을 관리하고 이러한 명령문을 트랜잭션으로 그룹화하는데 사용
- 각 트랜잭션에서는 고유한 trasaction_id가 할당되고 각 트랜잭션은 SQL문을 그룹화하여 SQL문이 모두 commit되어 데이터베이스에 적용되거나 모두 rollback 되어 데이터베이스에서 실행 취소
Trascation 제어문
- 트랜잭션 제어문은 DML문에 의한 변경 사항을 관리하는 데 사용
- Commit
- Rollback
- Savepoint
[SQL 처리 단계]
[Join 개념 및 종류]
Join
- 조인은 관계형 데이터베이스에서 가장 중요한 기능
- 조인은 집합간의 곱(Product of set)
- 관계형 데이터베이스에서는 서로 독립적인 데이터들간의 정보연결을 위해 조인을 이용. 필요 시 원하는 다양한 정보를 참조하고 창출
[Join의 유형]
Natural Join
- 두 테이블에서 데이터 유형과 이름이 일치하는 열을 기반으로 자동으로 테이블 조인
- 두 테이블의 이름과 데이터 유형이 동일한 열에서만 발생
- 열 이름은 같지만 데이터 유형이 다를경우 오류 발생
Equi Join
- 등호 연산자가 포함된 조인 조건이 있는 조인
- 지정된 열에 동등한 값이 있는 행을 결합
- Natural Join은 Equi Join의 형태
- 명시적으로 Join 키워드 사용 (where 조건절로 연결해도 무방)
Non-equijoin
- 양쪽 테이블에 join을 사용할때 equal 조건이 아닌 범위 조건을 이용해 join
Outer Join
- 매칭 된 값 외에도 기존의 값을 함께 출력
- 한쪽 집합(테이블)이 기준이 되어 다른 쪽 집합(테이블)의 연결되는 조건에 상관없이 기준이 되는 집합(테이블)은 무조건 추출되는 조인
- Left Outer Join / Right Outer Join / Full Outer join
Left Outer Join
Right Outer Join
Full Outer Join
- 일치하는 행은 물론, 양쪽 테이블에서 일치하지 않는 행도 반환
Self Join
- 테이블 자체 조인
Cross Join
- 일반적인 방법 X. 특수한 목적일 경우 사용
[Join 방식]
- 조인 방식은 두 행 소스 간의 관계를 정의
- 두 데이터 소스에서 데이터를 결합하는 방식
- 객체의 관련 방식을 정의하는 조인 술어를 통해 제어
Hash Join VS Nested Loop Join
Sort Merge Join
- 양쪽 테이블의 처리범위를 각자 액세스하여 정렬한 결과를 차례로 scan하면서 연결고리의 조건으로 merge해 가는 방식
[DB보안 및 사용자 계정관리]
Database 보안의 개념
- 저장된 데이터에 대한 인증, 기밀성, 무결성, 가용성 유지를 위한 관리적, 물리적, 기술적 보안 조치 및 활동
- 인증 : 정당한 사용자임을 확인하는 인증절차를 통하지 않고서는 DB접근 불가
- 가용성 : DB 시스템에 대한 부당한 서비스 거부를 감지하고 예방
- 무결성 : 타인의 정보를 임의 또는 불법적으로 변경하지 못하도록 방지
- 기밀성 : DB 정보의 부적절한 조회를 방지, 제지 및 감시
Database 보안 기법
[접근통제]
- 자원에 대한 비인가된 접근을 감시하고 접근을 요구하는 이용자를 식별하고 보안정책에 근거하여 접근승인ㅇ르 하거나 거부 -> 불법적인 자원접근 및 파괴를 예방하는 HW, SW 및 행정적인 관리
- 접근 제어 상황 : 인증 / 허가 / 감사
[MAC (Mandatory Access Control)]
- 주체는 인가 레이블, 객체는 분류 등급(민감도 레이블)에 의해 접근 허가 결정
- 관리자에 의한 중앙관리
[DAC (Discretionary Access Control)]
- 보안관리자 혹은 객체소유자가 '요청주체'의 신원에 따라 접근권한 결정
- ex) 인사 DB 접근권한은 인재개발팀에서 결정하며, '인사관련부서'는 read권한을 / 나머지부서는 접근을 불허
[RBAC (Role-based Access Control)]
- 가장 일반적으로 사용되고 있는 접근제어 모델
- 사용자에게 부여된 역할에 근거하여 접근통제를 실시하는 방법
- 기존 접근제어 모델의 불완전함에서 출발 (MAC :등급설정이 모호한 경우 적용불가 / DAC :권한 표현, 관리성의 개선 필요)
RBAC의 특성
- 관리 효율성, 상속 가능, 최소 Privilege 구현가능
- 임무 분리 : 상호 감시 가능
- Data 추상화 : OS RWED외 추상회 가능(입금, 출금 등)
- 객체 분류 : 수행 업무에 따라 사용자 분류, 권한제한 구현 가능
- 상용 SW 거의 대부분에 활용되고 있음
- DBMS, OS, CORBA에 활용
- Web 기반 Application에도 활발하게 사용되고 있음
[Database 계정 관리]
- 접근 제어 시스템을 사용하여 사용자 권한을 정의
- 권한 (Privilege) : 수행할 수 있는 작업
- 개체 (Object) : 작업의 대상(table, index 등)
- 사용자 또는 그룹 (User / User group) : 작업을 수행할 수 있는 사람 표시
- 역할 (Role) : 일련의 권한, 권한 집합
- 허가 (Permission) : 한 사용자 또는 그룹에 선택한 개체에 대한 역할 (권한 집합)을 부여
권한
* 최소 권한의 원칙
- 작업을 효율적으로 완료하는데 필요한 권한만 사용자에게 부여해야 함
[Database 암호화]
API 방식
- 애플리케이션 레벨에서 암호모듈(API)를 적용하는 애플리케이션 수정 방식
- DB단의 추가 모듈 설치가 불필요하며, DBMS에 종속되지 않는다는 장점
Plug-in 방식
- DB레벨의 확장성 프로시져 기능을 이용하여 암호화 관련된 보안정책 DB와 암/복호화 처리를 위한 서버 엔진을 DBMS내에 plug-in
하이브리드 방식
- API 와 Plug-in 방식의 결합. 혹은 Plug-in 방식에 추가적으로 SQL문에 대한 최적화 대행해주는 어플라이언스를 제공하는 방식
[RDBMS와 NoSQL]
빅데이터 특징
- 3V : Volume, Variety, Velocity
- 크기 : 빅데이터는 최소 100테라바이트 이상 페타바이트 수준의 데이터
- 다양성 : 비정형 데이터 증가
- 속도 : IoT의 스트리밍 정보 등 실시간 데이터의 생성과 이동(유통) 속도 증가
[NoSQL]
- Not Only SQL
- 기존의 RDBMS를 대체하지 않음. 새로운형태의 데이터(빅데이터)를 저장하기 위함
- 정형데이터를 RDBMS로 저장했다면, 비정형데이터 처리를 위해 NoSQL을 활용
NoSQL 특징
[CAP 이론]
- 일관성 (Consistency) : 노드들은 같은 시간에 동일한 항목에 대하여 같은 내용의 데이터를 사용자에게 보여줌
- 가용성 (Availibility) : 클러스터링 된 노드 중 하나 이상의 노드가 실패하더라도 정상적으로 요청 처리 기능 제공
- 부분결함 (Partition Tolerance) : 클러스터링 노드 간에 통신하는 네트워크가 장애가 나서 노드 간 메시지 손실이 있어도 정상적으로 동작 (물리적인 네트워크 분산 환경에서 시스템이 잘 동작함)
[NoSQL 종류]
Key/Value Store
- 모든 NoSQL의 가장 기초적 모델
- 메모리 기반에서 성능을 우선시하는 시스템과 빅데이터를 저장, 처리할 수 있는 방식으로 구분
Column Family Store
- row 기반의 기존 RDBMS와는 다르게 데이터를 column 기준으로 저장
Document Store
- 기본적으로 key/value store 구조
- 저장되는 Value의 데이터 타입이 document
- 주로 Json 또는 Xml 형태의 document와 같은 반정형 데이터 저장을 위해 설계된 모델
Graph Store
- 그래프로 데이터를 표현하는 DB
- 시맨틱웹과 온톨로지 분야에서 활용되고 발전 됨. 특화된 DB
[RDBMS와 NoSQL]
RDBMS의 속성인 ACID와 / NoSQL의 속성인 BASE의 비교
[RDBMS VS NoSQL]