2020 공공 데이터 인턴

[2일차] 데이터 기초 1

빵으니 2020. 8. 19. 14:33

[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 시스템 개발 과정]

논리적 데이터 설계시 정규화 과정을 통해 ERDiagram이 생성됨


[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의 구조]

RowID 스캔 : 테이블 각각의 행 주소값 조회 / 샘플 테이블 스캔 : 테이블 일부 데이터 값만 조회 /인덱스 - 테이블 값을 빠르게 조회하기 위함

 

[테이블 생성]

- 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

- 테이블에 새로운 하나의 행을 삽입

- 한번에 하나씩의 행 삽입

where 조건절을 주지 않으면 전체 테이블의 행이 사라질 수 있으므로 작업 시 유의

 

[DDL]

unique의 대표적인 예시 - 주민등록번호 / FK : 참조 무결성 제약 조건
세 컬럼은 NOTNULL 아니므로 NULL 값 허용
롤백 안 된다 = 돌이킬 수 없다

 

[TCL]

- Transcation : 논리적으로 연관된 작업의 집합

- 트랜잭션은 단일 단위로 처리하는 일련의 SQL문

- 트랜잭션 제어문은 데이터베이스에서 DML 문에 의해 변경된 사항을 관리하고 이러한 명령문을 트랜잭션으로 그룹화하는데 사용

- 각 트랜잭션에서는 고유한 trasaction_id가 할당되고 각 트랜잭션은 SQL문을 그룹화하여 SQL문이 모두 commit되어 데이터베이스에 적용되거나 모두 rollback 되어 데이터베이스에서 실행 취소

 

Trascation 제어문

- 트랜잭션 제어문은 DML문에 의한 변경 사항을 관리하는 데 사용

- Commit

- Rollback

- Savepoint

트랜잭션 예시
savepoint : 트랜잭션 내 특정위치로 롤백하기 위한 제어문
롤백 후에도 노란 하이라이트 부분은 지워지지 않음

 

[SQL 처리 단계]


[Join 개념 및 종류]

Join

- 조인은 관계형 데이터베이스에서 가장 중요한 기능

- 조인은 집합간의 곱(Product of set)

- 관계형 데이터베이스에서는 서로 독립적인 데이터들간의 정보연결을 위해 조인을 이용. 필요 시 원하는 다양한 정보를 참조하고 창출

FK를 통해 두 테이블 연결
조건절에 FK 

 

[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

Countries table이 기준

 

Right Outer Join

departments 테이블이 기준

 

Full Outer Join

- 일치하는 행은 물론, 양쪽 테이블에서 일치하지 않는 행도 반환

 

Self Join

- 테이블 자체 조인

위 예시에서 사원 이름과 사원의 직속상사이름을 알고 싶으면 self join

 

Cross Join

- 일반적인 방법 X. 특수한 목적일 경우 사용

select 문에서 양 쪽 테이블 간의 관계가 규정되어있지 않음 -> 모든 유형의 데이터를 조합해서 추출

 

[Join 방식]

- 조인 방식은 두 행 소스 간의 관계를 정의

- 두 데이터 소스에서 데이터를 결합하는 방식

- 객체의 관련 방식을 정의하는 조인 술어를 통해 제어

 

Hash Join VS Nested Loop Join

 

Sort Merge Join

- 양쪽 테이블의 처리범위를 각자 액세스하여 정렬한 결과를 차례로 scan하면서 연결고리의 조건으로 merge해 가는 방식

 


[DB보안 및 사용자 계정관리]

Database 보안의 개념

- 저장된 데이터에 대한 인증, 기밀성, 무결성, 가용성 유지를 위한 관리적, 물리적, 기술적 보안 조치 및 활동

- 인증 : 정당한 사용자임을 확인하는 인증절차를 통하지 않고서는 DB접근 불가

- 가용성 : DB 시스템에 대한 부당한 서비스 거부를 감지하고 예방

- 무결성 : 타인의 정보를 임의 또는 불법적으로 변경하지 못하도록 방지

- 기밀성 : DB 정보의 부적절한 조회를 방지, 제지 및 감시

 

Database 보안 기법

가상테이블은 실제 물리적 저장 공간을 차지하지 않고, 사용자에게 단순 보여주기(View)기능만 제공

[접근통제]

- 자원에 대한 비인가된 접근을 감시하고 접근을 요구하는 이용자를 식별하고 보안정책에 근거하여 접근승인ㅇ르 하거나 거부 -> 불법적인 자원접근 및 파괴를 예방하는 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) : 한 사용자 또는 그룹에 선택한 개체에 대한 역할 (권한 집합)을 부여

 

권한

Grant 명령어 사용

* 최소 권한의 원칙

- 작업을 효율적으로 완료하는데 필요한 권한만 사용자에게 부여해야 함

 

[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]