SQL과 NoSQL은 각각 언제 사용하면 좋을까?

smallcherry's techlog·2022년 7월 3일
0

SQL을 사용하는 게 좋은 케이스

1. 데이터베이스의 ACID 성질을 준수해야 하는 경우 (데이터 무결성이 어겨지는 상황이 시스템상 critical한 경우)

  • ACID 는 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durablitity(지속성)을 의미힌다.
  • 각 단어는 데이터베이스에 실행되는 하나의 트랜잭션에 의한 상태의 변화를 수행하는 과정에서, 안전성을 보장하기 위해 필요한 성질이다.
  • SQL을 사용하면 데이터베이스와 상호작용하는 방식을 정확하게 규정할 수 있기 때문에 데이터베이스에서 데이터를 처리할 때 발생할 수 있는 예외적인 상황을 줄이고, 데이터베이스의 무결성을 보장할 수 있다.
  • 전자상거래를 비롯한 모든 금융서비스를 위한 소프트웨어 개발에서는 반드시 데이터베이스의 ACID 성질을 준수해야한다
  • 이러한 경우 일반적으로 SQL을 이용한 관계형 데이터베이스를 사용한다.

2. SW에 사용되는 데이터가 구조적이고 일관적인 경우 (다양한 데이터 유형과 높은 트래픽을 지원하도록 설계된 NoSQL을 사용할 이유가 없음)

  • 소프트웨어 프로젝트의 규모가 많은 서버를 필요로하지 않고 일관된 데이터를 사용하는 경우, 관계형 데이터베이스를 사용하는 경우가 많다.
  • 다양한 데이터유형과 높은 트래픽을 지원하도록 설계된 NoSQL 데이터베이스를 사용해야만 하는 이유가 없기 때문이다.

NoSQL을 사용하는 게 좋은 케이스

1. 데이터의 구조가 거의 없는 대용량의 데이터를 저장하는 경우

  • 대부분의 NoSQL 데이터베이스는 저장할 수 있는 데이터의 유형에 제한이 없다.
  • 필요에 따라 언제든지 데이터의 새 유형을 추가할 수 있다.
  • 소프트웨어 개발에 정형화되지 않은 많은 양의 데이터가 필요한 경우, NoSQL을 적용하는 것이 더 효율적일 수 있다.

2. 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우

  • 클라우드 기반으로 데이터베이스 저장소를 구축하면, 저렴한 비용의 솔루션을 제공받을 수 있다.
  • 소프트웨어에 데이터베이스의 확장성이 중요하다면, 별다른 번거로움 없이 확장할 수 있는 NoSQL 데이터베이스를 사용하는 것이 좋다.

3. 빠르게 서비스를 구축하는 과정에서 데이터 구조를 자주 업데이트 하는 경우

  • NoSQL 데이터베이스의 경우 스키마를 미리 준비할 필요가 없기 때문에 빠르게 개발하는 과정에 매우 유리하다
  • 시장에 빠르게 프로토타입을 출시해야하는 경우가 이에 해당한다.
  • 또한 소프트웨어 버전 별로 많은 다운타임(데이터베이스 서버를 오프라인으로 전환하여 데이터처리를 진행하는 작업시간) 없이 데이터 구조를 자주 업데이트 해야하는 경우, 스키마를 매번 수정해야하는 관계형 데이터베이스보다 NoSQL이 더 적합하다.

그래서 드럼빵(실시간 드럼연습실 예약 시스템)은?

SQL#1

데이터베이스의 ACID 성질을 준수해야 하는 경우 (데이터 무결성이 어겨지는 상황이 시스템상 critical한 경우)
⭕, 금융 서비스를 위한 SW의 경우가 이 예시라면, 예약서비스도 데이터의 무결성이 시스템상 매우 중요하다.

SQL#2

SW에 사용되는 데이터가 구조적이고 일관적인 경우 (다양한 데이터 유형과 높은 트래픽을 지원하도록 설계된 NoSQL을 사용할 이유가 없음)
⭕, 예약 시스템 특성상 데이터의 구조가 변화할 일은 거의 없다.

NoSQL#1

데이터의 구조가 거의 없는 대용량의 데이터를 저장하는 경우

NoSQL#2

클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우
❌, 클라우드 기반이긴 하나, 그렇게 대용량도 아니고 그렇게 활용할 필요도 없다.

NoSQL#3

빠르게 서비스를 구축하는 과정에서 데이터 구조를 자주 업데이트 하는 경우
❌, 한번 잘 정하고 나면 속성들이 거의 바뀌지 않는다.

결론

인스타그램조차 초반에는 PostgreSQL을 사용하다가 트래픽 증가로 graphDB로 사용을 전환했다고하니, 그정도 대용량이 아니고 데이터 무결성도 중요한 프로그램이니 SQL을 사용하는게 합리적이라는 결론이다.

References

https://hanamon.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-sql-vs-nosql/

https://www.youtube.com/watch?v=Q_9cFgzZr8Q&t=344s&ab_channel=%EB%85%B8%EB%A7%88%EB%93%9C%EC%BD%94%EB%8D%94NomadCoders

profile
Java Developer

0개의 댓글