본문 바로가기

잡인터뷰

NoSQL이란 무엇인가?

반응형

What is NoSQL; IMAGE FROM geeksforgeeks.org

NoSQL이란 무엇인가?

NoSQL은 "비관계형 데이터베이스"를 의미한다.

즉, 관계형 데이터베이스가 가지고 있는 스키마 (schema),

테이블 (table), 레코드 (record) 등의 개념이 없이 데이터를 저장하는 데이터베이스이다.

NoSQL 데이터베이스는 대부분 분산 시스템으로 구성되어 있으며,

대용량의 비정형 데이터를 저장하고 처리하는 데 특별한 역할을 한다.

이러한 특징으로 인해 NoSQL은

대규모 웹 애플리케이션, 사물인터넷(IoT), 빅데이터 등에서 많이 사용된다.

NoSQL 데이터베이스는 다양한 종류가 존재하며,

각각의 데이터 모델에 따라서 사용되는 용어와 기능이 다르다.

몇 가지 예시로는

Key-Value Store,

Document Store,

Column-Family Store,

Graph Database 등이 있다.

NoSQL의 가장 큰 특징 중 하나는 확장성이다.

NoSQL 데이터베이스는 수평적으로 확장이 가능하며,

클러스터링을 통해 여러 대의 서버에 데이터를 분산하여 저장하고 처리할 수 있다.

이로 인해 NoSQL 데이터베이스는 고가용성과 높은 처리량을 보장할 수 있다.

하지만 NoSQL 데이터베이스는 일반적으로 ACID 특성을 보장하지 않는다.

대신에 BASE(기본 가용성, 소프트 상태, 최종 일관성 - eventual consistency)라는 원칙에 따라 작동하며,

이를 통해 일부 트랜잭션을 유연하게 처리할 수 있다.

 

여기서 잠깐.. ACID라는 것은 무엇을 얘기하는 걸까?

ACID란 무엇인가?

ACID는 데이터베이스 트랜잭션의 네 가지 특성을 나타내는 약어이다.

  • A는 Atomicity(원자성)로서,
    - 트랜잭션은 모두 수행되거나 전혀 수행되지 않아야 한다. 즉, 모든 작업이 성공하면 커밋(commit)되고, 어떤 하나의 작업이라도 실패하면 롤백(rollback)되어야 한다.
  • C는 Consistency(일관성)로서,
    트랜잭션이 수행된 후 데이터베이스는 일관성 있는 상태여야 하며, 데이터베이스가 정해놓은 규칙에 맞게 데이터가 저장되어야 한다.
  • I는 Isolation(격리성)으로서, 여러 개의 트랜잭션이 동시에 실행되더라도, 각각의 트랜잭션은 다른 트랜잭션과 독립적으로 실행되어야 한다.
  • D는 Durability(지속성)으로서, 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 저장되어야 한다.

하지만 NoSQL 데이터베이스는 ACID 특성을 보장하지 않는다. 대신에 BASE(기본 가용성, 소프트 상태, 최종 일관성)라는 원칙에 따라 작동한다. 이는 일부 트랜잭션을 유연하게 처리할 수 있도록 하지만, 모든 트랜잭션에 대한 일관성을 보장하지는 않는다. 따라서 NoSQL 데이터베이스는 ACID보다는 확장성과 가용성에 더 초점을 둔 데이터베이스로 사용된다.

장점과 단점

장점:

  1. 확장성: 대규모 데이터의 저장과 처리에 유리하며 수평적 확장이 가능하므로, 더 많은 서버를 추가하여 대용량 데이터의 처리를 보다 빠르고 효율적으로 할 수 있.
  2. 높은 가용성: 분산형 아키텍처로서, 단일 장애 지점이 없다. 따라서 시스템 전체의 가용성이 높아진다.
  3. 다양한 데이터 구조: 비정형 데이터부터 구조화된 데이터까지 다양한 형태의 데이터를 저장할 수 있다. 특히, 문서 지향 데이터베이스는 객체와 비슷한 구조를 갖기 때문에 개발자가 더 쉽게 데이터를 다룰 수 있다.
  4. 빠른 처리 속도: 메모리에 데이터를 저장하므로 처리 속도가 빠르다. 특히, In-Memory 데이터베이스의 경우 매우 빠른 처리 속도를 보장한다.

단점:

  1. 일관성 보장의 어려움: 일관성과 가용성, 확장성 중에서 두 가지를 선택해야 한다. 따라서, 일부 데이터의 일관성을 보장하지 않는다.
  2. 제한된 쿼리 언어: 관계형 데이터베이스의 SQL과는 달리, NoSQL 데이터베이스는 다양한 쿼리 언어를 제공하지 않는다. 따라서, 데이터 분석이나 복잡한 쿼리에는 부적합할 수 있다.
  3. 부적절한 사용: 모든 데이터에 NoSQL 데이터베이스가 적합하지는 않는다. 따라서, 사용 목적과 데이터 특성을 고려하여 적절하게 선택해야 한다.
  4. 한계된 트랜잭션: 일부 NoSQL 데이터베이스는 ACID 특성을 보장하지 않는다. 따라서, 복잡한 트랜잭션 처리에 한계가 있을 수 있다.
반응형

그렇다면 기존 관계형 데이터베이스(RDBMS)의 차이점은 어떻게 될까?

  1. 데이터 모델: NoSQL 데이터베이스는 데이터 모델이 다양하다. Key-Value, Document, Column-Family, Graph 등 다양한 형태의 데이터 모델을 지원하며, 관계형 데이터베이스는 테이블 기반의 데이터 모델을 사용한다.
  2. 확장성: NoSQL 데이터베이스는 수평적 확장이 가능하며 더 많은 서버를 추가하여 대규모 데이터를 처리할 수 있다. 반면, 관계형 데이터베이스는 수직적 확장만 가능하다. 따라서, 대용량 데이터 처리에는 한계가 있다.
  3. 일관성 보장: NoSQL 데이터베이스는 분산형 아키텍처를 사용하므로, 일부 데이터의 일관성을 보장하지 않을 수 있다. 관계형 데이터베이스는 ACID 특성을 보장하여 데이터 일관성을 보장한다.
  4. 쿼리 언어: NoSQL 데이터베이스는 다양한 쿼리 언어를 제공하지 않는반면, 관계형 데이터베이스는 SQL을 사용하여 데이터를 출력한다.
  5. 스키마 유연성: NoSQL 데이터베이스는 스키마를 미리 정의하지 않아도 되므로, 데이터 모델의 변경이 용이하는반면, 관계형 데이터베이스는 스키마를 미리 정의해야 하므로, 데이터 모델의 변경이 어려울 수 있다.
  6. 데이터 저장 방식: NoSQL 데이터베이스는 데이터를 메모리에 저장하는 In-Memory 데이터베이스도 있으며, 디스크에 저장하는 데이터베이스도 있지만 반면, 관계형 데이터베이스는 주로 디스크에 데이터를 저장한다.
  7. 데이터의 무결성: NoSQL 데이터베이스는 관계형 데이터베이스보다 덜 엄격한 데이터 무결성 규칙을 가지고 있으므로, 데이터 무결성을 보장하기 위해서는 개발자가 추가적인 작업을 해야 할 수 있다.

현재 NoSQL은 어느 곳에서 사용 되는가?

  1. MongoDB: 문서 지향(Document-Oriented) 데이터베이스로서, 대용량 데이터의 저장과 분석에 사용된다. 대규모 웹 어플리케이션, 사물인터넷(IoT), 빅데이터 등에서 많이 사용된다.
  2. Cassandra: 분산형 컬럼 패밀리(Column-Family) 데이터베이스로서, 대규모 데이터의 분산 저장과 처리에 사용된다 Facebook, Twitter 등의 대규모 SNS에서 사용된다.
  3. Redis: In-Memory Key-Value Store 데이터베이스로서, 데이터를 메모리에 저장하므로 빠른 속도로 데이터를 처리할 수 있다. 캐시, 세션 관리, 메시지 큐 등에 사용된다.
  4. Neo4j: 그래프(Graph) 데이터베이스로서, 관계형 데이터베이스가 가지지 못한 복잡한 관계를 저장하고 처리할 수 있다. 소셜 네트워크, 추천 시스템 등에 사용된다.
  5. Amazon DynamoDB: AWS에서 제공하는 분산형 Key-Value Store 데이터베이스로서, 대용량 데이터의 저장과 분석에 사용되며 AWS 서비스와 연동하여 사용할수 있다.

이외에도 NoSQL 데이터베이스는 다양한 분야에서 사용되며, 새로운 NoSQL 데이터베이스도 지속적으로 개발되고 있다.

 

 

SQL vs NoSQL: Which one is better to use? - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

반응형