RDBMS 와 NoSQL

leephoter·2022년 10월 18일
0

CS

목록 보기
2/2

DB

DB(Database) 란 일반적으로 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 또는 데이터의 체계적인 집합이다. 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리하는 데이터의 집합이다.

DBMS

DBMS란(Database Management System) 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보(데이터베이스)를 관리해 주는 소프트웨어이다.

SQL

SQL(Structured Query Language) 이란 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 프로그래밍 언어이다. 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 할 수 있다.

RDBMS

R은(Relational)의 약자로 RDBMS는 관계형 데이터베이스 관리 시스템을 의미한다. 기존의 RDBMS에서의 저장 방식은 SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장하여야 한다. 이름과 같이 RDBMS는 RDB를 관리하는 시스템이며 RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다.
관계형 데이터베이스(RDMBS)에서는 관계를 나타내기 위해 외래 키(foreign key)라는 것을 사용한다.
이러한 테이블간 관계에서 외래 키를 이용한 테이블 간 Join이 가능하다는 게 RDBMS의 가장 큰 특징이다.

특징

  • 2차원 데이터로 표현된다 (Row/Column)
  • 상호관련성을 가진 테이블의 집합으로 구성된다
  • 테이블 사이의 관계를 외래키로 나타낸다
  • 스키마 변경이 어렵다
  • SQL 을 사용해 데이터를 질의한다
  • ACID 성질을 갖는다 (Atomicity, Consistency, Isolation, Durability)(원자성, 일관성, 독립성, 지속성)

NoSQL

RDBMS 방식으로는 더 이상 처리할 수 없을 만큼의 복잡하고 큰 데이터들의 등장으로, NoSQL 에 대한 필요성이 부각되었다.
NoSQL(Not Only SQL)는 데이터, 테이블 간의 관계를 정의하지 않는다. 데이터 테이블은 그냥 하나의 테이블이며 일반적으로 테이블 간 Join도 불가능하다. 정ㅇ해진 스키마가 없어서 자유롭게 데이터를 저장할 수 있다.
Key 값만 가지고 데이터에 대한 I/O(입출력)을 수행할 수 있다.
이 다양한 형태의 저장기술은 RDBMS 스키마에 맞추어 데이터를 관리해야 된다는 한계를 극복하고 수평적 확장성(Scale-out)을 쉽게 할 수 있다는 장점을 가지고 있습니다.

특징

  • 다양한 방식으로 데이터를 표현한다
  • 낮은 비용, 오픈소스도 많다

비교

RDBMS 장단점

장점

  • 데이터의 분류, 정렬, 탐색 속도가 빠르다
  • SQL 이라는 구조화 된 질의를 통해 데이터를 다룰 수 있다
  • 작업의 완전성을 보장한다
  • 데이터의 UPDATE가 빠르다

단점

  • 스키마 규격에 맞춰서 데이터를 다뤄야한다
  • 데이터 처리에 대한 부하 발생 시 처리가 어렵다

NoSQL 장단점

장점

  • 데이터간 관계를 정의하지 않는다
  • RDBMS 보다 복잡도가 떨어져, 대용량의 데이터를 저장/관리할 수 있다
  • 테이블에 스키마가 정해져있지 않아 데이터 저장이 비교적 자유롭다
  • 많은 양의 데이터를 저장/처리할 수 있다

단점

  • Key값에 대한 I/O(입출력)만 지원한다
  • 스키마가 정해져 있지 않아 데이터데 대한 규격화가 되어있지 않다
  • Data 를 UPDATE하는데 느리다

NoSQL 데이터 표현 방식

Document Database

Documnet Database 는 Key와 Document의 형태로 저장된다. (Key-Value 모델과 다른 점은 Value가 계층적 형태인 Document 로 저장). 객체지향에서의 객체와 유사하며, 이들은 하나의 단위로 취급되어 저장된다. 하나의 객체를 여러 개의 테이블에 나눠 저장할 필요가 없어진다.
대표적인 NoSQL Document Model 로는 MongoDB, CouthDB 등이 있다

특징

  • 객체-관계 매핑이 필요하지 않다 (객체를 Document의 형태로 바로 저장)
  • 검색에 최적화되어 있다 (Key-Value 모델의 특징과 동일)
  • 사용이 번거롭고 쿼리가 SQL과는 다르다
  • 질의의 결과가 JSON이나 xml 형태로 출력된다
    대표적인 NoSQL Document Model로는 MongoDB, CouthDB 등이 있다.

Graph Database

Graph Model 은 데이터를 Node와 Edge, Property와 함께 <그래프 구조를 사용하여 데이터를 표현하고 저장하는 Database이다. 개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라고 할 수 있으며, 데이터 간의 관계가 탐색의 키일 경우에 적합하다. 페이스북이나 트위터 같은 소셜 네트워크에서(내 친구의 친구를 찾는 질의 등) 적합하고, 연관된 데이터를 추천해주는 추천 엔진이나 패턴 인식 등의 데이터베이스로도 적합하다.
대표적인 NoSQL Graph Model로는 Neo4J가 있다.
특징

  • 관계형 모델 (개체와 관계를 그래프 형태로 표현)
  • 연관된 데이터를 찾는 DB로 적합하다

Key-Value Database

Key-Value Database는 데이터가 Key와 Value의 쌍으로 저장된다. Key는 Value에 접근하기 위한 용도로 사용되며, 값은 어떠한 형태의 데이터라도 담을 수 있다. 심지어는 이미지나 비디오도 가능하다.
대표적인 NoSQL Key-Value Model로는 Redis, Riak, Amazon Dynamo DB 등이 있다.
특징

  • 모든 형태의 데이터를 값으로 사용 가능하다
  • 간단한 API를 제공하며 질의의 속도가 빠르다

Wide Column Database

Column-family Model 기반의 Database이며 이전의 모델들이 Key-Value 값을 이용해 필드를 결정했다면, 특이하게도 이 모델은 키에서 필드를 결정한다. 키는 Row(키 값)와 Column-family, Column-name을 가진다. 연관된 데이터들은 같은 Column-family 안에 속해 있으며, 각자의 Column-name을 가진다. 관계형 모델로 설명하자면 어트리뷰트가 계층적인 구조를 가지고 있는 셈이다. 이렇게 저장된 데이터는 하나의 커다란 테이블로 표현이 가능하며, 질의는 Row, Column-family, Column-name을 통해 수행된다.
대표적인 NoSQL Column-family Model로는 HBase, Hypertable 등이 있다.

RDBMS, NoSQL 언제 사용해야 될까

RDBMS는 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용하는 것이 좋다. 또한 중복된 데이터가 없어(무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경되는 시스템에 적합하다.

NoSQL은 정확한 데이터 구조를 알 수 없고 데이터 변경/확장이 될 수 있는 경우에 좋다. 또한 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 한다. 이러한 특징들을 기반으로 Update가 많이 이루어지지 않는 시스템이 좋다

profile
🔥 🧑🏾‍💻 🔥

0개의 댓글