오늘의 인기 글
최근 글
최근 댓글
Today
Total
12-30 13:56
관리 메뉴

우노

[DB] SQL과 NoSQL의 차이 본문

Database/Concept

[DB] SQL과 NoSQL의 차이

운호(Noah) 2023. 7. 24. 00:53

SQL(Structured Query Language)이란?

  • SQL은 관계형 데이터베이스 유형을 지칭하는 용어입니다.
  • SQL의 특징은 아래와 같습니다.
    • 데이터는 테이블로 구성되며, 각 테이블은 행과 열로 이루어져 있습니다.
    • 정해진 스키마를 사용하여 데이터베이스 테이블을 정의합니다.
    • 데이터의 무결성과 일관성을 유지합니다.
    • 복잡한 쿼리와 다양한 조인 연산에 중점을 둡니다.
    • 행 기반으로 데이터를 저장합니다.
  • 주요 SQL 데이터베이스는 아래와 같습니다.
    • MySQL, PostgreSQL, Oracle, Microsoft SQL Server

행 기반 데이터베이스

  • 데이터를 행 단위로 저장하는 데이터베이스 유형입니다.

  • 행 기반 데이터베이스 저장 구조 예시

    • 실제 테이블 데이터 파일은, 디스크 내부 페이지에 테이블의 row를 나란히 이어서 저장하고 있습니다.
  • 행 기반 데이터베이스에서 Insert, Update, Delete를 진행할 경우, row(record) 단위로 묶어서 처리할 수 있으므로 효율적입니다.

  • 하지만, 특정 컬럼에 대한 집계는 모든 row(record) 묶음을 조회해야하므로 비효율적입니다. (필요없는 열까지 읽어야 함)

    • ex) 모든 사람의 평균 연령

NoSQL(Not only SQL)이란?

  • NoSQL은 비관계형 데이터베이스 유형을 지칭하는 용어입니다.
  • NoSQL의 특징은 아래와 같습니다.
    • NoSQL은 정해진 스키마를 갖지 않거나 유연한 스키마를 가집니다.
    • 대용량, 빠른 속도, 유연성, 높은 가용성에 중점을 둡니다.
    • 다양한 유형으로 데이터를 저장합니다.
      • 키-값(Key-Value), 문서(Document), 열(Column), 그래프(Graph) 등.
  • 주요 NoSQL 데이터베이스는 아래와 같습니다.
    • Redis(Key-Value), MongoDB(Document), Apache Cassandra(Column), Neo4j(Graph) 등

NoSQL 데이터 저장 유형

  • Key-Value Database
  • Document Database
  • Column-Oriented/Family Database
  • Graph Database

Key-Value Database

  • Key-Value Database는 데이터를 고유한 Key와 해당 Key에 대응하는 Value의 쌍으로 저장하는 데이터베이스 유형입니다.
  • 각 데이터 항목은 Key로 식별되며, Key를 사용하여 데이터를 조회, 삽입, 수정, 삭제할 수 있습니다.
  • 대표적인 Key-Value DB로는 Redis, Amazon DynamoDB 등이 있습니다.

Document Database

  • Document Database는 데이터를 문서 형식으로 저장하는 데이터베이스 유형입니다.
  • Key-Value 저장소의 한 유형이며, 문서 자체가 값(Value)이고 각 문서에는 고유한 식별자(Key)가 있습니다.
  • Document 데이터베이스의 데이터는 Key-Value 데이터베이스 데이터와 달리 일정 수준의 구조를 제공하는 메타 데이터를 포함하고 있습니다.
  • 대표적인 Document DB로는 MongoDB, Couchbase, CouchDB 등이 있습니다.

Column-Oriented/Family Database

  • Column-Oriented Database는 데이터를 테이블 형식으로 저장하며, 데이터를 행 기반이 아닌 열 기반으로 저장하는 데이터베이스 유형입니다.

  • Column-Family Database는 Column-Oriented Database의 하위 개념으로, 데이터를 열 기반으로 저장하며 관련된 열들을 하나의 컬럼 패밀리로 묶어서 저장합니다.

  • 대표적인 Column-Oriented Database로는 Google BigQuery, Apache Cassandra, ScyllaDB 등이 있습니다.

  • 대표적인 Column-Family Database로는 Apache HBase가 있습니다.

  • 열 기반 데이터 베이스 저장 구조 예시

    • 실제 테이블 데이터 파일은, 디스크 내부 페이지에 테이블의 column을 나란히 이어서 저장하고 있습니다.
  • 열 기반 데이터베이스에서 Insert, Update, Delete를 진행할 경우, 데이터의 적절한 위치를 찾기 위해 모든 row(record) 묶음을 조회해야하므로 비효율적입니다.

  • 하지만, 특정 컬럼에 대한 집계는 column 단위로 묶어서 접근할 수 있으므로 효율적입니다. (필요 없는 열을 안 읽어도 됨)

    • ex) 모든 사람의 평균 연령

Graph Database

  • Graph Database는 그래프 형태로 데이터를 저장하고 관리하는 데이터베이스 유형입니다.

  • Graph Database는 노드(Node)와 노드 사이의 관계(Edge)로 데이터를 표현합니다.

  • 이러한 구조는 연결된 데이터를 효율적으로 표현하고 조회하는데 매우 유용하며, 소셜 네트워크, 추천 시스템, 지도 서비스 등에서 유용하게 사용됩니다.

  • 대표적인 Graph Database로는 Neo4j, Amazon Neptune, ArangoDB 등이 있습니다.

  • 아래는 Graph Database의 실제 예제입니다:

      # 사용자 정보
      (노드) User: { ID: 1, Name: "John" }
      (노드) User: { ID: 2, Name: "Alice" }
      (노드) User: { ID: 3, Name: "Bob" }
      (노드) User: { ID: 4, Name: "Mary" }
    
      # 사용자 간의 관계
      (관계) Friend: (User:1) -[:FRIEND]-> (User:2)
      (관계) Friend: (User:1) -[:FRIEND]-> (User:3)
      (관계) Friend: (User:2) -[:FRIEND]-> (User:4)
    • 노드(Node)는 사용자(User)를 나타내며, 각 사용자는 고유한 식별자(ID)와 사용자 이름(Name)을 갖습니다.
    • 각 사용자(Node) 간의 관계(Edge)는 친구(Friend) 관계로 구성되며, 친구 관계는 서로 연결된 사용자를 나타냅니다.

요약

참고

Comments