SQL, NoSQL

박영준·2023년 6월 26일
0

DB

목록 보기
19/41

SQL (관계형 DB)

1. 정의

  • 테이블 형태의 관계형 DataBase에서 쓰이는 언어

  • 스키마도 없고, 관계도 없다!

  • 정해진 스키마를 따르지 않으면, 데이터 추가가 불가능

  • 데이터 저장 방식으로 인해 SQL 데이터베이스는 일반적으로 수직적 확장만 지원함

  • 이미 정해진 칸에 데이터를 넣음 = '엑셀'

2. 장단점

장점

  1. 명확하게 정의된 스키마, 데이터 무결성 보장

  2. 관계는 각 데이터를 중복없이 한 번만 저장

  3. 실수 확률 ↓

이런 장점 덕에 대기업에서 주로 사용

단점

  1. 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)

  2. 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음

  3. 대체로 수직적 확장만 가능함

NoSQL (비관계형 DB)

1. 정의

  • 관계형 데이터베이스 X

  • JSON 형태에 정보를 저장

  • 불러올 때도 SQL 쿼리가 아니라, ORM과 같은 방식으로 불러와 사용

  • NoSQL에서는 레코드를 문서(documents)라고 부른다.

  • 다른 구조의 데이터를 같은 컬렉션에 추가가 가능

  • Orders, Users, Products 테이블이 있다고 가정할 때, NoSQL에서는 Orders에 한꺼번에 포함해서 저장하게 된다.
    → 따라서 여러 테이블에 JOIN 할 필요없이, 이미 필요한 모든 것을 갖춘 문서를 작성
    (NoSQL에는 조인이라는 개념이 존재하지 않음)
    → 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 NoSQL을 쓰면 상당히 효율적
    → 컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 정확하게 산출하도록 한다.
    하지만 이러면 데이터가 중복되어 서로 영향을 줄 위험이 있기 때문

  • 수평적 확장은 NoSQL 데이터베이스에서만 가능

  • 정형화된 틀이 있는 게 X

    • A 사람 : 이름, 전화번호 정보 저장
    • B 사람 : 이름, 나이, 전화번호 정보 저장
    • ...

2. 장단점

장점

  1. 스키마가 없어서 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능

  2. 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터 읽어오는 속도 빨라짐

  3. 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능

이런 장점 덕에 스타트업에서 주로 사용

단점

  1. 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음

  2. 데이터 중복을 계속 업데이트 해야 함

  3. 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)

Scaling

  • 두 데이터베이스를 비교할 때 중요한 개념
  • 데이터베이스 서버의 확장성 : '수직적' 확장, '수평적' 확장
    • 수직적 확장
      • 단순히 데이터베이스 서버의 성능을 향상시키는 것
      • 예시 : CPU 업그레이드
    • 수평적 확장
      • 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨을 의미
      • 하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동
profile
개발자로 거듭나기!

0개의 댓글