본문 바로가기
CodeStatesBootCamp/Review

Section 2 - Unit 6 : 관계형 데이터베이스 Review

by JKROH 2023. 3. 28.
반응형
Review 에서는 학습한 내용을 다시금 기록합니다.
Unit Review는 학습한 내용 중 기존에 알고 있었지만 정확하게 이해하지 못하던 정보와 새롭게 알게된 정보를 기록합니다. 추가적인 설명을 요하는 부분은 댓글로 남겨주세요.
Section Review는 전반적인 Section을 되돌아보고 학습했던 시간과 과정, 내용을 총괄하여 기록합니다.

SQL

* SQL vs NoSQL

- SQL 기반 DB와 NoSQL DB의 차이점

  • 데이터 저장
    • NoSQL은 DB는 key-value, document, wide-column, graph 등의 방식으로 데이터를 저장한다.
    • 관계형 DB는 SQL을 이용해서 데이터를 테이블에 저장한다. 미리 작성된 스키마를 기반으로 정해진 형식에 맞게 데이터를 저장해야 한다.
  • 스키마
    • SQL을 사용하려면, 고정된 형식의 스키마가 필요하다. 다시 말해, 처리하려는 데이터 속성 별로 칼럼에 대한 정보를 미리 정해두어야 한다. 스키마는 나중에 변경할 수 있지만, 이 경우 DB 전체를 수정하거나 오프라인(down-time)으로 전환할 필요가 있다.
    • NoSQL은 관계형 데이터베이스보다 동적으로 스키마의 형태를 관리할 수 있다. 엔티티를 추가할 때 즉시 새로운 칼럼을 추가할 수 있고, 개별 엔티티에 대해서 모든 열에 대한 데이터를 반드시 입력하지 않아도 된다.
  • 쿼리
    • 관계형 DB는 테이블의 형식과 테이블 간의 관계에 맞춰 데이터를 요청해야 한다. 따라서 정보를 요청할 때, SQL과 같이 구조화된 쿼리 언어를 사용한다.
    • 비관계형 DB의 쿼리는 데이터 그룹 자체를 조회하는 것에 초점을 두고 있다. 그래서 구조화 되지 않은 쿼리 언어로도 데이터 요청이 가능하다. UnQL(UnStructured Query Language)이라고 말하기도 한다.
  • 확장성
    • 일반적으로 SQL 기반의 관계형 DB는 수직적으로 확장한다. 높은 메모리, CPU를 사용하는 확장이라고도 한다. DB가 구축된 하드웨어의 성능을 많이 이용하기 때문에 비용이 많이 발생한다. 여러 서버에 걸쳐서 DB의 관계를 정의할 수 있지만, 매우 복잡하고 시간이 많이 소모된다.
    • NoSQL로 구성된 DB는 수평적으로 확장한다. 보다 값싼 서버 증설, 또는 클라우드 서비스 이용하는 확장이라고도 한다. NoSQL DB를 위한 서버를 추가적으로 구축하면, 많은 트래픽을 보다 편리하게 처리할 수 있다. 그리고 저렴한 범용 하드웨어나 클라우드 기반의 인스턴스에 NoSQL 데이터베이스를 호스팅할 수 있어서, 수직적 확장보다 상대적으로 비용이 저렴하다.

- 그래서 어떤 DB를 사용해야 할까?

  • 완벽한 정답은 없다. 따라서 많은 개발자들이 요구사항을 충족시키기 위해 관계형, 비관계형 DB를 모두 사용하여 서비스에 맞게 설계하고 있다.
  • 비관계형 DB가 일반적으로는 확장성과 속도면에서 뛰어나나 잘 설계된 관계형 DB가 더 좋은 성능을 보일 수도 있다.

- 관계형 DB를 사용하면 더 좋은 경우

  • DB의 ACID 성질을 준수해야 하는 경우에 사용하면 좋다.
    • 트랜잭션을 수행하는 과정에서 DB의 안정성을 보장해야 한다면, 관계형 DB를 사용하는 것이 좋다.
    • SQL을 사용하면 DB와의 상호 작용 방식을 명확하게 규정하기 때문에, DB를 다루는 과정에서 발생 가능한 오류를 줄이고 무결성을 보장할 수 있다.
    • 예를 들어, 전자 상거래를 비롯한 금융 서비스를 위한 소프트웨어를 개발할 때는 반드시 ACID를 준수해야 한다.
  • 소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우에 사용하면 좋다.
    • 소프트웨어 자체가 작아서 많은 서버를 유지하지 않고 일관된 데이터를 사용하면 관계형 DB를 사용하는 것이 좋다.
    • NoSQL은 안정성을 보장하지 않는 대신 빠르고 확장성이 높은 것이 장점인데, 프로젝트 규모가 작으면 이런 장점보다는 단점이 더욱 부각될 것이다.

- 비관계형 DB를 사용하면 더 좋은 경우

  • 데이터의 구조가 전혀 없거나 크게 정해지지 않은 대용량의 데이터를 저장하는 경우에 사용하면 좋다.
    • 대부분의 비관계형 DB는 저장하는 데이터 유형을 제한하지 않는다. 소프트웨어를 개발하는 과정에서 정형화되지 않은 많은 양의 데이터가 필요한 경우에는 비관계형 DB를 적용하는 것이 더 효율적일 수 있다.
  • 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우에 사용하면 좋다.
    • 클라우드 서버를 사용할 때, 비관계형 DB를 사용하면 관계형 DB를 사용할 때보다 저렴한 비용으로 이용이 가능하다.
  • 소프트웨어 업데이트 과정에서 데이터 구조도 함께 업데이트 되는 경우가 잦을 때 사용하면 좋다.
    • 소프트웨어의 프로토타입을 출시할 때와 같이 소프트웨어의 업데이트가 빈번히 발생할 때가 있다. 이럴 때는 데이터 구조도 함께 변경될 가능성이 높다.
    • 비관계형 DB는 데이터 구조를 자유롭게 변경할 수 있어 변화에 유연하게 대처가 가능하다. 소프트웨어를 업데이트 할 때마다 스키마를 새롭게 작성할 필요도 없다.
반응형

댓글