SQL NoSQL

kkambbak1·2024년 2월 27일

DBMS

데이터베이스 관리 시스템(Database Management System, DBMS)은 다수의 사용자들이 데이터베이스내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다. DBMS은 사용자 또는 다른 프로그램의 요구를 처리하고 적절히 응답하여 데이터를 사용할 수 있도록 해준다.

RDBMS

Relational DataBase Management System의 약자로, 관계형 데이터베이스 관리 시스템을 의마한다.

RDB를 관리하는 시스템이며 RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다.

이러한 관계를 통해 테이블 간 join이 가능하다. 외래키(foreign key)라는 것을 사용한 테이블간에 join이 가능하다.

ACID(Atomicity, Consistency, Isolation, Durability)원칙을 기본으로 구성된 방식이다.

SQL

Structured Query Language: SQL

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

NoSQL

Not Only SQL의 약자로, 테이블 간 상호관계가 없는 것이 특징이다. 관계가 없으므로 다른 테이블과 join도 할 수 없다.

RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장기술이다. RDBMS와는 달리 테이블 간 관계를 정의하지 않는다.

빅데이터의 등장으로 인해 데이터와 트래픽이 기하 급수적으로 증가함에 따라 RDBMS에 단점인 성능을 향상시키기 위해 등장하였다.

데이터 일관성은 포기하되 비용을 고려하여 여러대의 데이터에 분산하여 저장하는 Scale-Out을 목표로 등장하였다.

NoSQL 데이터베이스와 다른 유형의 데이터베이스 간의 주요 차이는 NoSQL 데이터베이스의 경우 보통 구조화되지 않은 스토리지를 사용한다는 점입니다

또 한 가지 중요한 차이점은 NoSQL 데이터베이스가 '샤딩'이라는 프로세스를 거쳐 수평 확장을 한다는 점입니다. 여러 서버에 걸친 데이터 처리를 위해 더 많은 머신을 추가할 수 있다는 뜻이죠

수평 확장성 덕분에 NoSQL 데이터베이스는 엄청나게 많은 양의 데이터를, 심지어 데이터가 계속해서 증가하는 동안에도 더욱 효율적으로 처리할 수 있습니다.

NoSQL 데이터베이스 유형

NoSQL 데이터베이스에는 4가지 주요 유형이 있습니다:

  • 키 밸류

    키 값은 가장 유연한 NoSQL 데이터베이스 유형입니다. 애플리케이션이 값 필드에 저장된 모든 데이터를 제약 없이 완벽하게 제어할 수 있기 때문이죠.
    Redis, AWS DynamoDB, Riak

  • 문서

    key-Value에서 확장된 방식으로, Key-Document 형태로 저장. 문서 저장소 또는 문서 지향적 데이터베이스라고도 불리는 이 데이터베이스 유형은 반구조적 데이터의 저장, 검색, 관리에 사용됩니다. 문서에 포함할 필드를 특정할 필요가 없습니다.
    MongoDB, Couch DB

  • 그래프

    이 데이터베이스는 데이터를 노드 및 노드 간 연결을 보여주는 관계로 구성합니다. 이 데이터베이스는 더욱 풍부하고 완전한 데이터 표현을 지원합니다. 그래프 데이터베이스는 소셜 네트워크, 예약 시스템, 사기 감지 등에 적용됩니다.
    Neo4J
  • 넓은 열

    Key, Value와 유사한 형태이다. 데이터가 내부에서 Key를 기준으로 오름차순으로 저장되는 특징이 있으며 Order by를 제공하지 않는 NoSQL에서 다양한 방법으로 활용할 수 있다는 장점이 있다. 키는 Row(키 값)와 Column-family, Column-name을 가진다. 연관된 데이터들은 같은 Column-family 안에 속해 있으며, 각자의 Column-name을 가진다.
    이 데이터베이스는 테이블, 행, 열 형식으로 데이터를 저장 및 관리합니다. 이 데이터베이스는 열 형식을 사용하는 애플리케이션에 광범위하게 배포되어 스키마 없는 데이터를 수집합니다.
    HBase, Hypertable

SQL과 NoSQL 비교

데이터 저장 (Storage)

SQL

  • 데이터를 테이블에 저장하며, 미리 작성된 스키마를 기반으로 정해진 형식에 맞게 데이터를 저장해야 한다.

NoSQL

  • key-value, document, wide-column, graph 등의 방식으로 데이터를 저장한다.

스키마 (Schema)

SQL

  • 고정된 형식의 스키마가 필요하다. 다시 말해, 처리하려는 데이터 속성별로 열(column)에 대한 정보를 미리 정해두어야 한다.
  • 스키마는 나중에 변경할 수 있지만, 이 경우 데이터베이스 전체를 수정하거나 오프라인(down-time)으로 전환할 필요가 있다. 즉, 수정이 힘들다.

NoSQL

  • 관계형 데이터베이스보다 동적으로 스키마의 형태를 관리할 수 있다.
  • 행을 추가할 때 즉시 새로운 열을 추가할 수 있고, 개별 속성에 대해서 모든 열에 대한 데이터를 반드시 입력하지 않아도 된다.

쿼리 (Query)

SQL

  • 관계형 데이터베이스는 테이블의 형식과 테이블간의 관계에 맞춰 데이터를 요청해야 한다. 그래서 정보를 요청할 때, SQL과 같이 구조화된 쿼리 언어를 사용한다.

NoSQL

  • 비관계형 데이터베이스의 쿼리는 데이터 그룹 자체를 조회하는 것에 초점을 두고 있다. 그래서 구조화 되지 않은 쿼리 언어로도 데이터 요청이 가능하다.
  • UnQL(UnStructured Query Language)이라고 말하기도 한다.

확장성 (Scalability)

데이터베이스 서버의 확장성은 '수직적' 확장과 '수평적' 확장으로 나누어진다.

  • 수직적 확장 : 단순히 데이터베이스 서버의 성능을 향상시키는 것 (ex. CPU 업그레이드)
  • 수평적 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨을 의미 (하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동)

SQL

  • 일반적으로 수직적으로 확장한다.
  • 데이터베이스가 구축된 하드웨어의 성능을 많이 이용하기 때문에 비용이 많이 든다.
  • 여러 서버에 걸쳐서 데이터베이스의 관계를 정의할 수 있지만, 매우 복잡하고 시간이 많이 소모된다.

NoSQL

  • 일반적으로 수평적으로 확장한다.
  • NoSQL 데이터베이스를 위한 서버를 추가적으로 구축하면, 많은 트래픽을 보다 편리하게 처리할 수 있다.
  • 저렴한 범용 하드웨어나 클라우드 기반의 인스턴스에 NoSQL 데이터베이스를 호스팅할 수 있어서, 수직적 확장보다 상대적으로 비용이 저렴하다.

https://www.oracle.com/kr/database/nosql/what-is-nosql/
https://superohinsung.tistory.com/110
https://velog.io/@octo__/SQL-vs-NoSQL

profile
윤성

0개의 댓글