GitHub

https://github.com/Choidongjun0830

CS

4.4 데이터베이스의 종류

gogi masidda 2024. 9. 26. 15:21

'면접을 위한 CS 전공지식 노트' 책을 보며 공부한 내용입니다.

 

관계형 데이터베이스

  • RDBMS는 행과 열을 가지는 표 형식의 데이터를 저장한다.
  • SQL이라는 언어를 써서 조작한다.
  • 예시) MySQL, PostgreSQL, 오라클, SQL Server, MSSQL
    • 관계형 데이터베이스의 경우 표준 SQL을 지키기는 하지만, 각각의 제품에 특화된 SQL을 사용한다. 
    • 오라클은 PL/SQL, MySQL은 SQL
  • MySQL
    • 대부분의 OS와 호환된다. 현재 가장 많이 사용된다
    • 쓰레드 기반의 메모리 할당 시스템. 매우 빠른 조인, 최대 64개의 인덱스를 제공한다.
    • 대용량 DB를 위해서 설계되어 있고, 롤백, 커밋, 이중 암호 지원 보안 등의 기능을 제공한다.
    • MySQL의 스토리지 엔진 아키텍쳐
    •  
    • DB의 심장과도 같은 역할을 하는게 스토리지 엔진이다.
    • 모듈식 아키텍쳐로 쉽게 스토리지 엔진을 바꿀 수 있다. 
    • 데이터 웨어하우징, 트랜잭션 처리, 고가용성 처리에 강점이 있다.
    • 스토리지 엔진 위에는 커넥터 API 및 서비스 계층을 통해 MySQL DB와 쉽게 상호작용 가능하다. 
    • 쿼리 캐시를 지원해서 입력한 쿼리 문에 대한 전체 결과 집합을 저장한다.
      • => 사용자가 작성한 쿼리가 캐시에 있는 쿼리와 동일하면 서버는 단순히 구문 분석, 최적화 및 실행을 건너뛰고 캐시의 출력만 표시한다. 
  • PostgreSQL
    • MySQL 다음으로 선호한다.
    • 디스크 조각이 차지하는 영역을 회수할 수 있는 장치인 VACUUM이 특징이다. 
    • 지정 시간에 복구하는 기능, 로깅, 접근 제어, 중첩된 트랜잭션, 백업 등이 가능하다.

 

NoSQL 데이터베이스

NoSQL(Not Only SQL): SQL을 사용하지 않는 DB. MongoDB와 redis 등이 있다.

  • MongoDB
    • JSON을 통해 데이터에 접근한다. Binary JSON(BSON) 형태로 데이터를 저장한다.
    • 확장성이 높고 빅데이터를 저장 시에 좋고 고가용성과 샤딩, 레플리카셋을 지원한다.
    • 트랜잭션은 지원하지 않음.
    • 스키마를 정해두지 않고 데이터 삽입이 가능하다.
    • 또한 도큐먼트를 생성할 때마다 다른 컬렉션에서 중복된 값을  지니기 힘든 유니크한 값인 Object ID를 생성한다.
      • 타임 스탬프(4byte), 랜덤 값(5byte), 카운터(3byte)
  • redis
    • 기본적으로 데이터 타입은 문자열이다. 최대 512MB까지 저장한다. 이외에 set, 해시 등을 지원한다.
    • pub/sub을 통한 채팅 시스템, 다른 DB 앞에 두어 캐싱 계층, 단순한 키-값이 필요한 세션 정보 관리, sorted set 자료 구조를 이용한 실시간 순위표 서비스에 사용한다.

 

고가용성: 시스템이나 서비스가 장기간 중단없이 지속적으로 운영될 수 있는 능력

샤딩(Sharding): 대규모 데이터베이스 시스템에서 데이터를 여러개의 작은 단위(샤드)로 나누어 분산 저장하는 기술이다. 주로 대규모 트래픽이나 데이터를 처리하는 시스템에서 데이터베이스의 성능을 향상시키고 확장성을 높이기 위해 사용된다.
데이터베이스 테이블을 수평적으로 분할하여 여러 서버에 분산 저장하는 방식. (대규모 사용자 데이터를 샤딩할 때, 사용자 ID를 기준으로 나누어 사용자의 일부는 샤드1에, 나머지는 샤드2에 저장 가능) 

 

728x90

'CS' 카테고리의 다른 글

4.6 조인의 종류  (1) 2024.09.28
4.5 인덱스  (0) 2024.09.27
4.3 트랜잭션과 무결성  (0) 2024.09.24
4.2 ER Diagram과 정규화 과정  (6) 2024.09.22
4.1 데이터베이스의 기본  (1) 2024.09.20