Search

    SQL과 NoSQL의 차이, DBMS
    2023.05.16 8 min read

    SQL과 NoSQL의 차이, DBMS

    DBMS(DataBase Management System)

    DBMS는 말 그대로 데이터베이스 관리 시스템을 의미하며, SQL과 같은 언어를 통해 데이터베이스와 상호작용 합니다. 우리가 흔히 ‘데이터베이스’라고 부르는 MySQL이나 Oracle은 사실 데이터베이스 자체가 아니라 DBMS이지만, 편의상 데이터베이스라 부르는 것입니다.

    RDBMS(관계형 데이터베이스)

    RDBMS는 표 형태의 데이터베이스를 관리하는 시스템으로 SQL 언어를 사용하여 조작할 수 있습니다.

    [RDBMS 종류]

    • MySQL, PostgreSQL, SQL Server, Oracle, MariaDB

    SQL(Structured Query Language)

    관계형 데이터베이스를 관리하기 위해 만들어진 언어로 지정된 형식으로만 데이터를 저장할 수 있습니다.

    예를 들어, 아래와 같이 id, name, price로 이루어진 ‘제품 가격’ 테이블에서 새로운 속성 number가 포함된 행 하나를 추가한다고 가정해 봅시다.

    sql schema

    행을 추가하려면, 전체 테이블 구조를 변경해 id 1, 2, 3에 해당하는 행에도 number 값을 지정해 주어야 합니다. 결국 전체 테이블 구조를 변경하지 않고는 새 속성을 추가할 수 없는 것입니다.

    이처럼 테이블이 미리 정해진 형태를 스키마(Schema), 스키마의 집합을 인스턴스(Instance)라고 합니다.

    [제품 가격 테이블]

    • 스키마: id, name, price
    • 인스턴스: (1, 블루베리, 5,000), (2, 키위, 1,000), (3, 레몬, 2,000)

    각각의 스키마를 기반으로 생성된 인스턴트들이 모여 하나의 테이블을 이루며, 여러 테이블이 서로 관계를 맺어 구성된 데이터베이스를 관계형 데이터베이스(RDB)라고 합니다.


    NoSQL(Not only SQL)

    NoSQL은 관계형 데이터베이스와 달리 SQL을 사용하지 않거나 제한적으로 사용하는 데이터베이스를 말합니다.

    비정형 데이터를 효율적으로 관리하기 위해 만들어졌으며, 표 형태의 고정된 구조 없이 다양한 형태의 데이터를 저장할 수 있습니다. 데이터를 여러 서버에 분산 저장할 수 있어 확장성과 유연성이 높으며, 대규모 데이터 분석이나 실시간 처리에 주로 활용됩니다.

    도큐먼트 데이터베이스(DocumentDB)

    도큐먼트 데이터베이스는 고정된 컬럼이나 스키마 없이 트리 형태로 계층 관계를 표현할 수 있는 데이터베이스입니다. 대표적으로는 데이터를 JSON 형태로 저장하는 MongoDB가 있습니다.

    [DocumentDB 종류]

    • MongoDB, Azure Cosmos DB, CouchDB etc.

    MongoDB를 SQL과 비교해 보면 아래와 같습니다.

    sql

    // MongoDB
    [
      { "id": 1, "name": "블루베리", "price": 5000 },
      { "id": 2, "name": "키위", "price": 1000 },
      { "id": 3, "name": "레몬", "price": 2000 }
    ]

    SQL은 표 형태의 구조로 되어 있어 행을 추가하려면 모든 열에 해당하는 값을 반드시 넣어주거나 값이 없는 경우에는 별도로 처리해 주어야 합니다. ‘체리’라는 데이터를 하나 추가하려면 id, name, price 값 모두를 명시해야 한다는 것입니다.

    반면, JSON 기반의 도큐먼트 구조에서는 대괄호와 중괄호 외에 각 필드의 구성이나 순서가 동일할 필요가 없어 훨씬 더 유연하게 데이터를 저장할 수 있습니다. MongoDB의 경우에는 도큐먼트를 생성할 때마다 자동으로 고유한 값인 ObjectID가 생성되며, 이는 관계형 데이터베이스의 Primary Key처럼 도큐먼트를 유일하게 식별하는 역할을 합니다.


    DocumentDB 장점
    • 확장성이 뛰어남
    • 빅데이터 저장 시 성능이 좋음
    • 스키마를 정하지 않고 데이터 삽입이 가능해 개발자가 원하는 종류의 데이터를 저장할 수 있음

    키-값 데이터베이스(Key-Value DB)

    key value DB

    Key-Value 데이터베이스는 데이터를 고유 식별자 Key와 이에 대응하는 값(Value) 쌍으로 저장하는 구조입니다. 이러한 구조로 인해 데이터를 빠르게 읽고 쓸 수 있다는 것이 큰 장점이며, 단순 조회나 캐싱이 중요한 상황에서 자주 사용됩니다.

    [Key-Value 데이터베이스 종류]

    • DynamoDB, Redis, Oracle Berkeley DB etc.

    SQL vs NoSQL

    SQL과 NoSQL 중 어느 것이 더 낫다고 단정할 수는 없습니다. 사용 목적, 데이터의 구조와 성격에 따라 적절하게 선택하면 되고 경우에 따라 두 가지를 함께 사용하는 것도 가능합니다.

    SQL은 데이터를 저장하기 전에 정해진 형식을 따라야 하므로 복잡한 쿼리를 통해 원하는 정보를 정밀하게 추출할 때 유용합니다. 하지만 이는 정해진 틀 안에서만 데이터를 다뤄야 한다는 의미로, 스키마를 설계하는 데 시간이 오래 걸리고 구조가 변경되면 시스템 전체에 영향을 줄 수 있어 유지보수가 까다로울 수 있습니다.

    반면 NoSQL은 사전에 스키마를 정의할 필요 없이 유연하게 다양한 형태의 데이터를 저장할 수 있는 것이 큰 장점입니다. 문서마다 고유한 구조를 가질 수 있고 데이터 확장과 수정이 자유롭습니다. 그러나 그만큼 데이터의 일관성을 유지하기 어렵고 복잡한 관계를 표현하는 데에는 한계가 있을 수 있습니다.


    언제 무엇을 사용할까?

    SQL

    • 정형화된 데이터를 일관성 있게 관리해야 하는 경우
    • 복잡한 쿼리나 데이터베이스 분석이 필요한 경우

    NoSQL

    • 데이터 구조를 유동적이고 유연하게 다뤄야 하는 경우
    • 빠른 개발, 높은 쓰기/읽기 성능이 필요한 서비스

    TAGS

    DBMS