Study/TIL(Today I Learned)

24.07.09 CS

에린_1 2024. 7. 9. 22:58
728x90

CS

SQL과 NOSQL의 차이

SQL 장점

  • 명확하게 정의된 스키마, 데이터 무결성 보장한다.
  • 관계는 각 데이터를 중복 없이 한번만 저장한다.

SQL 단점

  • 덜 유연하다. 데이터 스키마를 사전에 계획하고 알려야 한다.
  • 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있다.
  • 대체로 수직적 확장만 가능하다.

NoSQL 장점

  • 스키마가 없어서 유연하다. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능하다.
  • 데이터는 애플리케이션이 필요로 하는 형식으로 저장된다. 데이터 읽어오는 속도 빨라진다.
  • 수직 및 수평 확장이 가능해서 애플리케이션이 발생 시키는 모든 읽기/쓰기 요청 처리 가능하다.

NoSQL 단점

  • 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있다
  • 데이터 중복을 계속 업데이트 해야 한다
  • 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 한다 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능하다.)

SQL 데이터베이스 사용이 더 좋을 때

  • 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우
    • NoSQL에서는 여러 컬렉션을 모두 수정해야 하기 때문에 비효율적이다.
  • 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우

NoSQL 데이터베이스 사용이 더 좋을 때

  • 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우
  • 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
  • 데이터베이스를 수평으로 확장해야 하는 경우 (막대한 양의 데이터를 다뤄야 하는 경우)

Anomaly

  • 정규화를 해야하는 이유는 잘못된 테이블 설계로 인해 Anomaly(이상 현상)가 나타나기 때문이다.
  1. 삽입 이상(Insertion Anomaly)
    • 불필요한 데이터를 추가해야지, 삽입할 수 있는 상황
  2. 갱신 이상(Update Anomaly)
    • 일부만 변경하여, 데이터가 불일치 하는 모순의 문제
  3. 삭제 이상(Deletion Anomaly)
    • 튜플 삭제로 인해 꼭 필요한 데이터까지 함께 삭제되는 문제

Index

DB Index

  1. 목적
    • RDBMS에서 검색 속도를 높이기 위한 기술
    • Table의 Column을 색인화 한다.(따로 파일로 저장한다)
  2. 과정
    • Table을 생성하면, MYD, MYI, FRM 3개의 파일이 생성된다.
      • FRM : 테이블 구조가 저장되어 있는 파일이다.
      • MYD : 실제 데이터가 있는 파일이다.
      • MYI : Index 정보가 들어가 있는 파일이다.
    • Index를 사용하지 않는 경우, MYI 파일은 비어져 있다. 그러나, 인덱싱하는 경우 MYI 파일이 생성된다.
    • 이후에 사용자가 Select 쿼리로 Index를 사용하는 Column을 탐색 시, MYI 파일의 내용을 검색한다.
  3. 단점
    • Index 생성시, .mdb 파일 크기가 증가한다.
    • 한 페이지를 동시에 수정할 수 있는 병행성이 줄어든다.
    • 인덱스 된 Field에서 Data를 업데이트하거나, Record를 추가 또는 삭제시 성능이 떨어진다.
    • 데이터 변경이 자주 일어나는 경우, Index를 재작성해야 하므로, 성능에 영향을 미친다.
  4. 상황 분석
    • 사용하면 좋은 경우
      1. Where절에서 자주 사용되는 Column
      2. 외래키가 사용되는 Column
      3. Join에 자주 사용되는 Column
    • Index 사용을 피해야 하는 경우
      1. Data 중복도가 높은 Column
      2. DML이 자주 일어나는 Column
  5. DML이 일어났을 때의 상황
    • INSERT
      • 기존 Block에 여유가 없을 때, 새로운 Data가 입력된다.
    • DELETE
      • Table에서 data가 delete 되는 경우 : Data가 지워지고, 다른 Data가 그 공간을 사용 가능하다.
      • Index에서 Data가 delete 되는 경우 : Data가 지워지지 않고, 사용 안 됨 표시만 해둔다.
        • Table의 Data 수와 Index의 Data수가 다를 수 있다.
    • UPDATE
      • Table에서 update가 발생하면 -> Index는 Update 할 수 없다.
      • Index에서는 Delete가 발생한 후, 새로운 작업의 Insert 작업 / 2배의 작업이 소요되어, 힘들다.
728x90

'Study > TIL(Today I Learned)' 카테고리의 다른 글

Database - DB 트랜잭션(Transaction)  (0) 2024.07.10
24.07.10 CS  (0) 2024.07.10
24.07.08 CS  (0) 2024.07.08
24.07.05 CS  (0) 2024.07.05
24.07.04 합격,CS  (0) 2024.07.04