본문 바로가기
SQL/NoSQL

[데이터베이스/DB] NoSQL이란? (1) : 개념 및 사용 목적, RDBMS와의 차이점

by newstellar 2021. 9. 1.
반응형
 

[데이터베이스 DB] MySQL 기본 : DB 및 user 생성, 권한부여

[Database] 1. MySQL db 및 user 생성, 그리고 user에게 권한 주기 1. mysql server mysql.server start 명령어를 통해 mysql server부터 실행시키자. 위의 명령어를 입력하지 않으면 다음과 같은 친숙한 에러가..

newstellar.tistory.com

 

학습목표

1. 빅데이터 처리를 위한 Hadoop 플랫폼이란?

2. NoSQL DB의 개념과 그 사용목적은 무엇인가?
3. 기존 RDBMS와의 차이점은?


 

 

NoSQL의 탄생

 

1. 데이터 홍수 시대

  • GPS, SNS, 이미지, 웹페이지 로그, 검색어 등 다양한 소스로부터 빠른 속도로 반정형(Semi-structured)/비정형(Unstructured) 데이터가 생성되고 있다.

 

  • 기존의 RDBMS(관계형 데이터베이스)에서 처리할 수 없는 경우가 많아지면서 대량의 데이터를 어떤 효율적인 방식으로 수집/저장/처리할 것이고, 얼만큼의 저비용(low cost)을 달성할 수 있는지가 과제로 떠올랐다.

 

  • 기업의 경쟁력은 HW에서 SW로, 다시 SW에서 Data로 이동하고 있기 때문에 데이터 저장 비용의 감소와 Cloud 기술의 도입을 고려하는 추세다.

 


2. Hadoop Introduction

Core Hadoop

  • 데이터가 시스템에 처음 저장될 때 노드에 데이터를 분배하자는 아이디어에서 시작되었다. 분산된 서버의 CPU 및 Memory 자원을 활용한 분산처리(YARN)가 Hadoop의 핵심이다.

 

  • 개별 노드는 해당 노드의 로컬 데이터를 처리하는 프로그램을 실행하고, 네트워크를 통한 데이터 전송을 최소화한다.

 

  • DB의 물리적 가용성을 높이는 Scale-up 방식보다는 논리적으로 확장시키는, 즉 여러 DB로 병렬 처리하는 Scale-out 방식으로의 전환이 맞물리면서 Hadoop 파일 시스템(HDFS) 개념을 탄생시켰다.
    • HDFS : 큰 사이즈 파일 처리에 적합한 구조로서 페타바이트 규모로 데이터를 처리하며 단일 장애(SPOF) 없는 고가용성을 지원

 

Hadoop Ecosystem

  • 여러 데이터를 저장하고 실행하며 처리할 수 있는 Spark, HBase, hive가 있다. Hadoop을 사용하기 쉽게, 기능을 확장하는 오픈 소스들로 구성되어 있다.

 

  • 예시 :
    • Sqoop & Flume & Kafka : 외부 시스템에서 데이터를 수집하는 도구로, RDBMS에 보관되거나 생성되는 데이터를 Hadoop에 저장

    • Hive & Impala : SQL과 유사한 언어를 사용하여 빅데이터 처리

    • Spark : MapReduce의 대안으로, in-memory 방식을 통해 스트리밍 데이터를 처리하기에 좋음

 


 

3. RDBMS -> NoSQL

NoSQL이란?

  • "No SQL", "Not only SQL", "Non-relational Operational SQL" 등으로 해석해볼 수 있는 NoSQL은 1998년 논문에서 표준 SQL 인터페이스를 지원하지 않는 RDB로 처음 소개되었다. 2009년 Johan Oskarsson의 오픈 소스 기반의 분산 DB에서 사용되었다. 관계형 DB를 보완하며, 정형/반정형/비정형 데이터 모두를 저장하고 처리할 수 있는 유연한 DBMS다.

 

  • 특징
    • 기본적으로는 거대한 serialized object 저장소

    • Join 연산을 지원하지 않는 등 복잡한 질의는 X

    • 정규화를 하지 않아 Schema에 유연하게 대응

    • 즉시 배포가 가능한 cloud-scale 설계

    • ACID 원칙 고수 X

  Relational Database NoSQL
데이터 저장 행-열의 관계형 모델로 저장 다양한 모델 : Document, Key-value, Graph, ...
Schema - 각 레코드는 고정된 스키마를 따름
- 칼럼들을 미리 정의해야 함
- 빈 field에 Null 값이 입력됨
- 스키마는 변경이 어렵고, 변경 시 비용이 많이 발생함
- 가변적인 스키마
- 데이터 입력시 실시간으로 변경
- 빈 field는 저장 공간을 갖지 않음
확장성 - Scale-up
- 데이터 확장 시 더 크고 비싼 서버가 필요함
- Scale-out
- 데이터 확장 시 일반적인 서버 수의 확대로 가능
ACID Atomicity / Consistency / Isolation / Durability 호환 성능과 확장성을 위해 ACID 원칙 희생
데이터 type Structured Data Structured / Semi-structured / Unstructured Data
예시 MySQL, PostgreSQL, MSSQL HBase, Cassandra, MongoDB

 

 

DB 패러다임의 전환

  • 관계형 DB는 테이블 관계를 통해 데이터 저장 및 검색이 가능하고 대표적인 DB로 MySQL, Oracle, MSSQL 등이 있다. NoSQL에 비해 관계형 DB가 갖는 장점으로는 데이터의 정규화(Normalization)와 무결성을 포함한 ACID 원칙을 잘 지킨다는 것이다.

 

  • NoSQL은 복제가 간편하며 API를 지원해주고, 반정형 및 비정형 데이터를 포함한 빅데이터 및 실시간 시스템에 적합하다. 유연하게 스키마를 허용하는 등 다양한 데이터 구조를 지원하고, 선형적으로 확장할 수 있는 특징을 띠기 때문에 성능과 확장성을 위해 ACID 원칙을 희생한다. 다만 DB 종류에 따라 관리 방식이 제각각이고, 분석 및 BI 도구의 부족을 단점으로 꼽을 수 있다. 대표적으로 HBase, Cassandra, MongoDB가 있는데, 추후 포스팅에서 위 세 DB에 대해 살펴보도록 하자.

 

  • 엄청난 데이터 크기와 대규모 Query를 처리할 수 있는 NoSQL로의 전환이 시작되었다. 여기서의 핵심은 파티션 허용(partition-tolerance)인데, 이를 위해서 가용성 또는 일관성을 포기해야 했다.

 

 

CAP Theorem

  • CAP Theorem : 어떠한 분산 시스템도 일관성(Consistency) / 가용성(Availability) / 분할 허용(Partition tolerance) 세 가지 속성을 동시에 지원하지 못한다는 이론.
    • 일관성 : 모든 노드들은 같은 시간에 동일한 항목에 대하여 같은 내용의 데이터를 제공한다.

    • 가용성 : 모든 클라이언트는 항상 Read / Write 연산이 가능하다.

    • 분할 허용 : 시스템은 물리적 네트워크 분할에도 동작한다. (메시지 전달 실패 또는 시스템 일부가 고장나더라도)

 

  • Case
    • CP / A : 일관성 및 분할 허용 보장 (가용성 포기)
      ex. MongoDB, HBase, Redis

    • AP / C : 가용성 및 분할 허용 보장 (일관성 포기)
      ex. Cassandra, CouchDB

 

 

NoSQL의 종류

  • Key-Value Store
    • 데이터를 key - value 형태의 hash 테이블로 저장하며, JSON, BLOB, 문자열 등으로 값을 저장한다.

    • Unique Key에 하나의 Value가 1:1 매핑되는 구조

    • ex. DynamoDB, Redis, Riak

 

  • Column Store
    • Google의 Big Table 기반으로, 데이터를 열에서 쉽게 처리할 수 있어 집계 Query(SUM, COUNT, AVG, MIN 등)에 적합함

    • ex. HBase, Cassandra, Big Table

 

  • Document(XML/Object) Store
    • key - value store의 확장된 형태로, 복잡한 query에는 부적합하다.

    • value에 Document(XML, JSON)을 저장하는 구조로서 블로그 플랫폼, 실시간 분석, CMS 시스템에 적합하다.

    • ex. MongoDB, CouchDB, ElasticSearch

 

  • Graph Store
    • Graph 구조에 node, edge 데이터 속성을 저장하며, SNS와 공간 데이터에 주로 사용된다.

    • Neo4j, OrientDB

 

Data Model 성능 확장성 유연성 복잡성 기능성
Key - Value Store High High High None Variable(None)
Column Store High High Moderate Low Minimal
Document Store High Variable(High High Low Variable(Low)
Graph Store variable variable High High Variable(None)
Relational DB variable variable Low Moderate Variable(None)

 

 

 

 

 

[데이터베이스 DB] NoSQL이란? (2-1) : HBase의 개념/특징/아키텍처

2021.09.01 - [SQL/NoSQL] - NoSQL이란? (1) : 개념 및 사용 목적, RDBMS와의 차이점 지난 포스팅에서는 NoSQL의 개념과 탄생 배경, 그리고 RDBMS와의 차이점을 알아보았다. 오늘은 Apache에서 운영하는 HBase에..

newstellar.tistory.com

 


참고문헌
- mySUNI : NoSQL 이해와 활용 (정진석 강사님)
반응형

댓글