본문 바로가기

DB10

DB Stored Procedure 저장 프로시저 저장 프로시저는 데이터베이스에 저장되어 있는 미리 컴파일된 SQL 코드의 집합으로 필요할 때 호출하여 반복적으로 사용할 수 있는 프로그램 단위다. 복잡한 SQL 작업을 수행할 때 유용하며, DB 서버에서 직접 실행되기 때문에 성능 상의 이점도 가지고 있다. 쉽게 비유하자면 매크로를 정의해두고 매크로를 실행시키는 것이라고 할 수 있다. ㅇ 저장 프로시저의 특징재사용 가능한번 작성한 SQL 코드 블록을 여러 곳에서 재사용할 수 있어 코드의 중복을 줄일 수 있다.성능 향상미리 컴파일되기 때문에, 복잡한 쿼리나 연산을 효율적으로 수행할 수 있다.보안성저장 프로시저는 DB 객체에 직접 접근할 수 있는 권한을 제어할 수 있어, 사용자가 직접 쿼리를 작성하지 않고 필요한 작업을 수행할 수 있다.비즈니스 로직 캡슐화D.. 2024. 10. 10.
DB Normalization(정규화) DB 정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터의 무결성을 보장하기 위해 데이터베이스 테이블을 체계적으로 구조화하는 과정이다. 데이터를 논리적으로 분할하고, 데이터가 중복되거나 불필요하게 저장되지 않도록 테이블을 구성하는 것을 목표로한다. ㅇ 정규화 단계제 1 정규화모든 컬럼의 값이 원자값(더 이상 나눌 수 없는 값)을 가지도록 테이블을 구성한다. 하나의 칸에 여러 값이 들어가 있는 경우가 없어야한다.   제 2 정규화1 정규화를 만족하면서 기본키의 부분집합에 종속된 컬럼들을 제거한다. 기본키의 일부에만 의존하는 컬럼을 별도의 테이블로 분리한다. 학번강좌명강의실성적101데이터베이스101호A102데이터베이스101호B103자료구조103호A 예를 들어 위와 같은 테이블이 존재한다. 이 테이블의 기.. 2024. 10. 10.
DB 이상현상(Anomaly) 이상 현상은 잘못된 데이터 구조로 인해 발생하는 데이터 불일치 문제를 말한다. 테이블에서 데이터 중복이 존재하거나 비정규화된 구조를 사용할 때 발생하며 이를 방지하기 위해 정규화가 사용된다. ㅇ 이상 현상의 종류삽입 이상(Insertion Anomaly)삭제 이상(Deletion Anomaly)갱신 이상(Update Anomaly)학번이름나이성별강의코드강의명전화번호1001김유신20남AB1데이터베이스010-1234-12341002김태희21여ABC1프로그래밍010-2222-22221003박혁거세20남AC1웹프로그래밍010-3333-33331003박혁거세20남AC2네트워크010-3333-3333 위의 테이블을 예로 들어 설명한다. 삽입 이상삽입할 테이터를 테이블에 추가할 때 불필요한 데이터도 함께 입력해야 하.. 2024. 10. 10.
DB Join(조인) 조인은 관계형 데이터베이스에서 여러 테이블을 연결하여 관련된 데이터를 하나의 결과 집합으로 결합하는 SQL 연산이다. 두 개 이상의 테이블에서 공통된 열(column)을 기준으로 데이터를 결합하여 하나의 결과로 조회할 수 있게한다. ㅇ 조인의 목적여러 테이블에 나뉘어 저장된 데이터를 효율적으로 조회RDBMS의 정규화된 테이블 간의 관계를 활용하여 데이터를 조합 ㅇ 조인의 유형INNER JOINLEFT JOINRIGHT JOINFULL OUTER JOINCROSS JOINSELF JOIN INNER JOIN교집합 개념에 해당하는 조인이다.두 테이블에서 공통된 열의 값이 일치하는 행만 결합하여 결과로 반환한다.일치하지 않는 데이터는 결과에서 제외된다.SELECT A.column1, B.column2FROM .. 2024. 10. 10.
DB Key 데이터베이스에서 key는 테이블에서 데이터를 식별하거나 관계를 정의하는 데 사용되는 필드다. 데이터를 구분하고 무결성을 유지하는데 중요한 역할을 하며 다양한 종류의 키가 존재한다. 각 키는 고유한 목적을 가지고 있으며 데이터의 효울적인 저장과 검색을 돕는다. ㅇ Key의 종류Primary Key(기본 키)테이블에서 각 행을 고유하게 식별할 수 있는 하나의 열 또는 열들의 집합이다. 중복을 허용하지 않고 NULL 값을 가질 수 없다. 테이블 당 하나의 기본 키만 설정할 수 있고 이는 각 행(row)를 유일하게 식별한다. Unique Key(고유 키)기본 키 처럼 테이블 내에서 고유한 값을 유지하지만, 하나의 테이블에서 여러 개의 고유 키를 설정할 수 있다.NULL 값을 가질 수 있다.(같은 컬럼에서는 단 .. 2024. 10. 4.
DB SQL Injection SQL 인젝션은 웹 애플리케이션의 보안 취약점을 이용해 악의적인 사용자가 SQL 쿼리를 조작하고, 이를 통해 데이터베이스에 부정한 액세스를 시도하는 공격 기법이다. 웹 애플리케이션에서 사용자 입력을 적절하게 검증하지 않거나 필터링하지 않을 때 발생할 수 있다. ㅇ SQL 인젝션의 결과 및 피해데이터 유출공격자는 데이터베이스에 저장된 민감한 정보를 쉽게 조회할 수 있다.데이터 조작공격자는 데이터를 삽입, 수정 또는 삭제할 수 있다.데이터베이스 구조 손상테이블을 삭제하거나 구조를 변경하여 시스템에 심각한 손상을 줄 수 있다.시스템 장악심각한 경우 운영체제 명령을 실행하거나 서버에 대한 접근 권한을 획득할 수 있다. ㅇ SQL 인젝션 방지 방법Prepared Statements 및 파라미터화 된 쿼리사용자의 .. 2024. 10. 4.
DB Index 인덱스는 데이터베이스에서 테이블의 데이터를 효율적으로 검색하기 위해 사용되는 자료구조다. 책의 목차를 보고 원하는 페이지를 찾아가는 거 처럼, 인덱스는 특정 열(Column) 또는 열 조합의 값을 기반으로 데이터의 위치를 빠르게 찾아낼 수 있게 한다. 데이터베이스에서 인덱스는 성능을 크게 좌우하는 핵심적인 요소로 적절한 설계는 데이터 조회 성능을 획기적으로 향상 시킬 수 있다. 기본 동작 원리1. 데이터 조회 (인덱스가 없는 경우)데이터베이스는 쿼리에서 조건에 해당하는 데이터를 찾기 위해 테이블의 모든 행을 처음부터 끝까지 확인하는 **Full Table Scan**을 수행해야 한다.데이터의 양이 많을 수록 검색 시간이 오래 걸린다.2. 데이터 조회 (인덱스가 있는 경우)인덱스는 데이터 값을 기반으로 정.. 2024. 10. 4.
DB Redis 레디스는 오픈 소스 기반의 인메모리 데이터 구조 저장소다. 주로 캐싱, 세션 관리, 실시간 분석, 메세지 큐, 데이터 스트림 처리 등에 많이 사용된다. 실시간 성능을 필요로 하는 웹 애플리케이션, 대규모 트래픽 처리가 필요한 시스템, 빠른 응답 속도를 요구하는 환경에서 효과적이다.  특징인메모리 데이터 저장소레디스는 데이터를 메모리(RAM)에 저장하기 때문에 매우 빠른 속도를 가지고 있다. 데이터 읽기 및 쓰기 속도가 매우 빠르기 때문에 고성능이 요구되는 애플리케이션에서 사용하기 적합하다.다양한 데이터 구조 지원키-값, 문자열, 해시, 리스트, 셋, 정렬된 셋, 비트맵 등 다양한 데이터 구조를 지원한다. 레디스는 NoSQL DB다.지속성 제공레디스는 인메모리 저장소임에도 불구하고 데이터를 디스크에 지속적.. 2024. 10. 4.
DB Transaction 데이터의 무결성데이터베이스에서 데이터의 정확성, 일관성, 신뢰성을 보장하는 것을 의미한다. 트랜잭션은 데이터베이스의 무결성을 보장하는 핵심 매커니즘이다.  트랜잭션은 데이터베이스에서 하나의 작업 단위로 처리되는 일련의 연산들을 의미한다. 트랜잭션은 데이터베이스에 대해 일관성을 유지하면서 여러 작업을 안전하게 수행하기 위한 중요한 개념이다. ACID 특성을 기반으로 하여 데이터의 무결성과 신뢰성을 보장한다. 개념1. 데이터베이스에서 수행되는 하나 이상의 작업을 모아 하나의 논리적인 작업 단위로 취급하는 것 2. 모든 작업이 성공해야만 트랜잭션이 완료되고 그 결과가 데이터베이스에 반영됨 3. 트랜잭션 내의 작업 중 하나라도 실패하면 전체 작업이 취소(롤백)되어 데이터베이스의 상태가 트랜잭션이 시작되기 전으로.. 2024. 10. 4.