본문 바로가기
카테고리 없음

[ Database ] SQL vs NoSQL

by ウリ김영은 2024. 2. 27.

SQL이란?

데이터를 쿼리하고 관리하는 데 사용되는 도메인 고유의 언어입니다.

사용자가 관계형 데이터베이스에서 레코드(데이터)를 쿼리, 삽입, 삭제, 업데이트할 수 있도록 작동합니다.

SQL을 사용하면 트랜잭션과 같은 저장 함수 또는 뷰와 같은 내장 프로시저를 사용하여 복잡한 로직을 적용할 수 있습니다.

  1. 왜 NoSQL 데이터베이스를 사용할까?

NoSQL은 유연성과 확장성이 뛰어나기 때문에 많은 경우 SQL보다 선호됩니다. 주요 이점은 개발자가 기본 관계형 데이터베이스의 오버헤드 없이 데이터를 빠르고 쉽게 저장하고 액세스할 수 있다는 것입니다. 따라서 개발팀은 기본 데이터 스토리지 구현에 대한 걱정 없이 기능 및 코어 비즈니스 로직을 더 빠르게 제공하는 데 집중할 수 있습니다.

둘 중 더 좋고 나쁜것이 있기 보다는,

프로젝트의 특정 요구 사항과 필요에 따라 선택해야 합니다.

3. SQL 데이터베이스 vs NoSQL 데이터베이스

https://www.integrate.io/ko/blog/the-sql-vs-nosql-difference-ko/

위의 표를 좀 더 풀어서 이야기해보겠습니다.

3-1. 데이터베이스 아키텍처

위 표의 둘의 가장 큰 차이점은 데이터베이스가 관계형이냐 비관계형이냐 입니다.

그렇다면 관계형 데이터베이스는 뭐고, 비관계형 데이터베이스는 무엇일까요?

3-1-1. 관계형 데이터베이스란?

RDMBS (관계형 데이터베이스 관리 시스템)라고도 합니다.

SQL(구조화 쿼리 언어)를 사용하여 데이터를 저장하고 검색합니다.

데이터를 행과 테이블에 각각 저장합니다.

테이블의 데이터 행에 할당하는 고유 식별자인 키로 다양한 테이블의 정보를 연결합니다.

기본 키와 외부 키는 이 프로세스를 용이하게 합니다.

3-1-2. 비관계형 데이터베이스란?

관계형 데이터베이스보다 더 유연하며 반드시 SQL과 같은 엄격한 구조가 필요하지 않습니다.

데이터를 저장할 때 행, 테이블, 키가 포함되지 않습니다.

저장하는 데이터 유형에 따라 스토리지 모델을 사용합니다.

3-2. 데이터베이스 스키마 및 쿼리 언어

사용하기 전에 사전 정의된 스키마를 사용하여 데이터 구조를 결정해야 합니다.

모든 데이터는 동일한 구조를 따라야 합니다.

데이터 구조를 변경하려는 경우 이를 수행하는 것이 쉽지 않을 뿐만 아니라 전체 시스템을 중단해야 합니다.

비정형 데이터에 대한 동적 스키마가 있으며 데이터가 다양한 방식으로 저장됩니다.

컬럼 지향, 문서 지향, 그래프 기반, KeyValue 저장소를 사용할 수 있습니다.

이러한 유연성은

  • 구조를 정의하지 않고도 문서를 생성할 수 이 있습니다.

- 각 문서는 고유한 구조를 가질 수 있습니다.

- 구문은 데이터베이스마다 다를 수 있습니다.

- 사용하면서 필드를 추가할 수 있습니다.

3-3. 데이터베이스 확장

SQL 데이터베이스는 수직적으로 확장할 수 있습니다.

즉, CPU, RAM, SSD 용량을 추가하여 단일 서버의 부하를 늘릴 수 있습니다.

NoSQL 데이터베이스는 수평적으로 확장이 가능합니다.

수평 확장은 수직 확장보다 전체 용량이 더 크기 때문에 자주 변경되는 대규모 데이터 세트에 NoSQL 데이터베이스를 선택하는 것이 좋습니다.

예를 들어 이미지나 동영상과 같은 대용량 데이터 개체가 있는 경우 NoSQL 데이터베이스를 사용할 수 있습니다.

3-4. 데이터 구조

SQL 데이터베이스는 테이블 기반입니다.

데이터 레코드의 각 필드는 테이블 열과 동일한 이름을 갖습니다. 이는 여러 데이터 변환을 수행할 때 유용합니다.

NoSQL 데이터베이스는 문서, 키-값, 그래프, 와이드 칼럼 스토어입니다. 더 유연합니다.

3-5. 사용 사례

SQL 데이터베이스 시스템

다음은 가장 많이 사용되는 SQL 데이터베이스 시스템입니다.

MySQL

  • 무료 및 오픈 소스
  • 대규모 커뮤니티, 광범위한 테스트, 강화된 안정성을 갖춘 확립된 데이터베이스
  • 모든 주요 플랫폼에서 사용 가능
  • 복제 및 샤딩 사용 가능
  • 광범위한 사용 사례 지원

Oracle

  • 빈번한 업데이트, 전문적인 관리 및 우수한 고객 지원이 포함된 상용 데이터베이스
  • SQL 언어가 사용되는 Procedural Language/SQL(PL/SQL)
  • 가장 비용이 많이 드는 데이터베이스 솔루션 중 하나
  • 대규모 데이터베이스에서 사용 가능
  • 간단한 업그레이드
  • 트랜잭션 제어
  • 모든 운영 체제와 호환
  • 워크로드가 까다로운 기업 및 조직에 적합

Microsoft SQL Server

  • Microsoft에서 개발 및 관리하는 상용 데이터베이스
  • SQL 언어가 사용되는 Transact SQL(T-SQL)
  • Windows 및 Linux에서만 사용 가능
  • 사용자 친화적
  • 오류 발견 시 중간에 조정이 어려움
  • 잘 작성된 문서
  • Oracle에 비용을 발생하지 않고 상용 데이터베이스 솔루션을 원하는 중소 규모 기업에 적합

PostgreSQL

  • 하이브리드 SQL/NoSQL 데이터베이스 솔루션을 의미하는 객체 지향 데이터베이스 관리 시스템
  • 무료 및 오픈 소스
  • 다양한 운영 체제와 호환
  • 활발한 커뮤니티 및 많은 제3자 서비스 제공업체
  • 높은 ACID 준수
  • 순전한 SQL 사용
  • 데이터가 관계형 모델에 맞지 않는 사용 사례에 가장 적합. 또한 대규모 데이터베이스 및 복잡한 쿼리 실행에 적합

더 읽어보기: 데이터 웨어하우스와 데이터베이스의 비교: 7가지 주요 차이점

NoSQL 데이터베이스 시스템

다음은 가장 많이 사용되는 몇 가지 NoSQL 데이터베이스 시스템입니다.

MongoDB

  • 가장 인기 있는 NoSQL 데이터베이스이며 그럴만한 이유가 있습니다.
  • 무료 사용
  • 동적 스키마
  • 수평 확장 가능
  • 간단한 쿼리로 뛰어난 성능 발휘
  • 기존 행이나 애플리케이션 성능에 영향을 주지 않고 새 열과 필드 추가
  • 급속한 성장 단계를 거치는 기업이나 비정형 데이터가 많은 기업에 가장 적합합니다.
  • 잘 알려지지 않은 MongoDB의 대안으로는 Apache Cassandra, Google Cloud BigTable, Apache HBase 등이 있습니다.

Cassandra

  • 커머디티 서버로 대량의 데이터 처리
  • 장애 지점이 없는 고가용성
  • 피어 투 피어(P2P) 아키텍처 준수
  • 확장 가능
  • 오픈 소스

결론

언제 SQL과 NoSQL을 사용해야 할까?

애플리케이션의 유형과 데이터 요구 사항에 따라 달라집니다. 확장성과 성능을 고려하는 것도 중요합니다.

SQL 데이터베이스는

- 데이터가 일관되고 테이블 간의 관계가 잘 정의된 구조화된 데이터에 적합

- 일반적으로 복잡한 쿼리 및 트랜잭션 관리가 필요한 어플리케이션에 적합

NoSQL 데이터베이스는

- 데이터가 미리 정의된 스키마를 따르지 않고 데이터 요소 간의 관계가 잘 정의되어 있지 않은 반정형 또는 비정형 데이터에 적합

- 웹 애플리케이션 및 모바일 앱과 같은 성능과 확장성이 필요한 어플리케이션에 적합

 

 

 

참조

https://www.integrate.io/ko/blog/the-sql-vs-nosql-difference-ko/