And Brain said,

데이터베이스야, 이리오너라! [Database, DB] 본문

IT/Database

데이터베이스야, 이리오너라! [Database, DB]

The Man 2022. 7. 26. 00:36
반응형

데이터베이스(Database, DB)


  • 정의 : 데이터의 저장소(집합)

1.1 데이터베이스의 역할

  • 데이터와 응용프로그램의 중간에서 응용프로그램이 요구하는대로 데이터를 조작하고 관리하는 소프트웨어
  • 사용자 데이터 요구의 실시간 응답, 최신 데이터 유지, 여러 사용자가 동시 이용


1.2 데이터베이스 현황

July 2022

  • DB-ENGINES는 매월 인기도에 따라 데이터베이스 관리 시스템의 순위를 공개한다
  • 약 350여개의 상용, 오픈소스 DBMS가 존재

2.1.1 관계형 데이터베이스의 특징

  • SQL 작업 수행시점에 Replication, Locking 및 Consistency에 대한 확인이 필요
  • 데이터 일관성을 위하여 처리성능이 느려 성능의 병목현상이 발생할 수 있음

2.1.2 관계형 데이터베이스의 장점

  • 데이터의 일관성을 보증할 수 있음  -  데이터 처리 시 일어나는 트랜잭션의 불일치가 발생하지 않음
  • 정규화를 기반으로 하고 있어 데이터 삽입 및 갱신 시 비용이 적게 듦  -  정규화는 데이터베이스 설계 시 불필요한 중복을 줄일 수 있음
  • Join이나 복잡한 검색 조건으로 검색이 가능함
  • 성숙된 기술로 참고자료나 노하우가 많음

2.1.3 관계형 데이터베이스의 단점

  • 대용량 데이터 입력처리의 성능
  • 갱신이 발생한 테이블의 인덱스 생성이나 스키마 변경
  • 칼럼을 확정하기 어려운 경우의 이용
  • 단순히 빨리 결과를 내놓아야 할 때

2.2.1 NoSQL(Not Only SQL) 데이터베이스 특징

  • 관계형 데이터베이스 필요할 땐 관계형 데이터베이스를 사용하고, 그렇지 않으면 관계형 데이터베이스에 얽매이지 않는 일정 용도를 위한 데이터 저장소
  • 데이터 분산이 용이  -  NoSQL은 처음부터 Join이 불가능하며, 각 데이터가 독립적으로 설계돼있어 데이터를 여러 서버에 분산시키는 것이 용이, 데이터를 여러 서버에 분산하는 것을 통해, 각 서버에서 다루는 데이터 양이 줄고 따라서 대용량 데이터의 입력이 있어도 처리가 쉬워진다. 또한, 출력에 있어서도 쉬운 처리를 지원한다.

2.2.2 NoSQL 데이터베이스 유형

  • Document Store : 데이터 및 메타 데이터를 데이터베이스 내 JSON 기반 문서에 계층적 저장
  • Key-Value Store : Key-Value 쌍의 컬렉션으로 저장
  • Wide-Column Store : 관련 데이터는 단일 열에 중첩 키/값의 집합으로 저장
  • Graph Store : 그래프 구조에 노드, 에지 및 데이터 속성으로 저장

3.1 RDBMS 아키텍처 - Oracle

  • 인스턴스, 데이터베이스 구성
  • 데이터베이스 기동과 종료를 위한 환경 정보와 제어를 위한 프로세스

[1]. Memory 영역

  • 오라클 서버가 메모리에 할당되어 실제 데이터가 입출력에 필요한 작업을 수행하는 영역
  • Library Cache : SQL과 실행계획 등이 저장
  • Data Dictionary Cache : 구문분석이나 실행계획을 세울 때 사용하는 사전들이 캐시되어진 공간
  • DB Buffer Cache : 데이터 조회/변경 등 실제 작업이 일어나는 공간
  • Log Buffer : 변경 내용을 기록하는 메모리 공간

[2]. Process 영역

  • SQL 문을 처리하는 프로세스로 오라클 Client 에게 직접서비스를 수행하는 프로세스
  • DBWR : 데이터 파일로 저장
  • LGWR : 리두로그 버퍼 내용을 파일로 저장
  • PMON : 모든 서버 프로세스 감시
  • SMON : 인스턴스를 복구하며 관리
  • CKPT : DBWR 에게 checkpoint 신호 전달

[3]. Data File 영역

  • 데이터 및 관련 로그가 실제 디스크로 저장
  • Data files : 데이터를 저장하는 공간
  • Control Files : DB 환경정보와 같은 운영 정보
  • Redo log Files : 변경 내용을 기록하는 파일
  • Archived Log Files : 과거 변경 내용 기록 파일

3.2 RDBMS 아키텍처 - MySQL

[1]. Client 영역

  • MySQL Server 접근하기 위해 application에서 설치하여 사용할 수 있는 모듈(드라이버)를 통해 서버와 통신

[2]. Instance 영역

  • Client로 부터 들어온 쿼리를 분석하여 최적화하여 실행계획을 만들고, 필요한 경우 메모리에 cache 하는 기능
  • SQL Interface : DML, DDL 등 지원을 위한 인터페이스
  • Parser/Optimizer : SQL 권한을 확인하고, SQL 문을 데이터베이스 내부 언어로 변환하고, 수행경로를 분석하는 등 SQL 실행을 위한 준비 작업
  • Caches & Buffers : 인덱스나 데이터를 빠르게 접근하기 위해 메모리에 저장하는 영역

[3]. Storage Engines 영역

  • 데이터를 저장하고 추출하는 역할을 수행하며, 다양한 스토리지 엔진이 있음
  • MylSAM : dictionary database 스토리지 엔진
  • InnoDB : 트랜지션을 지원하는 스토리지 엔진으로 index 및 row level locking을 지원하고 백업/자동 복구, 데이터와 인덱스의 메모리 캐싱 기능
  • NDB (Cluster DB) : 트랜잭션을 지원하고, 모든 테이블과 인덱스가 메모리에 존재해야 하는 스토리지 엔진

3.3 RDBMS 아키텍처 - PostgreSQL

[1]. Server Process 영역

  • Postmaster : 서버를 기동 및 중지하는 필수 프로세스
  • Postgres Server : 데이터베이스 파일 관리, SQL 전달 및 결과 추출 역할 및 Storage Manager/Utility Process 호출

[2]. System Memory 영역

  • Shared Buffer : 데이터와 데이터의 변경 사항 캐싱
  • WAL Buffer(Write Ahead Log) : 세션이 수행한 트랜잭션의 변경 로그 캐싱
  • CLOG Buffer(Commit Log) : 트랜잭션 상태 정보를 가지고, Commit 여부 캐싱
  • Lock Space : 인스턴스가 사용하는 모든 Lock 정보 관리

[3]. Utility Process 영역

  • BG Writer : Shared Buffer 에 변경된 버퍼를 디스크에 기록
  • WAL Writer : Commit 된 데이터를 WAL Files 저장
  • Archiver : 트랜잭션 로그 아카이빙
  • Autovacuum Lancher : Unused Memory 해소, 통계정보 갱신, 데이터 손실 예방
  • Sys Logger : 모든 프로세스 정보 기록

3.4 MongoDB 아키텍쳐 및 샤딩(Sharding)

  • Scale Out(수평확장)을 통한 데이터를 여러 서버에 분산해서 저장하고 처리할 수 있도록 하는 기술
  • 복제(Replication)은 고가용성 관점, 샤딩(Sharding)은 대용량 분산 처리 관점
  • Config 서버는 3개의 노드가 별도로 필요하며, 이 Config 노드는 다른 노드들과 별도 물리적으로 구성

[1]. Config Server

  • 샤드 서버에 저장된 사용자 데이터가 분산되어 있는 메타 정보를 관리

[2]. Router

  • 라우터는 사용자의 쿼리 요청을 어떤 샤드로 전달할지 정하고, 각 샤드로부터 받은 결과 데이터를 병합해서 사용자에게 되돌려주는 역할
  • 각 샤드가 균등하게 데이터를 가지고 있는지 모니터링하면서 데이터 밸런싱

[3]. Shard Server

  • 실제 사용자의 데이터를 저장

참고 :

https://hongong.hanbit.co.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-databasedb-dbms-sql%EC%9D%98-%EA%B0%9C%EB%85%90/

 

[데이터베이스 이해하기] Database(DB), DBMS, SQL의 개념

데이터베이스(Database, DB)란? : 데이터의 저장소. DBMS(Database Management System, 데이터베이스 관리 시스템)란? 데이터베이스를 운영하고 관리하는 소프트웨어. 계층형, 망형, 관계형 DBMS 중 대부분의 DBM

hongong.hanbit.co.kr

https://db-engines.com/en/ranking_trend

 

historical trend of the popularity ranking of database management systems

 

db-engines.com

https://dev.mysql.com/doc/refman/8.0/en/pluggable-storage-overview.html

 

MySQL :: MySQL 8.0 Reference Manual :: 16.11 Overview of MySQL Storage Engine Architecture

16.11 Overview of MySQL Storage Engine Architecture The MySQL pluggable storage engine architecture enables a database professional to select a specialized storage engine for a particular application need while being completely shielded from the need to m

dev.mysql.com

https://blog.goodusdata.com/12

 

[DB기술노트82회] PostgreSQL 9.6 (Backup & Recovery)

1. 문서 개요 요즘 Mysql, Maria, PostgreSQL등 오픈소스DB들이 큰 인기를 얻고 있습니다. 이전부터 오픈소스DB는 존재하였지만, 속도가 느릴 것이다, 안정적이지 못할 것이다, 신뢰할 수 없다 라는 생각

blog.goodusdata.com

https://blog.optimal.io/sharding-in-mongodb/

 

Sharding in MongoDB

Sharding, can also be called horizontal scaling. The scaling approach divides the data set and distributes the data over multiple servers. Each of this server can be called a shard. Each shard is an independent database, and collectively, the shards make

blog.optimal.io

 

반응형
Comments