본문 바로가기

과목/빅데이터

NoSQL Databases

관계형 데이터 베이스와의 차이점?

NoSQL 데이터 베이스의 키:값, document, column, graph


DB란 무엇인가? 체계화된 데이터들의 모임, 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음.

DBMS란? 다수의 사용자들이 DB의 데이터를 접근할 수 있도록 해주는 SW 도구의 집합. 사용자의 요구를 처리하고 적절히 응답하여 데이터를 사용할 수 있게 해준다.

DBMS의 장점? 자료와의 관계성을 정의하기 때문에 통합성이 증진된다. 데이터 접근성이 용이하다. 데이터 통제가 강화된다. 보안이 강화된다.

DBMS의 종류에는 

  • IMS, CODASYL DB, DB2, ORACLE, INFORMIX, SYBASE, INGRES, MS-SQL, Objectivity, O2, Versanat, Ontos, Gemstone, Unisql, Object Store, Starburst, Postgres, Tibero, MySQL

이 있다.

Data Model에는 계층형, 네트워크형, 관계형, 객체-관계형, 객체형이 있다. mysql, oracle, mssql은 관계형이다.

데이터베이스 스키마란? 자료구조, 자료의 표현방법, 자료 간의 관계를 형식 언어로 정의한 구조이다. 사용자가 데이터를 저장, 조회, 삭제, 변경할 때 DBMS는 스키마를 참조하여 명령을 수행한다.

Relationship? 엔티티 간의 관계를 의미한다. 학생은 적어도 하나의 학과에 소속된다라는 문장에서 소속된다는 관계라고 볼 수 있다.

ACID? Atomicity(원자성) Consistancy(일관성) Isolation(고립성) Durability(지속성) 의 약자다. 트랜잭션이 안전하게 수행되는 것을 보장하기 위한 성질이다. 은행을 예로 들면 A가 B에게 100원을 송금한다고 하면 A의 계좌에서 100원이 감소되고 B의 계좌에서 100원이 증가되어야 한다. A의 계좌에서 100원이 감소했는데 B에는 변화가 없다면 안된다.

원자성 : 실행이 될거면 되고 아니면 안되는 거다. All or nothing.

일관성 : 트랜잭션이 성공하면 일관성 있는 데이터베이스 상태를 유지.

고립성 : 트랜잭션 수행 시 다른 트랜잭션의 개입이 없어야 한다. 독립성을 보장해줘야 한다.

지속성 : 성공적으로 수행된 트랜잭션은 영원히 반영되어야 한다. 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다.

ACID를 보장하기 위해 lock이라는 것이 있는데 이게 너무 많다면 동시 작업이 어렵고 성능이 저하된다.


관계형 데이터베이스는 연관 데이터를 여러 테이블에 저장할 수 있고, 테이블 간의 관계로 연결되어 있다.


NoSQL이란? 데이터베이스 모델의 특정 유형 또는 DBMS를 느슨하게 참조하는 것이다. 관계형 데이터베이스보다 덜 제한적이다. 단순 검색, 추가 작업을 위한 매우 최적화된 키 값 저장 공간이다. 빅데이터와 실시간 웹 어플리케이션의 상업적 이용에 널리 쓰인다. Not only SQL의 약자인데 SQL뿐만 아니라는 의미이다. SQL(Structured English Query Language) 구조화된 영어 질의어. NoSQL은 관계적인 게 없기 때문에 NoREL이라고 부르는 게 더 적합하다고 한다.


NoSQL 데이터베이스의 특징

관계형이 아님, 오픈 소스, 스키마 없음, 수평적 확장 가능, ACID원리 결여, 비표준 질의어


키 값 저장 데이터베이스?

NoSQL은 데이터 저장을 위해 간단한 키 값 방법을 사용한다.

키 값으로 이루어진 짝의 모음이다. 데이터를 간단하게 저장하고 확장하기 쉽다.

키 값은 많은 프로그래밍 언어에 있는 개념이다. 사전, 해쉬, 연관 배열 등


키 값의 예

Key              Value

police_call       112


Key              Value

class_1      Jimy, James, Tom


Document Store Database?

각 행과 연관된 데이터들을 하나의 document에 저장. XMl, JSON을 사용


JSON 형식으로 표현된 하나의 document를 관계형 데이터베이스로 표현하면 다음과 같다.



Document Store vs Relational Database

Tables 

Document 

Schemas 

Documents 

Scalability not good

Horizontally

Data associated with a record

Datas in the same document



Column Store Database?

열 지향 모델을 사용해서 데이터를 저장하는 데이터베이스 유형

각 행의 열은 해당 행에 포함된다.

3명의 사람마다 하나의 document로 표현된다. 그 안에 있는 열은 테이블의 애트리뷰트와 같은 역할을 한다. document들이 모여 keyspace를 이룬다.




column family는 여러 행들로 구성된다.


Row Key : 각 행은 유일한 키를 가진다. 그 행을 식별하기 위해.

Column : 각 열은 이름과 값, timestamp를 포함한다.

Name : 키 값 짝의 키를 의미

Value : 키 값 짝의 값을 의미

Timestamp : 데이터가 삽입된 날짜와 시간을 제공한다.


그래프 데이터베이스?

그래프적인 모델으로 표현하고 데이터를 저장하는 데이터베이스

관계형 모델의 대안이다. 관계형은 데이터가 미리 정의된 스키마에 따라 테이블에 엄격한 구조로 저장된다.

그래프에서는 미리 정의된 스키마는 없다.

그래프 데이터베이스는 연결된 데이터로 작업할 때 최상의 선택이다.


원들은 노드다. 데이터를 포함한다.

화살표들은 노드들 간의 관계를 표현한다.



NoSQL의 단점

덜 성숙함, 지원이 덜함, 비즈니스 지능과 분석에 쓰임(?), 고급 전문 기술이 없음, 보안

'과목 > 빅데이터' 카테고리의 다른 글

MongoDB 개요  (0) 2018.04.27
MongoDB installation 몽고디비 설치  (0) 2018.04.21
Aggregation  (0) 2018.04.20
Indexing  (0) 2018.04.20
MongoDB 개요 및 간단 설명  (0) 2018.04.20