Database

Database/SQL

[MySQL] 테이블 종류, 표준 SQL

MySQL의 테이블의 종류MySQL에서 사용하는 테이블의 종류에는 크게 세 가지 주요 유형이 있음. (MyISAM, InnoDB, Memory)이 테이블 스토리지 엔진들은 각기 다른 성능 특성과 기능을 가지고 있음.사용하는 어플리케이션의 요구 사항에 따라 적절한 엔진을 선택할 수 있음. 1. MyISAM1.1 구조MyISAM은 MySQL의 기본 테이블 유형 중 하나였음.특히 읽기 위주의 작업에서 높은 성능을 제공함.각 MyISAM 테이블은 세 개의 파일로 구성되어 있음.데이터 파일, 인덱스 파일, 그리고 테이블 메타데이터를 저장하는 프라그먼트 파일임. 1.2 특징테이블 단위의 락을 사용함.즉, 하나의 쿼리가 테이블을 사용 중이면 다른 쓰기 작업은 대기 상태가 됨.트랜잭션을 지원하지 않음.외래 키를 지원하..

Database/SQL

[MySQL] Transactional Outbox Pattern, 비동기 통신

Transactional Outbox PatternTransactional Outbox 패턴은 분산 시스템에서 일관성을 유지하며 메시지를 안전하게 처리하고 전달하는 방법을 제공함.이 패턴은 특히 마이크로서비스 아키텍처에서 자주 사용됨.서비스 간의 이벤트 기반 통신을 위해 설계됨.이 패턴의 주요 목적은 데이터베이스 트랜잭션과 메시지 발송을 원자적으로 연결하여 데이터 일관성과 메시지 전달을 보장하는 것임. Transactional Outbox Pattern 개념1. 기본 개념어플리케이션은 데이터베이스에 데이터를 변경하는 동시에, 같은 데이터베이스 트랜잭션 내에서 outbox 테이블에 메시지를 저장함.이 테이블은 메시지 큐 또는 다른 서비스로 전달될 이벤트를 임시 저장하는 역할을 함. 2. 작동 방식데이터베이..

Database/SQL

[MySQL] 인덱스 유형 종류

MySQL 인덱스 유형 종류MySQL은 데이터 검색 속도를 향상시키고 쿼리의 성능을 최적화하기 위해 여러 유형의 인덱스를 제공함.각 인덱스 유형은 특정 작업에 특화되어 있음.사용하는 스토리지 엔진에 따라 지원되는 인덱스 유형이 다를 수 있음. 1. B-Tree 인덱스가장 일반적인 인덱스 유형임.키 값이 트리 구조로 정렬되어 저장됨.B-Tree 인덱스는 등호 및 범위 쿼리에 효율적이며, InnoDB와 MyISAM 스토리지 엔진에서 사용할 수 있음.B-Tree는 순차적 검색 뿐만 아니라, 부분적인 값 매칭과 정렬된 데이터에 대한 빠른 접근을 제공함.2. HASH 인덱스Memory 스토리지 엔진에서 주로 사용되는 인덱스 유형임.해시 인덱스는 키 값을 해시 함수를 통해 해시로 변환하고, 이 해시를 사용하여 데이..

Database/SQL

[MySQL] 스토리지 엔진 종류, B-Tree 인덱스

MySQL 스토리지 엔진 종류MySQL은 다양한 스토리지 엔진을 제공하여 다른 요구 사항과 환경에 맞게 데이터 저장 방식을 선택할 수 있게 함.이러한 스토리지 엔진 각각은 특정 성능, 기능 및 사용 사례에 최적화되어 있음. 1. InnoDBInnoDB는 MySQL의 기본 스토리지 엔진으로, 트랜잭션을 지원하며 롤백과 복구 기능을 제공하여 신뢰성을 보장함.ACID(원자성, 일관성, 격리성, 지속성)을 완벽히 지원하며, 행 수준의 잠금과 외래 키 제약 조건을 지원함.대부분의 OLTP(온라인 트랜잭션 처리) 시스템에 적합한 엔진임. 2. MyISAM이전의 기본 스토리지 엔진이었던 MyISAM은 빠른 읽기 작업과 전체 테이블 잠금을 특징으로 함.MyISAM은 트랜잭션이나 외래 키를 지원하지 않으며, 주로 읽기가..

Database/SQL

[MySQL] Lock, 데드락

MySQL LockMySQL에서의 잠금(Lock)은 데이터베이스에서 동시성을 관리하고 데이터 무결성을 모장하기 위해 사용되는 매커니즘임.잠금은 여러 사용자가 동시에 같은 데이터에 액세스할 때 발생할 수 있는 충돌을 방지하고, 데이터를 안정적으로 읽고 쓸 수 있도록 도와줌.MySQL에서는 주로 두 가지 유형의 잠금이 사용됨.테이블 잠금과 행 잠금임. 1. 테이블 잠금 : Table Locks테이블 잠금은 데이터베이스 테이블 전체에 걸쳐 잠금을 적용함.이 잠금 방식은 간단하고 오버헤드가 적지만, 동시성 수준이 낮다는 단점이 있음.MySQL의 MyISAM 스토리지 엔진에서 주로 사용됨. 1.1 읽기 잠금다른 사용자들이 데이터를 읽는 것은 허용하지만, 쓰기는 차단함.1.2 쓰기 잠금다른 사용자들이 해당 테이블을..

Database/SQL

[MySQL] 데이터 타입

MySQL 데이터 타입MySQL 데이터베이스에서 사용할 수 있는 다양한 데이터 타입은 데이터의 특성과 필요에 따라 선택될 수 있음. 1. 숫자형 타입1.1 TINYINT매우 작은 정수를 저장함.-128에서 127까지, 또는 부호 없는 상태에서 0에서 255까지의 값을 저장할 수 있음.1.2 SMALLINT작은 정수를 저장함.-32768에서 32767까지, 또는 부호 없는 상태에서 0부터 65535까지의 값을 저장할 수 있음.1.3 MEDIUMINT중간 크기의 정수를 저장함.-8388608에서 8388607까지, 또는 부호 없는 상태에서 0에서 16777215까지의 값을 저장할 수 있음.1.4 INT or INTEGER표준 정수형임.-2147483648에서 2147483647까지, 또는 부호 없는 상태에서..

Database/SQL

[SQL] OLTP와 OLAP

OLTPOLTP (Online Transaction Processing) 는 데이터베이스 관리 시스템에서 실시간 트랜잭션 처리를 지원하는 기술임.이 시스템은 특히 금융, 리테일, 기업 자원 관리와 같은 분야에서 필수적으로 사용되며, 사용자의 요청을 즉시 처리하여 신속한 피드백을 제공하는 것이 핵심임. OLTP 특징1. 효율적인 트랜잭션 처리OLTP 시스템은 작은 크기의 트랜잭션을 매우 빠르고 효율적으로 처리함.각 트랜잭션은 일반적으로 몇 초 이내에 완료됨. 2. 고도의 병렬성과 동시성OLTP 시스템은 동시에 많은 사용자가 접속하고 작업을 수행할 수 있도록 설계됨.이를 위해 고급 동시성 제어 메커니즘과 락 기술을 사용함. 3. 데이터 무결성 유지OLTP 시스템은 데이터의 정확성과 일관성을 유지하는 데 중점..

Database/SQL

[SQL] 행 기반 데이터베이스와 열 기반 데이터베이스

행 기반 데이터베이스행 기반 데이터베이스 (Row-based Database) 는 데이터를 테이블 형태로 저장함.각 행은 여러 개의 컬럼으로 구성된 데이터 레코드를 나타냄.이 방식은 전통적인 관계형 데이터베이스 관리 시스템(RDBMS)에서 주로 사용됨.행 기반 데이터베이스는 SQL을 사용하여 데이터를 조작하고 관리하는 것이 일반적임. 행 기반 데이터베이스 특징1. 데이터 저장 방식데이터는 행 단위로 저장됨.각 행은 고유한 키에 의해 식별되며, 한 행 내에는 여러 컬럼이 있어 다양한 속성의 데이터를 저장할 수 있음. 2. 인덱싱행 기반 데이터베이스는 효율적인 조회를 위해 인덱스를 사용함.인덱스는 특정 컬럼에 대한 포인터를 제공하여 검색 속도를 빠르게함. 3. 트랜잭션ACID(원자성, 일관성, 격리성, 지속..

Database/SQL

[MySQL] 대용량 이진 객체와 장단점

MySQL 대용량 이진 객체MySQL에서 대용량 이진 객체 (LOB, Large Binary Object)는 큰 데이터 파일을 저장하는 데 사용되는 데이터 타입임.MySQL에서 LOB 타입에는 BLOB, TEXT, MEDIUMBLOB, LONGBLOB, LONGTEXT 등이 있음.이러한 타입들은 각각 다른 크기의 데이터를 처리할 수 있도록 설계됨.예를 들어, LONGBLOB 은 최대 4GB의 이진 데이터를 저장할 수 있음.LOB 타입은 비디오, 이미지, 대형 문서 파일과 같은 멀티미디어 콘텐츠를 데이터베이스에 저장하기 위해 사용됨.데이터베이스 내에서 이런 타입의 데이터를 관리함으로써 높은 수준의 데이터 무결성과 보안을 유지할 수 있음. 대용량 이진 객체 장단점1. 장점1.1 데이터 통합LOBs 를 사용하..

Database/Prometheus

[Prometheus] Exporter의 종류, MySQL Exporter

Prometheus의 ExporterPrometheus는 오픈 소스 모니터링 시스템임.다양한 소스에서 메트릭스를 수집하는 데 사용됨.메트릭스 수집을 위해 Prometheus는 Exporter 라는 특수 도구를 사용함.이는 다양한 서비스, 시스템, 프로토콜에서 메트릭스를 추출하여 Prometheus가 이해할 수 있는 형식으로 변환함. Exporter의 종류1. Node ExporterNode Exporter는 하드웨어와 운영 체제 지표를 수집하는 데 사용됨.CPU 사용률, 메모리 사용, 디스크 사용, 네트워크 통계 등의 시스템 정보를 수집함.Linux, Windows 및 기타 Unix-like 시스템에서 사용될 수 있음. 2. cAdvisor컨테이너 자원 사용 및 성능 특성을 모니터링하는 데 특화된 Goo..

박경태
'Database' 카테고리의 글 목록 (2 Page)