Database/SQL

Database/SQL

[MySQL] Auto Increment, 컬럼 생성 옵션 종류

MySQL Auto IncrementMySQL에서 Auto Increment 속성은 주로 테이블의 기본 키를 위해 사용됨.새로운 레코드가 추가될 때마다 자동으로 고유한 숫자를 생성하고 할당함.이 기능은 주로 식별자 필드에서 사용되어 데이터베이스 내 각 행의 고유성을 보장함. MySQL Auto Increment 기능 및 용도1. 자동 고유 번호 생성Auto Increment 필드는 새로운 행이 추가될 때마다 자동으로 값을 증가시킴.이는 사용자가 직접 각 행에 고유 번호를 할당하지 않아도 되도록 하여 데이터 삽입 과정을 단순화함. 2. 기본 키와의 통합 사용일반적으로 Auto Increment 속성은 기본 키와 함께 사용됨.이렇게 함으로써, 각 행은 자동으로 생성된 고유한 ID를 갖게 되어, 데이터를 보다..

Database/SQL

[MySQL] 외래키, 복합키

MySQL 외래키MySQL에서 외래키는 두 테이블 간의 관계를 정의하고, 참조 무결성을 유지하는 데 사용됨.외래키는 한 테이블의 열이 되며, 이 열은 다른 테이블의 기본키를 참조함.이를 통해 테이블 간의 데이터가 서로 일관성을 유지하도록 보장함. MySQL 외래키의 역할과 기능1. 데이터 무결성1.1 참조 무결성외래키는 참조 무결성을 보장하여 참조된 테이블의 기본키 없는 값이 참조하는 테이블에 입력되는 것을 방지함.이는 데이터베이스의 논리적 일관성을 유지하는 데 중요함. 2. 관계의 정의2.1 테이블 간 관계 설정외래키를 사용하여 테이블 간의 관계를 명확하게 정의할 수 있음.이 관계는 일대일, 일대다, 다대다 등이 될 수 있음.3. 캐스케이딩 작업3.1 캐스케이드 업데이트와 삭제외래키 관계에서 주 테이블..

Database/SQL

[MySQL] 인덱스, 기본키

MySQL 인덱스MySQL에서 인덱스는 데이터베이스 테이블의 데이터 검색 속도를 향상시키기 위해 사용되는 자료구조임.인덱스는 검색 엔진의 색인과 유사하게, 데이터베이스 내에서 데이터를 빠르게 찾을 수 있도록 도움.인덱스를 사용하면 테이블의 모든 행을 차례대로 검사하는 대신, 효율적인 방법으로 특정 데이터 위치를 빠르게 찾아갈 수 있음. MySQL 인덱스 종류1. 기본 인덱스 (Primary Index)기본키 인덱스는 테이블의 주요 검색 기준이 되는 열에 자동으로 생성됨.각 행은 고유한 기본 키를 가지며, 이는 데이터의 무결성을 보장하는 데 중요한 역할을 함. 2. 보조 인덱스 (Secondary Index)보조 키 인덱스는 기본 키 이외의 열에 생성될 수 있음.이 인덱스는 보조 검색 경로를 제공하여 기본..

Database/SQL

[DB] 데이터 모델링, NoSQL

데이터 모델링데이터 모델링은 데이터를 효과적으로 구조화, 조직화 및 정의하는 과정임.데이터가 저장, 관리, 검색되는 방식을 결정하는 데 중요한 역할을 함. 데이터 모델링의 기본 개념1. 개념적 데이터 모델1.1 목적데이터와 비즈니스 요구 사항 간의 관계를 이해하고 시각화해야함.1.2 구성요소엔터티, 속성, 관계 및 제약 조건1.3 도구ER 다이어그램, UML 2. 논리적 데이터 모델2.1 목적구체적 데이터 구조를 설계하고 시스템 내의 데이터 흐름을 정의해야 함.2.2 구성요소정규화된 테이블, 키, 인덱스2.3 도구관계 데이터베이스 스키마, NoSQL 데이터 모델 등. 3. 물리적 데이터 모델3.1 목적실제 데이터베이스에 데이터를 어떻게 저장할지를 결정해야 함.3.2 구성요소테이블 스페이스, 파티셔닝, 인..

Database/SQL

[MySQL] MySQL 및 MariaDB 차이

MySQL과 MariaDB의 차이MySQL과 MariaDB는 모두 인기 있는 관계형 데이터베이스 관리 시스템임.둘 다 동일한 원본 코드를 공유하는 역사를 가지고 있지만, MariaDB는 MySQL의 포크임.MySQL이 오라클에 인수된 이후 2009년에 만들어짐.이러한 분기 이후, 두 데이터베이스는 서로 다른 기능 개발과 성능 향상에 중점을 두면서 점차적으로 차별화됨. 기원과 배경1. MySQLMySQL AB에 의해 개발됨.2008년에 Sun Microsystems에 의해 인수된 후 2010년에 오라클에 의해 인수됨. 2. MariaDBMySQL의 원 개발자 중 한 명인 몬티 와이드니어스가 주도하여 시작됨.MariaDB는 MySQL과 완전히 호환되는 목표를 가지고 시작됨.기능과 성능 개선에 중점을 둠. 라..

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' 카테고리의 글 목록