아래 글은 링크에 있는 글을 번역하여 요약한 글입니다.

 

각 요구사항에 맞춰 관계형 데이터베이스 혹은 NoSQL 중 어떤 것을 선택할 지에 대한 고민이 많을 것이다.

 

각 항목 별로 NoSQL 과 관계형 데이터베이스 차이를 알아보자.

Differences between SQL and NoSQL

The table below summarizes the main differences between SQL and NoSQL databases.

 

  SQL Databases NoSQL Databases
데이터 저장 모델 Row, Column 기반 테이블 key-value 기반 json Document
nodes, edge 기반 Graph
개발 역사 1970년부터 데이터 중복을 줄이고자 사용 Agile 과 DevOps 문화 도입에 따른 확장성 있고 빠른 Application 개발에 맞춰 사용
예시 Oracle, MySQL, Microsoft SQL Server, and PostgreSQL Document: MongoDB and CouchDB, Key-value: Redis and DynamoDB, Wide-column: Cassandra and HBase, Graph: Neo4j and Amazon Neptune
주 목적 일반 목적 Document : 예측 가능한 query 패턴에서 대용량 데이터를 사용할 경우
Graph : 연결된 데이터 간 관계를 분석할 경우
스키마 정적 동적
확장 Scale Up(수직적 확장) Scale Out (수평적 확장)
Multi-Record ACID Transactions 지원 대부분 지원 X(단, MongoDB 는 지원)
데이터 조인 대체로 필요 대체로 필요 X
데이터 Object Mapping ORM (object-relational mapping) 요구 대부분 ORM 을 요구하지 않음..
Mongo DB 에서는 Document 와 Data Structure 간 Mapping 됨

 

 

Q & A

 

그럼 NoSQL 은 단점이 없는가?

  • 대부분 NoSQL Database 는 Multi Document 간 ACID(Atomicity, Consistency, Isolation, Durability) 지원하지 않음.
  • 다만, 많은 Application 에서 Multi Document 간 ACID 를 요구해서 MongoDB 4점대부터는 이 내용이 포함됨.
  • 데이터 중복 줄이기 보다는 쿼리 호출에 최적화되어 있어서 용량을 많이 사용한다는 것.

+ Recent posts