Computer Science/Database

Computer Science/Database

[Database] 저장 프로시저 (Stored PROCEDURE)

저장 프로시저 저장 프로시저는 데이터베이스 시스템에서 실행을 위해 미리 컴파일하고 저장해둔 쿼리의 집합이며, 여러 명령문을 하나의 로직으로 묶어서 관리한다. 프로시저를 만들어두면, 쿼리가 필요할 때 인자 값만 전달하면 된다. SQL 예시 코드 CREATE PROCEDURE GetEmployeeByID @EmpID INT AS BEGIN SELECT * FROM Employees WHERE EmployeeID = @EmpID; END // 호출 EXECUTE GetEmployeeByID @EmpID = 123; MySQL 예시 코드 CREATE PROCEDURE `GetEmployeeByID`(IN `empID` INT) BEGIN SELECT * FROM Employees WHERE EmployeeID ..

Computer Science/Database

[Database] 레디스 (Redis)

Redis Redis(REmote Dictionary Server)는 오픈 소스, 인 메모리 데이터 구조 스토어로서, 데이터베이스, 캐시, 메시지 브로커 등의 역할을 수행할 수 있다. 다양한 종류의 데이터 구조를 지원하며, 데이터 구조는 key-value 값이다. 따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템이다. Redis의 주요 특징 1. In-Memory Data Store Redis는 모든 데이터를 메모리에 저장하고 관리함으로써 빠른 성능을 제공한다. 하지만 영구적인 데이터 저장을 위해 디스크에 스냅샷(snapshot)을 저장하거나 AOF(Append Only File) 등의 방법으로 데이터 유실을 방지할 수 있다. snapshot : 특정 지점을 설정하고 디스크에..

Computer Science/Database

[Database] 트랜잭션 격리 수준 (Transaction Isolation Level)

Isolation Level 데이터베이스에서 여러 트랜잭션을 동시에 처리할 때, 특정 트랜잭션에서 수행하는 작업이 다른 트랜잭션에 얼마나 '보이는가'를 결정하는 것이다. 즉, 트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준을 말한다. Isolation Level의 필요성 여러 트랜잭션이 동시에 데이터베이스에 접근할 때 발생하는 문제를 해결하기 위해 Isolatino Level이 필요하다. 1. Dirty Read 한 트랜잭션이 아직 커밋되지 않은 다른 트랜잭션의 변경을 읽는 현상 이로 인해 트랜잭션의 실패로 롤백이 발생하더라도 이미 읽혀진 데이터가 원래의 값으로 돌아가지 않는 문제가 생긴다. 2. Non-Repeatable Read 같은 트랜잭션 내에서 같은 쿼리를 두 번 실행했을 때, 그 결과가..

Computer Science/Database

[Database] 트랜잭션 (Transaction)

트랜잭션 (Transaction) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 데이터의 무결성과 일관성을 보장하기 위해 사용 상태 변화: DML을 통해 DB에 접근하는 것(SELECT, INSERT, DELTE, UPDATE) 트랜잭션의 상태 활동(Active): 트랜잭션이 실행 중인 상태 실패(Failed): 트랜잭션의 실행 중에 오류가 발생하여 작업이 중단된 상태. 이 단계에서는 트랜잭션이 이전 상태로 롤백되어야 한다. 부분 완료(Partially Committed): 트랜잭션의 모든 작업이 성공적으로 실행되었지만, 아직 커밋되지 않은 상태. 이 단계에서는 트랜잭션의 결과를 데이터베이스에 영구적으로 반영하기 전에 커밋 여부를 결정해야 한다. 완료(Committed): 트랜잭션이 성공적으로..

Computer Science/Database

[Database] 정규화 (Normalization)

정규화 (Normalization) 데이터베이스에서 중복을 최소화하고 데이터의 일관성을 유지하기 위해 관계형 데이터베이스(RDBMS) 스키마를 재구성하는 과정 정규화의 목적 불필요하거나 중복되는 데이터(data redundancy)들을 제거한다. 이상현상(Anomly)을 방지한다. 데이터베이스 구조를 확장에 용이하도록 한다. 이상현상(Anomaly)의 종류 삽입 이상(Insertion Anomaly): 데이터를 삽입할 때 데이터의 부분적인 정보로 인해 원하는 데이터를 삽입할 수 없는 현상 갱신 이상(Update Anomaly): 데이터를 업데이트할 때 일부 튜플만 갱신되어 데이터의 불일치가 발생하는 현상 삭제 이상(Deletion Anomaly): 데이터를 삭제할 때 의도하지 않은 데이터의 손실이 발생하..

Computer Science/Database

[Database] 인덱스 (Index)

인덱스 (Index) 인덱스는 데이터베이스의 테이블에 대한 검색 속도를 향상시켜주는 자료구조이다. 테이블의 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터를 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장하며, 컬럼의 값과 물리적 주소를 (key, value) 쌍으로 저장한다. 테이블 생성 시 MYD, MYI, FRM 3개의 파일이 생성된다. FRM : 테이블 구조가 저장되어 있는 파일 MYD : 실제 데이터가 있는 파일 MYI : 인덱스 정보가 들어있는 파일 인덱스를 사용하지 않는 경우 MYI 파일은 비어져 있다. 인덱싱하는 경우 MYI 파일이 생성되며 이후에 사용자가 Select 쿼리로 인덱스를 사용하는 컬럼을 탐색할 때 MYI 파일의 내용을 검색한다. 인덱스의 장단점 장점 Full Tab..

Computer Science/Database

[Database] 이상 현상 (Anomaly)

이상 현상 (Anomaly) 일반적인 패턴이나 동작으로부터 벗어난 것 즉, 데이터나 시스템에서 예상치 못한 이벤트, 동작, 패턴 등이 나타나는 것 데이터베이스 이상은 일반적으로 설계가 잘못되고 무계층 데이터베이스를 사용하여 발생한다. 이상 현상은 일반적으로 테이블을 분할하거나 결합하여 정규화함으로써 제거된다. 세 가지 유형의 이상 현상 갱신 이상 현상 (Updation/Update Anomaly) 테이블의 일부 행을 업데이트할 때 테이블의 불일치가 발생하면 갱신 이상 현상이 발생한다. 삽입 이상 현상 (Insertion Anomaly) 테이블에 새 행이 삽입되어 있고 테이블에 불일치가 발생하는 경우를 삽입 이상 현상이라고 한다. 삭제 이상 현상 (Deletion Anomaly) 테이블에서 일부 행을 삭제..

Computer Science/Database

[Database] SQL vs. NoSQL

SQL (RDBMS = 관계형 DB) RDBMS에서 데이터를 저장, 수정, 삭제, 검색 RDBMS의 표준화된 스키마를 사용 데이터는 관계를 통해 여러 테이블에 분산되며 이를 통해 데이터의 중복을 방지한다. 처음에 정한 스키마를 준수한 데이터만 테이블에 저장된다. NoSQL (비관계형 DB) 동적인 스키마를 가지고 데이터를 저장. 이를 통해 데이터 모델의 유연성을 제공한다. 대용량의 데이터 처리를 위해 여러 서버에 데이터를 분산하여 저장하고 처리할 수 있다. 읽기와 쓰기 작업이 빠르다. key-value store, bigtable, document db, graph db 등 다양한 데이터 모델을 지원한다. 저장방식에 따른 분류 Key-Value Model : Redis Document Model : Mo..

Computer Science/Database

[Database] SQL Injection

SQL Injection 데이터베이스를 손상시킬 수 있는 코드 주입 기술 웹 페이지 입력을 통해 SQL 문에 악성코드를 배치하는 가장 일반적인 웹 해킹 기술 중 하나이다. 일반적으로 사용자의 사용자 이름/사용자 ID와 같은 입력을 요청할 때 발생하며 이름/ID 대신 사용자가 DB에서 무의식적으로 실행할 SQL 문을 제공한다. 1 = 1 은 항상 True SQL 쿼리의 WHERE 절에 삽입되어 항상 참인 조건을 만들어 모든 레코드를 선택하도록 유도하는 방법 예를 들어, 다음과 같은 SQL 쿼리가 있다고 가정: SELECT * FROM users WHERE username = 'admin' AND password = '12345'; 이 쿼리에서 "1 = 1"을 주입하여 WHERE절을 조작하면 다음과 같이 쿼..

Computer Science/Database

[Database] 조인(Join)

조인 (Join) 데이터베이스에서 두 개 이상의 테이블을 연결하여 하나의 결과 집합으로 결합하는 연산 테이블 간의 관계를 활용하여 데이터를 효과적으로 검색하고 조작하는 데 사용된다. INNER JOIN 두 테이블 간의 일치하는 행만 반환 = 교집합 그냥 JOIN 을 하면 INNER JOIN 과 같은 결과가 나온다. ex) 고객 정보와 주문 정보가 각각 다른 테이블에 저장되어 있는 경우, 두 테이블의 정보를 결합하여 해당 고객의 주문 내역을 조회하는 경우에 사용 SELECT * FROM 고객정보 INNER JOIN 주문정보 ON 고객정보.고객ID = 주문정보.고객ID WHERE 고객정보.고객ID = '고객ID값'; LEFT OUTER JOIN = LEFT JOIN 왼쪽 테이블의 모든 행을 포함하며, 오른쪽..

dbssk
'Computer Science/Database' 카테고리의 글 목록