저장 프로시저(Stored Procedure) - Oracle, MySQL 예시
·
Computer Science/Database
저장 프로시저란?저장 프로시저는 데이터베이스에서 반복적으로 수행되는 작업을 하나의 단위로 모아 저장해 놓은 일련의 SQL문들이다.특정 작업을 수행할 때마다 동일한 SQL문을 다시 작성할 필요 없이, 미리 정의된 절차를 호출함으로써 실행할 수 있다. SELECT, INSERT, UPDATE, DELETE 등의 DQL, DML을 포함할 수 있다.IF문, DECLARE, SET 등의 프로그래밍 문법을 사용할 수 있어 복잡한 로직 구현이 가능하다.CALL, EXEC 명령어를 통해 함수처럼 호출하여 실행할 수 있다.   저장 프로시저의 장단점장점 성능 향상저장 프로시저는 컴파일되고 캐싱되기 때문에 동일한 작업을 반복적으로 수행할 때 성능이 향상다.보안 강화데이터베이스 접근을 저장 프로시저를 통해 제어하면, 프로..
인덱스(Index)
·
Computer Science/Database
인덱스(Index)란?데이터베이스에서 검색 성능을 향상시키기 위해 사용되는 데이터 구조인덱스는 책의 색인처럼, 테이블의 데이터를 효율적으로 검색할 수 있도록 돕는 데이터 구조이다. 인덱스가 설정된 열을 기준으로 데이터를 빠르게 찾아갈 수 있어, 전체 테이블을 순차적으로 검색하지 않아도 된다.예를 들어, 'Name'이 'HOLLY'인 데이터를 조회할 때, 'Name' 컬럼에 인덱스가 설정되어 있다면 전체 데이터를 비교할 필요 없이 빠르게 검색할 수 있습니다.  인덱스 장단점인덱스 장점빠른 데이터 검색데이터를 빠르게 검색할 수 있어 조회 성능 향상.데이터 정렬인덱스가 적용된 열에 대해 정렬된 데이터를 효율적으로 접근할 수 있음.고유성 보장Primary Index, Unique Index 등의 사용을 통해 고..
Redis
·
Computer Science/Database
Redis란?Redis는 고성능의 온프 소스 인메모리 데이터 구조 저장소이다.NoSQL의 한 종류로, 주로 키-값(key-value) 저장소로 사용되며 다양한 데이터 구조를 지원한다.빠른 일기 및 쓰기 속도를 제공하여 캐싱, 세션 관리, 실시간 분석, 메시지 큐와 같은 다양한 용도로 활용된다.   Redis 특징인메모리 저장소모든 데이터를 메모리에 저장하여 매우 빠른 읽기 및 쓰기 성능을 제공.고성능이 요구되는 애플리케이션에 적합한 특징.풍부한 데이터 구조키-값 저장소뿐만 아니라 문자열, 해시, 리스트, 셋, 비트맴, 하이퍼로그로그, 스트림 등의 다양한 데이터 구조를 지원.지속성(영속성)데이터는 메모리에 저장되지만, *RDB(Redis Database) 스냅샷과 *AOF(Append Only File) ..
이상현상(Anomaly)
·
Computer Science/Database
이상현상(Anomaly)란?이상현상은 데이터베이스 조작 시 발생할 수 있는 비정상적인 동작이나 데이터 무결성 문제를 의미한다.주로 비정규화된 데이터베이스에서 발생하며, 데이터 중복과 관련된 문제를 초래할 수 있다.이상현상은 크게 삽입 이상, 삭제 이상, 갱신 이상 세가지로 나눌 수 있다.   삽입 이상(Insertion Anomaly)새로운 데이터를 삽입할 때 불필요한 데이터도 함께 삽입해야하는 문제를 말한다.이는 데이터베이스 설계가 잘못되어 필수적이지 않은 데이터 없이 원하는 데이터를 삽입할 수 없는 경우 발생한다. 예시)아래의 테이블은 고객과 그들이 주문한 상품 정보를 하나의 테이블에 저장하는 경우이다.| CustomerID | CustomerName | OrderID | ProductName ||-..
정규화
·
Computer Science/Database
정규화란?정규화(Normalization)는 관계형 데이터베이스에서 데이터를 구조화하여 데이터 중복을 최소화하고 무결성을 보장하기 위한 과정이다. 주요 목적은 다음과 같다.데이터 중복 제거저장 공간 효율적 사용데이터 일관성 유지데이터 갱신 시 이상 현상 방지 하지만 정규화 진행 시 다음과 같은 단점이 발생할 수 있다.복잡한 쿼리 : 여러 테이블로 분할되어 쿼리가 복잡해질 수 있다.성능 저하 : 높은 정규화로 인해 일부 쿼리의 성능이 저하될 수 있다. (JOIN 연산같은 경우 성능 저하 요인이 됨.)  정규화는 1NF, 2NF, 3NF, BCNF, 4NF, 5NF가 있다. 순서대로 살펴보자.   제 1 정규형 (1NF)모든 열이 원자값(Atomic Value)을 가져야한다.각 컬럼은 유일한 이름을 가져야하..
SQL과 NoSQL
·
Computer Science/Database
SQL정의SQL은 Structured Query Language의 약자이다.SQL 데이터베이스는 구조화된 데이터를 관계형 모델로 관리하는 데이터베이스 시스템으로, SQL을 사용해 데이터를 정의하고 조작한다.  특징스키마 기반. 정해진 스키마에 따라 데이터 저장관계형 데이터 모델로, 테이블 간 관계를 통해 데이터 분산ACID 준수 : 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)을 보장SQL이라는 표준화된 쿼리 언어를 사용. 복잡한 쿼리를 지원주로 수직적 확장 가능.수평적 확장이 어려워 데이터 양이 크게 증가하면 성능 저하 발생할 수 있음 DBMS 예시Mysql : 오픈 소스 RDBMS.Oracle : 상용 RDBMS. 대규..
SQL injection 종류와 방지
·
Computer Science/Database
SQL Injection이란?SQL Injection은 공격자가 웹 애플리케이션의 데이터베이스에 악의적인 SQL 쿼리를 삽입하여 비정상적인 동작을 유도하거나, 데이터를 탈취하거나, 데이터베이스를 손상시키는 공격 기법이다.주로 입력값이 제대로 검증되지 않고 SQL 쿼리에 포함될 때 발생한다. SQL Injection은 여러 유형이 있으며, 각 유형에 따라 공격방법과 피해가 달라진다. 주요 SQL Injection 종류에 대해 살펴보자.   Error based SQL Injection논리적 에러를 활용한 SQL Injection이다.의도적으로 오류를 발생시켜 공격자가 시스템에 대한 정보를 얻을 수 있다.-- 정상적인 쿼리SELECT * FROM users WHERE username = 'admin' AN..
조인(JOIN) - ANSI SQL, MySQL, Oracle 예
·
Computer Science/Database
조인(JOIN)이란? 데이터베이스 조인(Join)은 두 개 이상의 테이블에서 관련된 데이터를 결합하여 하나의 결과 집합으로 만드는 작업이다.조인은 관계형 데이터베이스에서 매우 중요한 기능으로, 데이터 간의 관계를 기반으로 유용한 정보를 추출하는 데 사용된다. 아래의 테이블을 예시로 쿼리와 함께 주요 조인 유형을 설명하겠다. students 테이블 courses 테이블  내부 조인 (Inner Join)내부 조인은 두 테이블에서 일치하는 데이터만 반환-- ANSI SQL, MySQL, OracleSELECT students.name, courses.course_nameFROM studentsINNER JOIN courses ON students.student_id = courses.student_id; ..
트랜잭션(Transaction) & 트랜잭션 격리성
·
Computer Science/Database
트랜잭션(Transaction)이란?DBMS에서 일련의 연산을 논리적인 작업 단위로 묶어 처리하는 개념. 여러 작업을 하나의 단위로 처리.데이터베이스의 무결성 유지를 위함.무결성 : 데이터의 정확성, 일관성, 유효성을 유지하는 것예시) 은행 시스템계좌 A에서 계좌 B로 돈을 이체할 때, A의 잔고 감소와 B의 잔고 증가가 하나의 트랜잭션으로 처리되어야 한다.만약 하나라도 실패하면 전체 트랜잭션이 롤백되어야 한다.    트랜잭션의 특성 (ACID)Atomicty / All or nothing (원자성)트랜잭션의 연산은 모두 성공하거나 모두 실패해야한다.Consistency (일관성)트랜잭션이 수행 결과는 항상 일관되어야 한다.Isolation (고립성/독립성)트랜잭션이 수행되는 동안 다른 트랜잭션의 작업이..