[CS-database] NoSQL vs RDBMS

sing sang song·2021년 12월 24일
0

CS-데이터베이스

목록 보기
1/2
post-thumbnail

Database? SQL? DBMS?

  • Database : 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 혹은 데이터의 체계적인 집합체를 의미

  • DBMS(DataBase Management System) : 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 '소프트웨어'

  • SQL(Strucured Query Language) : 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 '특수 목적의 프로그래밍 언어'이며, 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었음

  • 스키마(Schema) : 데이터베이스를 구성하는 개체(Entity),속성(Attribute),관계(Relationship) 및 제약조건 등에 관해 전반적으로 정의한 메타데이터의 집합

R(relational)DBMS

  • 저장방식 : sql 문법에 의해 저장되며 정해진 스키마에 따라서 데이터 저장

  • RDB를 관리하는 시스템, RDB는 관계형 데이터 모델을 기초로 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스 = 관계형 데이터베이스 관리 시스템

  • Attribute와 Value를 이용하여 데이터를 정의하고 저장·관리

    Attribute => 고객/나이/성별
    value => 김가가,박나나 / 11,13 / 남,여

  • 각 테이블들이 관계를 나타내기 위해서 외래 키(foreign key)를 사용

    부모(primary key)에 자식키(foreign key)가 참조

  • 이러한 테이블간의 관계에서 외래키를 이용하여 join이 가능하다는게 큰 특징

NoSQL(Not Only SQL)

  • 관계형 데이터베이스와는 반대되는 방식
  • 테이블끼리의 관계를 정의하지 않는다. 그러므로 join도 불가능
    • 정해진 스키마가 없어서 보다 자유롭게 데이터를 저장할 수 있다.
  • 빅데이터의 등장으로 데이터와 트래픽이 기하급수적으로 증가함에 따라 생겼다. 왜?
    • RDBMS에 단점인 성능을 향상시키기 위해서는 장비가 좋아야한다.
    • 즉, RDBMS의 Scale-Up 특징이 비용을 엄청나게 증가시키기 때문에 데이터의 일관성을 포기하고 비용을 아끼기 위해서 여러 대의 데이터에 분산하여 저장하는 Scale-Out을 쓰기위해 만들어진 것이다.
  • key 값만 가지고 데이터에 대한 입·출력이 가능

    고객 id(key값) : aaa / 고객정보 : 가가가,11,남
    고객 id(key값) : bbb / 고객정보 : 나나나,13,여

RDBMS & NoSQL 장단점

RDBMS

  • 장점

    • 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장(Data를 Column과 Row형태로 저장)
    • 관계는 각 데이터를 중복없이 한 번만 저장할 수 있다. => 정규화를 하자!
    • 데이터의 분류, 정렬, 탐색 속도가 비교적 빠름
    • 데이터의 Update가 빠름
  • 단점

    • 데이터 처리의 부하시 처리가 어렵다
    • 반드시 스키마 규격에 맞춰서 데이터 처리

NoSQL

  • 장점

    • 데이터 간의 관계를 정의하지 않아서 자유롭다.=> 데이블간의 관계(join)이 불가능·불필요
    • RDBMS보다 복잡함이 떨어지기 때문에 훨씬 대용량의 데이터를 저장·관리
    • 테이블에 스키마가 정해져 있지 않아서 데이터 저장이 비교적 자유롭다
    • 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있다.
    • 데이터 분산이 용이하여 Scale-Up 뿐만 아니라 Scale-Out도 가능하다
  • 단점

    • 데이터 중복이 발생할수 있다
    • 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 진행해야 된다.
    • 스키마가 정해져 있지 않기 때문에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정하기가 어려울 수 있다.

(총정리) RDBMS, NoSQL 언제 사용 되나?

  • RDBMS는 데이터 구조가 명확하고, 변경될 여지가 없으며, 명확한 스키마가 중요한 경우. 또한 중복된 데이터가 없어서(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합
  • NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋다. 하지만 데이터 중복이 발생할 수 있으며 중복된 데이터가 발생 시 모든 컬렉션에서 수정을 해야하기 때문에 update가 자주 이루어지지 않는 시스템에 알맞다. 또한 Scale-Out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야되는 시스템에 적합하다.


참조 블로그

profile
세상을 선명하게

0개의 댓글