[DB] RDBMS vs. NoSQL

Jane·2021년 1월 29일
2
post-thumbnail

Background

data

  • 저장할 수 있도록 표, 그래프 등으로 가공된(조직된) 정보
  • 의미를 가지고 있으며 기록될 수 있는 어떤 것

database

  • 유관한 데이터들의 집합

information

  • 데이터를 가공해서 나오는 의미있는 정보
  • 의사 결정의 기반이 된다.

knowledge

  • information보다 정형화된 형태

RDBMS

  • Relational Database Management System
  • 관계형 모델을 사용해서 데이터를 관리하는 DBMS 소프트웨어로, 효율적이고, 안정적이고, 안전한 다사용자 데이터 저장소라고 할 수 있다.

특징

1. 안전성 (safe)

  • 대용량의 데이터를 영구적으로 저장, 관리, 접근할 수 있다.
    • 데이터를 여러 서버에 분산하여 관리함으로써 데이터의 손실 및 변경을 방지한다.
  • 트랜잭션(거래)을 지원한다. → 금융권에서 주로 오라클 RDBMS를 사용하는 이유는 트랜잭션의 신뢰성이 검증되어 있기 때문이다.

    트랜잭션 (거래)
    데이터베이스 관리 시스템 또는 유사한 시스템(트랜잭션의 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템)에서의 상호작용 단위

트랜잭션의 성질

  • Atomicity (원자성)
    • 완벽하게 실행하거나 혹은 전혀 실행하지 않는 트랜잭션을 필요로 한다.
  • Consistency (일관성)
    • 트랜잭션이 커밋되면 데이터가 데이터베이스 스키마를 준수하도록 요구한다.
  • Isolation (격리성)
    • 동시에 일어나는 트랜잭션들이 각기 별도로 실행되어야 함을 의미한다.
  • Durability (내구성)
    • 예기치 못한 시스템 장애 또는 정전 시 마지막으로 알려진 상태로 복구하는 기능을 필요로 한다.

2. 안정성 (reliable)

  • 복수의 데이터베이스의 서버를 묶어서 고가용성 솔루션을 구축했기 때문에 안정적이다.

    고가용성 (High Availability)
    서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질 (1년에 99.99%의 시간 동작을 보장한다.)

3. 효율성 (Efficient)

  • 다사용자/ 대용량 데이터를 동시에 처리할 수 있다.
  • 실제로는 병렬적으로 일을 수행하지만, 결과는 serializable하다.
    → 한 명이 한 번씩 실행한 것과 비슷한 결과를 보장한다. (동기화 문제 예방)

4. 편리성 (Convenient)

  • 선언적 언어인 SQL을 사용하기 때문에 알고리즘에 대해 신경쓸 필요가 없다. (what>how)
  • 물리적인 저장 구조에 대해 신경쓰지 않아도 된다. (데이터 독립성)

NoSQL

  • Not Only SQL
  • RDBMS가 아닌, 특정 데이터 모델에 대해 특정 목적에 맞추어 구축되는 데이터베이스
    • Redis(속도), MongoDB(쉬운 사용법), Hbase(매우 큰 데이터(PB) 저장)

특징

1. 유연성

  • 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발이 가능하다.
  • 반정형 및 비정형 데이터에 이상적으로 작동한다.

2. 확장성

  • 분산형 하드웨어 클러스터를 이용해 확장하도록 설계되었다.

3. 고성능

  • 특정 데이터 모델 및 액세스 패턴에 대해 최적화되어 관계형 데이터베이스를 통해 유사한 기능을 충족하려 할 때보다 뛰어난 성능을 자랑한다.

4. 고기능성

  • 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공한다.

※ 참고: SQL (관계형) vs. NoSQL(비관계형) 데이터베이스 비교

관계형 데이터베이스NoSQL 데이터베이스
최적의 워크로드관계형 데이터베이스는 일관성이 뛰어난 온라인 트랜잭션 프로세싱(OLTP) 애플리케이션을 위해 설계되어 온라인 분석 프로세싱(OLAP)에 적합합니다.NoSQL 데이터베이스는 낮은 지연 시간의 애플리케이션을 포함한 수많은 데이터 액세스 패턴에 맞도록 설계되었습니다. NoSQL 검색 데이터베이스는 반정형 데이터에서 분석을 위해 설계되었습니다
데이터 모델관계형 모델은 데이터를 행과 열로 구성된 테이블로 정규화합니다. 스키마는 테이블, 행, 열, 인덱스, 테이블 간 관계, 기타 데이터베이스 요소를 정확하게 규정합니다. 데이터베이스는 테이블 사이의 관계에서 참조 무결성을 실현합니다.NoSQL 데이터베이스는 키-값, 문서, 그래프 등 성능과 규모 확장에 최적화된 다양한 데이터 모델을 제공합니다.
ACID 속성관계형 데이터베이스는 원자가, 일관성, 격리성 및 지속성(ACID, atomicity, consistency, isolation, and durability)의 속성을 제공합니다NoSQL 데이터베이스는 흔히 수평으로 확장할 수 있는 보다 유연한 데이터 모델을 위해 관계형 데이터베이스의 일부 ACID 속성을 완화함으로써 조정합니다. 이로써 NoSQL 데이터베이스는 단일 인스턴스의 한계를 넘어 수평으로 확장해야 하는 사용 사례에서 높은 처리량, 낮은 지연 시간을 위한 탁월한 선택이 됩니다.
성능성능은 일반적으로 디스크 하위 시스템에 따라 다릅니다. 최고 성능을 달성하기 위해서는 쿼리, 인덱스 및 테이블 구조를 자주 최적화해야 합니다.성능은 일반적으로 기본 하드웨어 클러스터 크기, 네트워크 지연 시간 및 호출 애플리케이션의 기능입니다.
확장관계형 데이터베이스는 일반적으로 하드웨어의 계산 성능을 높이거나 읽기 전용 워크로드의 복제물을 추가함으로써 확장됩니다.NoSQL 데이터베이스는 일반적으로 거의 무제한적인 범위에서 일관된 성능을 제공하는 처리량 제고를 위해 분산형 아키텍처를 사용해 액세스 패턴이 확장 가능하기 때문에 분할성이 있습니다.
API데이터를 저장 및 검색하기 위한 요청은 SQL(구조화 질의 언어)을 준수하는 쿼리를 사용하여 전달됩니다. 쿼리는 관계형 데이터베이스에 의해 구문 분석되고 실행됩니다.객체 기반 API를 통해 앱 개발자가 데이터 구조를 쉽게 저장 및 검색할 수 있습니다. 파티션 키를 사용하면 앱에서 키-값 페어, 열 세트 또는 일련의 앱 객체 및 속성을 포함하는 반정형 문서를 검색할 수 있습니다.

Source

0개의 댓글