[DB] SQL과 NoSQL

giggle·2023년 8월 13일
1
post-custom-banner

📌 SQL이란?

SQL

  • 관계형 데이터베이스로 고정된 행(row)과 열(column)로 구성된 테이블에 데이터를 저장합니다.
  • 각 열은 하나의 속성에 대한 정보를 저장하고, 행에는 각 열의 데이터 형식에 맞는 데이터가 저장됩니다.
  • 관계형 데이터베이스에서는 테이블의 구조와 데이터 타입 등을 사전에 정의한다. 그리고 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있습니다.
  • 특정한 형식을 지키기 때문에, 데이터를 정확히 입력했다면 데이터를 사용할 때에는 매우 수월합니다.

📌 NoSQL이란?

NoSQL?

  • 비관계형 데이터베이스입니다.
  • 다양한 데이터 모델을 지원하며, 키-값 저장소, 문서 저장소, 열 지향 데이터베이스, 그래프 데이터베이스 등이 있습니다.
  • 스키마가 유연하며, 데이터의 구조를 미리 정의하지 않아도 됩니다. 이로써 데이터의 추가나 변경이 더욱 간편합니다.
  • 대부분의 NoSQL 시스템은 분산 데이터베이스를 지원하여 확장성과 고가용성을 강조합니다.
  • NoSQL은 ACID 트랜잭션을 지원하지 않는 경우도 있으며, BASE (Basically Available, Soft state, Eventually consistent) 모델을 채택하여 유연성과 성능을 극대화합니다.

Key-Value 타입

  • 속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장
  • 여기서 Key는 속성 이름을 뜻하고, Value는 속성에 연결된 데이터 값을 의미
  • Redis, Dynamo 등이 대표적인 Key-Value 형식의 데이터베이스

문서형(Document) 데이터베이스

  • 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스를 의미
  • 많은 문서형 데이터베이스에서 JSON과 유사한 형식의 데이터를 문서화하여 저장
  • 각각의 문서는 하나의 속성에 대한 데이터를 가지고 있고, 컬렉션이라고 하는 그룹으로 묶어서 관리
  • 대표적인 문서형 데이터베이스에는 MongoDB

Wide-Column Store 데이터베이스

  • 데이터베이스의 열(column)에 대한 데이터를 집중적으로 관리하는 데이터베이스
  • 각 열에는 key-value 형식으로 데이터가 저장되고, 컬럼 패밀리(column families)라고 하는 열의 집합체 단위로 데이터를 처리
  • 하나의 행에 많은 열을 포함할 수 있어서 높은 유연성
  • 데이터 처리에 필요한 열을 유연하게 선택할 수 있다는 점에서 규모가 큰 데이터 분석에 주로 사용되는 데이터베이스 형식
  • 대표적인 wide-column 데이터베이스에는 Cassandra, HBase

그래프(Graph) 데이터베이스

  • 자료구조의 그래프와 비슷한 형식으로 데이터 간의 관계를 구성하는 데이터베이스
  • 노드(nodes)에 속성별(entities)로 데이터를 저장
  • 각 노드간 관계는 선(edge)으로 표현
  • 대표적인 그래프 데이터베이스에는 Neo4J, InfiniteGraph

📌 차이점

1. 데이터 모델

SQL: 테이블 형식의 데이터 모델을 사용하여 정형 데이터를 다룹니다.
NoSQL: 다양한 데이터 모델을 사용하여 정형 및 비정형 데이터를 다룹니다.

2. 스키마

SQL: 데이터 스키마는 미리 정의되어야 하며, 데이터의 구조가 변경되면 스키마를 수정해야 합니다.
NoSQL: 스키마가 유연하며, 데이터의 구조를 동적으로 변경할 수 있습니다.

3. 트랜잭션과 일관성

SQL: ACID 트랜잭션을 지원하여 데이터 일관성을 강조합니다.
NoSQL: 일부 NoSQL 시스템은 ACID를 지원하지 않으며, 일관성을 유지하기 위해 BASE 모델을 채택합니다.

4. 확장성

SQL: 수직적 확장(Vertical Scaling)으로 확장성을 갖춥니다.

  • 수직적 확장 : 단순히 데이터베이스 서버의 성능을 향상시키는 것 (ex. CPU 업그레이드)

NoSQL: 수평적 확장(Horizontal Scaling)으로 대용량 데이터를 처리하는 데 용이합니다.

  • 수평적 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨을 의미 (하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동)

5. 용도

SQL: 정형 데이터, 트랜잭션 처리에 적합합니다.
NoSQL: 대량 데이터, 실시간 분석, 유연한 데이터 구조가 필요한 경우에 적합합니다.


참고


피드백 및 개선점은 댓글을 통해 알려주세요😊

profile
배움을 글로 기록하는 개발자가 되겠습니다.
post-custom-banner

0개의 댓글