/ CS

cs - Database RDBMS And NoSQL

CS 스터디 공부 목록

RDBMS와 NOSQL의 특징에 대해서 설명해 보세요.

  • Databse란 일반적으로 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 또는 데이터의 체계적인 집합이다.
  • DBMS란(DataBase Management System) 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어이다.
  • SQL이란(Strucured Query Language) 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다. 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 사용된다.

1. RDBMS

  • RDBMS에서 R은(Relational)의 약자로 RDBMS는 관계형 데이터베이스 관리 시스템을 의미한다.
  • RDBMS는 RDB를 관리하는 시스템이며 RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다.
  • 관계형 데이터베이스(RDMBS)는 아래와 같이 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수 있습니다.
  • 또한 이러한 것을 나타내기 위해 primary key와 foreign key를 사용한다.
  • 이러한 테이블간의 관계에서 primary key와 foreign key를 이용하여 테이블 간 JOIN을 사용하여 결과를 추출해낸다.

[회원 테이블]

회원 번호(Primay key) 회원 이름 휴대폰 번호
111 홍길동 11111111111
222 김철수 22222222222
333 아무개 33333333333

[주문 테이블]

주문 번호(Primay key) 회원 번호(Foreign key) 주문 상품
202303220001 111 아이폰
202303230002 222 맥북
202303240003 333 아이패드

2. NoSQL

  • NoSQL은 RDBMS와 다르게 테이블 간에 관계를 정의하지 않는다.
  • 데이터의 테이블은 하나의 테이블이고 테이블 간의 관계를 정의하지 않아서 테이블 간의 JOIN이 불가능하다.
  • NoSQL은 빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가함에 따라 데이터의 일관성은 포기하고 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 Scale-Out을 등장시키게 되었다. NoSQL을 사용하는 이유는 RDBMS의 단점인 성능을 향상시키기 위해 사용하는 Scale-Up이 비용을 기하급수적으로 증가시키기 때문이다.
  • NoSQL은 Document기반인 MongoDB를 많이들 기억하고 있을 것이다. 하지만 MongoDB도 NoSQL의 한 종류중 하나이기 때문에 NoSQL은 아래와 같은 다양한 형태의 저장 기술을 가지고 있다.

2.1. Key-Value Database

  • Key-Value Database는 데이터가 Key와 Value의 쌍으로 저장된다.
  • NoSQL Key-Value Model: Redis, Riak, Amazon DynamoDB etc.

2.2. Document Database

  • Document Database 데이터는 Key와 Document의 형태로 저장된다.
  • Key-Value 모델과 다른 점은 Value가 계측적인 형태인 도큐먼트로 저장된다. 객체지향에서의 객체와 유사하며, 이것들이 하나의 단위로 저장된다.
  • 즉, 하나의 객체를 여러 개의 테이블에 나뉘어 저장할 필요가 없다.
  • 단점: 사용이 번거롭고 퀴리가 SQL문과는 다르다. 도큐먼트 모델에서는 질의의 결과가 JSON이나 XML형태로 출력되기 때문에 그 사용 방법이 RDBMS에서의 질의 결과와는 다르다.
  • NoSQL Document Model: MongoDB, Apache CouchDB etc.

2.3. 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: Apache HBase, Hypertable etc.

2.4. Graph Database

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

3. RDBMS와 NoSQL의 장점과 단점

3.1. RDBMS

  • 장점
    • RDBMS는 정해진 스키마에 따라 데이터를 저장하며 따라서 명확한 데이터 구조를 보장한다.
    • 각 데이터를 중복없이 한 번만 저장 할 수 있다.
  • 단점
    • 테이블 간 관계를 맺고 있어 시스템이 커질 경우, JOIN이 많아지면서 복잡한 퀴리가 만들어진다.
    • 성능 향상을 위해서 서버의 성능을 향상 시켜야 하는데, 이때 Scale-Up만 가능하다. 이에 따라 비용이 기하급수적으로 증가하게 된다.
    • 스키마로 인해 데이터가 유연하지 못하다. 나중에 스키마 변경이 어렵다.

3.2. NoSQL

  • 장점
    • NoSQL은 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가진다. 따라서 언제든 저장된 데이터를 조정하고 새로운 필드를 추가 가능하다.
    • 데이터 분산이 용이하기 때문에 성능 향상을 위한 Scale-Up, Scale-Out이 가능하다.
  • 단점
    • 데이터 중복이 발생할 수 있으며, 중복된 데이터가 변경 될 경우 모든 컬렉션을 수정해야한다.
    • 스키마가 존재하지 않기 때문에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정이 어렵다.

참고자료