본문 바로가기

DB

Redis 인메모리(RAM) key-value 데이터 구조 저장소 특징 빠른 성능: 메모리(RAM) 내 저장으로 빠른 데이터 액세스 데이터 유형: String, Set, Sorted Set, Hash, List 영속성 snapshot: 특정 시점의 메모리 데이터를 디스크에 백업 AOF(Append Only File): 모든 쓰기 작업을 기록하는 로그 파일로, 예기치 않게 데이터가 사라져도 로그를 다시 실행해 데이터 복구 가능 활용 캐싱: 로그인 세션, JWT, API 호출 결과 실시간 분석: 순위, 통계 Pub/Sub 패턴: 실시간 채팅, 이벤트 메시징 처리 더보기
저장 프로시저 저장 프로시저 데이터베이스에 저장되어, 필요할 때마다 호출하여 실행할 수 있는 SQL 문의 집합. 장점 성능 향상: SQL문이 미리 컴파일되며, 프로시저 캐시에 저장 보안: 사용자에게 직접 데이터에 접근할 권한을 주지 않고, 프로시저에만 권한 줌 코드 재사용 트래픽 감소: SQL문 전체가 아닌, 프로시저명만 전달하면 됨 단점 성능: 문자, 숫자 연산에서 C나 Java보다 성능이 느림 호환성: 다른 데이터베이스 시스템과의 호환성이 낮음 디버깅, 테스트: 특정 DBMS에 종속적인 도구 필요. 더보기
SQL injection 악의적인 SQL 코드를 데이터베이스 시스템에 삽입하고 실행시키는 공격 기법 공격 방법 Blind SQL injection: 응답 시간이나 참과 거짓의 정보만을 통해 정보 추출 Error based SQL injection: 에러 정보를 이용하여 구조 파악, 데이터 추측 Union based SQL injection: UNION SQL 연산자를 데이처 추출 Stored Procedure SQL injection: SQL 명령어 집합인 Stored Procedure를 이용해 공격 Mass SQL Injection: 한 번의 공격으로 다량의 DB가 조작, DB에 악성스크립트를 삽입해 공격 방어 방법 입력값 검증 Prepared Statements 사용: SQL 쿼리 실행 시 입력값을 분리하여 삽입 에러 메시지.. 더보기
트랜잭션(Transaction) 트랜잭션(Transaction) 데이터베이스의 상태를 변화(SELECT, UPDATE, INSERT, DELETE)시키기 위해 수행하는 작업 단위 ACID 속성 원자성(Atomicity): 트랜잭션 내의 모든 연산은 전부 성공하거나 전부 실패 일관성(Consistency): 트랜잭션이 성공하면, 데이터베이스의 규칙과 제약을 만족하는 일관된 상태로 변화 격리성(Isolation): 동시에 실행되는 트랜잭션들이 서로의 연산에 영향을 주지 않음 지속성(Durability): 트랜잭션이 성공하면, 그 결과는 시스템에 영구적으로 반응 연산 Commit: 트랜잭션 동안 수행된 모든 연산이 성공적으로 완료되었고 일관성을 유지했다고 알리는 연산 Rollback: 트랜잭션 내에서 수행된 모든 연산을 취소하고, 데이터베이.. 더보기
인덱스(Index) 인덱스(Index) 데이터베이스에서 데이터 검색 속도를 향상시키기 위해 사용되는 자료 구조 특정 컬럼에 인덱스를 생성하면 데이터를 정렬한 후 별도의 메모리 공간에 key(컬럼 값), value(주소) 쌍 저장 장점 검색 성능 향상: 인덱스를 사용하면 테이블 전체를 스캔하는 대신, 효율적으로 데이터를 검색하여 성능을 크게 향상 데이터 정렬: 인덱스는 데이터를 정렬된 상태로 유지하여, 범위 검색과 정렬된 데이터에 대한 질의를 빠르게 처리 단점 저장 공간 사용: 추가적인 디스크 공간을 사용합니다. 유지 비용: 삽입, 삭제, 업데이트 시 인덱스도 함께 갱신되어야 하므로, 성능에 부담 언제 사용? 규모가 큰 테이블 삽입, 수정, 삭제 작업이 자주 발생하지 않는 컬럼 WHERE, ORDER BY, JOIN 등이 자.. 더보기
정규화(Normalization) 정규화(Normalization) 데이터베이스 설계 과정에서 데이터 중복을 최소화하고, 데이터 무결성을 유지하기 위해 데이터를 구조화하는 과정 제1정규형(1NF) 각 컬럼의 값이 원자값(하나의 값)이어야 함 학생번호 이름 수강 강의 1 김수환 DB 2 유길선 운영체제 3 탁재민 네트워크, 그래픽스 네트워크, 그래픽스 분리 학생번호 이름 수강 강의 1 김수환 DB 2 유길선 운영체제 3 탁재민 네트워크 3 탁재민 그래픽스 제2정규형(2NF) 제1정규형을 만족하며, 모든 비-기본키 컬럼이 기본키에 완전 함수 종속(기본키의 부분집합이 다른 값을 결정하지 않는 것) 이어야 함 학생번호 이름 수강 강의 성적 1 김수환 DB 3 2 유길선 운영체제 3.5 3 탁재민 네트워크 4 3 탁재민 그래픽스 2 위 테이블의 .. 더보기
SQL vs NoSQL SQL(관계형 DB) 행(레코드)과 열(속성)로 구성되는 테이블 간의 관계를 사용하여 데이터를 저장하고 관리 스키마를 사용하여 데이터 구조를 정의 MySQL, PostgreSQL 등 장점 스키마를 사용해 데이터 무결성 보장(정확성, 일관성, 유효성 유지) 복잡한 조인과 쿼리 처리 가능 단점 스키마의 변경, 유연한 데이터 모델링이 어려움 대체로 수직적 확장(단일 서버 성능 향상)만 가능, 수평적 확장(데이터 분산)은 힘듦 NoSQL 키-값 스토어(Key-Value Store): 쌍으로 데이터를 저장 데이터 캐싱, 일시적인 속성 추적(장바구니 등), 대용량 객체(이미지, 오디오 등) 저장에 사용 예시: Redis, Amazon DynamoDB 문서형(Document Store): 문서(json, xml 등).. 더보기
DB Key, JOIN Key 슈퍼 키(Super Key): 행을 고유하게 식별할 수 있는 속성 또는 속성의 집합(유일성) 후보 키(Candidate Key): 슈퍼 키 중 더 이상 줄일 수 없는 키(유일성 + 최소성) 복합 키(Composite Key): 두 개 이상의 속성을 조합하여 만든 키 기본 키(Primary Key): 후보 키 중에서 식별자로 이용하기에 가장 적합한 것으로 선택된 키 대체 키(Surrogate Key): 후보 키 중에서 기본 키로 선택되지 않은 키 외래 키(Foreign Key): 한 테이블의 속성 중 다른 테이블의 행을 식별할 수 있는키(다른 테이블의 기본키를 참조) JOIN 결합 같은 속성을 가지는 두 개 이상의 테이블의 레코드를 결합하여 데이터를 검색하는 방법 Inner Join: 두 테이블 간.. 더보기