SQL, NoSQL

밤무스·2022년 3월 11일
0

기본적인 용어들

DB(Database)

통상적으로 서비스를 운영하기 위한 서버에 저장된, 구조화된 정보 혹은 데이터의 체계적인 집합

DBMS(Database Management System)

사용자와 데이터베이스(DB) 사이에서, 사용자의 요구에 따라 데이터 생성 및 DB를 관리해주는 소프트웨어

RDB(Relational Database)

관계형 데이터 모델에 기반한 데이터베이스로, 모든 데이터를 2차원(행,열)의 테이블 형태로 표현하며 각각의 테이블은 서로 관계를 가짐 (즉, 데이터의 구조가 엄격함)

  • ex) MySQL, MariaDB, PostgreSQL, SQLite 등

RDBMS(Relational DBMS)

DBMS의 한 유형으로, RDB를 관리하는 소프트웨어

SQL(Structured Query Language)

RDBMS와 상호작용하고 그것을 관리하기 위해 디자인된 언어
기본적으로 SQL DB의 구조는 엑셀의 그것과 동일 (엑셀:시트=SQL:테이블)


NoSQL(Not Only SQL, Non-SQL, whatever...)

단순히 RDBMS가 가진 특성 뿐만 아니라, 다른 특성들을 부가적으로 지원함
대부분의 경우는 SQL로 커버 가능하지만, NoSQL은 특별한 경우와 이슈, 규모 등에 특화됨

NoSQL의 종류

1. Key-Value DB (ex: DynamoDB, Riak, Oracle)

  • 각각의 Key-Value 데이터에서 Key는 Unique한 값으로 유지됨
  • Value는 어떤 형태(이미지, 비디오 등)라도 담을 수 있음
  • 간단한 데이터를 자주 읽고 쓰는 어플리케이션에 적합:
    • RDB의 데이터 캐싱을 통한 성능 향상
    • 일시적인 속성 (장바구니 등) 추적
    • 모바일 앱 사용자 및 구성 정보 저장
    • 영상, 음성 파일 등 대용량 데이터 저장

2. Document DB (ex: MongoDB, CouchDB, CouchBase)

  • Key-Value와 동일하되 Value를 계층 구조를 가진 Document의 형태로 저장됨

  • 각각의 Document는 일종의 객체(Object)와 유사하며, JSON 혹은 XML 등의 형태로 저장

  • 각 Document 별로 다른 필드를 가질 수 있으며, 개발자가 데이터를 입력하는 단계에서 필드의 관리가 제대로 이루어지도록 보장하는 것이 중요함

    • 대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원
    • 다양한 속성이 있는 제품 등의 데이터 관리
    • 다양한 유형의 Meta-Data 추적
    • JSON 데이터 구조를 사용하는 어플리케이션
    • 비정규화된 중첩 구조의 데이터를 사용하는 어플리케이션

3. Column Family DB (ex: HBase, Google-BigTable, FaceBook-Cassandra, MS-CosmosDB)

  • 대용량 데이터, 빠른 읽기/쓰기 성능을 위해 설계됨
  • Key-Value, Document DB와 달리 Key에서 필드를 결정함
  • 각 Key는 Row, Column-Family, Column-Name을 가짐
  • 다만 RDB와 달리 비정규화된 구조를 가지고, 한 객체에 관련된 모든 정보를 단일 Row에 저장함
  • 통상 여러 대로 구성된 클러스터에서 운영되며, 단일 서버에서 운영할 정도의 데이터 규모라면 Key-Value나 Document DB가 나을 수도 있음
  • 클라우드 서비스에 적합할 것 (AWS, GCP, Azure):
    • DB 쓰기 작업이 많은 경우
    • 데이터 센터가 지리적으로 여러 곳에 분산되어 있는 경우
    • 복제본 데이터가 단기적으로 불일치하더라도 큰 문제가 없는 경우
    • 동적 필드를 처리
    • 초규모 대용량 데이터 처리

4. Graph DB (ex: TAO, Neo4j)

  • 그래프의 형태, 즉 Node와 관계를 나타내는 Edge, 그리고 Property의 형태로 표현된 데이터를 저장

  • 데이터 간의 관계가 탐색 Key로 사용될 때 적합:

    • 소셜 네트워크 서비스
    • 연관된 데이터를 추천하는 추천 엔진이나 패턴 인식 어플리케이션
    • 페이지 간의 관계를 기반으로 한 검색 엔진

0개의 댓글