나만 알 수 없어서 만든 블로그

1-1. DATABASE (RDBMS/Non-RDBMS) 본문

개발 기본 지식

1-1. DATABASE (RDBMS/Non-RDBMS)

코딩낙타 2022. 3. 23. 17:38

RDBMS / Non-RDBMS

참고 링크: https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90

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

 

RDBMS (관계형 데이터베이스 관리 시스템)

  • 기존의 RDBMS에서의 저장 방식은 SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장해야 함
  • 관계를 나타내기 위해 외래 키(foreign key)라는 것을 사용
  • 외래 키를 이용한 테이블 간 JOIN 가능 ★
  • 데이터가 자주 변경되는 시스템에 적합 ★

 

 Non-RDBMS(NoSQL)

  • 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미
  • 빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가함에 따라 일관성을 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장 (Scale-Out)
  • 스키마에 맞추어 데이터를 관리해야 된다는 한계를 극복하고 수평적 확장성(Scale-out)을 쉽게 할 수 있다는 장점
  • 정확한 데이터 구조를 알 수 없고 데이터가 변경 및 확장될 수 있는 경우에 적합
  • 중복 데이터를 수정하려면 모든 컬렉션에서 수정해야 하므로 update가 많이 이루어지지 않는 시스템에 적합
  • DB를 Scale-Out해야 하는 시스템에 적합
Key-Value
Database
데이터가 key, value의 쌍으로 저장
key는 value에 접근하기 위한 용도로 사용되며, 값은 어떠한 형태의 데이터라도 담을 수 있음 (이미지, 비디오 가능)
간단한 API를 제공하여 질의의 속도가 굉자히 빠른 편
Redis, Riak, Amazon Dynamo DB
Document
Database
데이터가 Key와 Document (Value가 계층적인 형태)형태로 저장
Document는 객체와 유사하며, 하나의 단위로 취급 (여러 개의 테이블로 나눌 필요가 없음)
객체-관계 매핑 불필요
검색 기능에 최적화
사용이 번거롭고 쿼리가 SQL과는 다름
질의의 결과가 JSON이나 xml 형태로 출력되어 전체적으로 사용 방법이 RDBMS와 다름
Wide Column
Database
Column-family Model 기반
Key에서 필드를 결정하며, Key는 Row(키 값)와 Column-family, Column-name으로 구성
연관된 데이터들은 Coulmn-family 안에 속하며, 각자 Column-name을 갖고 있음
어트리뷰트가 계층적인 구조를 가지고 있다고 이해하는 것이 좋음
저장된 데이터는 하나의 커다란 테이블로 표현 가능
질의는 Row, Column-family, Column-name을 통해서 수행
Hbase, Hypertable
Graph Database 데이터를 Node와 Edge, Property와 함게 그래프 구조를 사용하여 데이터를 표현하고 저장
개체와 관계를 그래프로 표현한 것이므로 관계형 모델이라고 할 수 있음
데이터 간의 관계 탐색의 키일 경우 적합
ex) 페이스북이나 트위터에서 같은 소셜 네트워크에서 친구의 친구를 찾는 질의,추천엔진, 패턴인식
Node4J

RDBMS 와 Non-RDBMS의 장단점

  RDBMS Non-RDBMS
장점 명확한 데이터 구조 보장 유연하고 자유로운 데이터 구조
데이터를 중복 없이 한 번만 저장 언제든 저장된 데이터를 조정하고 새로운 필드 추가 가능
  데이터 분산에 용이하며 성능향상을 위해 Scale-up, Scale-out 가능
단점 관계 때문에 JOIN문으로 복잡한 쿼리 생성 데이터의 중복 발생
Scale-up만 지원 (비용 증가) 중복된 데이터가 변경될 경우 모든 컬렉션에서 작업 수행
유연하지 못한 데이터 구조 명확한 데이터 구조를 보장하지 못함
스키마가 변경될 경우 번거롭고 어려움 데이터 구조 결정이 어려움