데이터베이스 20

ORACLE(오라클) LISTAGG 함수 정리

Oracle에서 문자열을 집계(aggregation)할 때 유용하게 사용하는 함수 중 하나가 바로 LISTAGG입니다. 주로 GROUP BY 결과를 문자열로 연결하고 싶을 때 사용하며, 실무에서 보고서, 로그 분석, 그룹별 항목 나열 등에 자주 활용됩니다.1. LISTAGG 함수란?LISTAGG는 집계 함수로, 그룹 내 다수의 행 값을 구분자를 사용하여 하나의 문자열로 결합해 줍니다.Oracle 11g R2 (11.2)부터 지원되며, 버전별로 동작 방식에 차이가 있습니다.2. 기본 문법LISTAGG(컬럼명, '구분자') WITHIN GROUP (ORDER BY 정렬기준컬럼)컬럼명: 연결할 문자열 컬럼'구분자': 각 값 사이에 넣을 구분자 (예: 쉼표 ,, 슬래시 / 등)WITHIN GROUP (ORDER..

Oracle 2025.06.19

SQL Injection이란?

SQL Injection이란?SQL Injection은 클라이언트가 입력한 데이터에 악의적인 SQL 구문을 삽입하여, 백엔드 데이터베이스를 조작하거나 불법적으로 데이터를 조회/변경하는 공격 방식입니다.공격자는 사용자의 입력값을 통해 의도치 않은 SQL문을 실행시키는 것이 핵심입니다.공격 원리보통 다음과 같은 코드가 있을 때:String query = "SELECT * FROM users WHERE username = '" + inputUsername + "' AND password = '" + inputPassword + "'";inputUsername이나 inputPassword에 아래와 같은 값을 입력하면?username: ' OR '1'='1password: ' OR '1'='1최종 SQL문은 ..

DataBase 2025.04.23

데이터베이스 레플리케이션(Replication)이란?

서비스의 고가용성(High Availability)과 성능 향상은 모든 시스템 설계자가 고민하는 주제입니다. 특히 데이터베이스는 시스템의 핵심이기 때문에 장애 발생 시 피해가 막대할 수 있습니다. 이 문제를 해결하기 위한 방법 중 하나가 데이터베이스 레플리케이션입니다.1. 레플리케이션이란?**레플리케이션(Replication)**은 하나의 데이터베이스에 있는 데이터를 다른 데이터베이스로 복제하여 동기화하는 기술입니다. 일반적으로 하나의 마스터(Master) 또는 프라이머리(Primary) 데이터베이스에서 슬레이브(Slave) 또는 세컨더리(Secondary) 데이터베이스로 데이터를 복제합니다.이렇게 하면 읽기 부하 분산, 장애 복구, 데이터 백업 등의 다양한 목적을 달성할 수 있습니다.2. 왜 레플리케이..

DataBase 2025.04.09

DBCP(Database Connection Pool)이란?

DBCP(Database Connection Pool)는 데이터베이스와의 연결을 효율적으로 관리하기 위한 기술이다. 애플리케이션이 데이터베이스와 통신할 때, 매번 새로운 커넥션을 생성하고 해제하는 것은 성능에 부담을 준다. 이를 해결하기 위해 커넥션 풀(Connection Pool) 이라는 개념이 등장했다.커넥션 풀은 일정 개수의 데이터베이스 커넥션을 미리 생성해두고, 필요할 때 가져다 쓰고 반환하는 방식으로 동작한다. 이를 통해 애플리케이션 성능을 최적화하고, 데이터베이스 부하를 줄일 수 있다.DBCP가 필요한 이유1. 커넥션 생성 비용 절감데이터베이스 커넥션을 생성할 때는 네트워크 통신, 인증, 세션 설정 등의 과정이 필요하다.매 요청마다 커넥션을 생성하면 많은 리소스가 낭비된다.DBCP를 사용하면 ..

DataBase 2025.03.31

데이터베이스 샤딩(Sharding)이란?

**데이터베이스 샤딩(Sharding)**은 데이터를 여러 데이터베이스 서버에 분산시켜 저장하는 기술입니다. 샤딩은 특히 대규모 시스템에서 데이터베이스 성능과 확장성을 향상시키기 위해 사용됩니다. 이 글에서는 데이터베이스 샤딩의 개념, 필요성, 구현 방법, 그리고 장단점에 대해 자세히 설명합니다.1. 데이터베이스 샤딩(Sharding) 개념샤딩은 수평적 분할(horizontal partitioning) 기법의 일종으로, 대용량의 데이터를 여러 데이터베이스 서버에 나누어 저장하는 방식입니다. "Sharding"이라는 용어는 **조각(shard)**이라는 의미를 가지고 있으며, 데이터베이스의 데이터가 여러 개의 독립된 조각으로 나뉘어 저장되는 것을 의미합니다.각각의 데이터베이스 서버(샤드)는 독립적으로 데이..

DataBase 2025.03.18

RDBMS와 NoSQL

RDBMS(Relational Database Management System)와 NoSQL(Not Only SQL)은 데이터 저장 및 관리 방식에서 큰 차이를 보이는 두 가지 주요 데이터베이스 시스템입니다. 각각의 데이터베이스는 특정 요구사항에 맞게 설계되었으며, 특정 환경에서 더 적합하게 사용될 수 있습니다. 이 글에서는 RDBMS와 NoSQL에 대한 기본 개념, 차이점, 장단점에 대해 자세히 살펴보겠습니다.1. RDBMS (Relational Database Management System)RDBMS는 데이터가 테이블 형식으로 저장되고, 테이블 간의 관계가 정의된 데이터베이스 시스템을 의미합니다. 데이터는 **행(Row)**과 **열(Column)**로 구성된 테이블에 저장됩니다. RDBMS는 SQ..

DataBase 2025.03.18

데이터베이스(DB) 정규화와 비정규화

데이터베이스 정규화(Normalization)와 비정규화(Denormalization)의 정의와 함께 각 기법이 어떻게 적용되는지 예시를 통해 설명하겠습니다.  1. 데이터베이스 정규화(Normalization)정규화는 데이터베이스에서 중복을 최소화하고 데이터를 효율적으로 관리할 수 있도록 테이블을 구조화하는 과정입니다. 이 과정은 여러 단계로 나뉘며, 각 단계는 '정규형(Normal Form)'이라고 불립니다.정규화의 목적중복 제거: 같은 데이터를 여러 번 저장하지 않도록 한다.데이터 무결성 유지: 잘못된 데이터가 삽입되지 않도록 한다.검색 효율성 향상: 데이터를 쉽게 찾을 수 있도록 한다.정규화 과정제1정규형(1NF): 각 열에 원자 값(Atomic Value)만 포함되도록 하는 규칙입니다. 즉, 각..

DataBase 2025.01.16

ORACLE(오라클) ROWNUM 함수

Oracle 데이터베이스에서 ROWNUM은 결과 집합 내의 각 행에 대해 고유한 번호를 부여하는 가상 컬럼입니다. 이는 데이터를 제한하거나 특정 조건에 맞는 행을 빠르게 필터링하는 데 사용됩니다. ROWNUM의 특징결과 집합 생성 순서: ROWNUM은 쿼리가 처리되는 순서에 따라 행 번호를 부여합니다.임시 컬럼: ROWNUM은 실제 데이터베이스 테이블의 컬럼이 아니며, SELECT 쿼리에서만 존재합니다.제약 사항: ROWNUM은 WHERE 절에서 조건으로 사용될 때 동작 방식에 주의가 필요합니다.기본 구문SELECT ROWNUM, column1, column2FROM table_name;예제 1: 간단한 데이터 제한테이블에서 상위 5개의 행만 가져오고 싶을 때 사용합니다.테이블 구조CREATE TABLE..

Oracle 2025.01.09

ORACLE(오라클) ROW_NUMBER() 함수

Oracle 데이터베이스에서 ROW_NUMBER() 함수는 순차적인 숫자를 생성하여 결과 집합 내의 각 행에 고유한 번호를 부여하는 데 사용됩니다. 이는 주로 데이터 순서를 지정하거나 특정 조건에 따라 데이터를 필터링할 때 유용합니다. 함수 구조ROW_NUMBER() OVER (PARTITION BY ORDER BY )PARTITION BY: 데이터를 그룹화하는 기준을 지정합니다. 각 그룹별로 ROW_NUMBER()가 독립적으로 계산됩니다.ORDER BY: 각 그룹 내에서 행 번호를 매기는 기준이 되는 정렬 순서를 지정합니다.사용 사례중복 데이터 제거페이징 처리그룹 내 특정 순위의 데이터 추출예제 1: 중복 데이터 제거중복된 데이터를 가진 테이블에서 최신 데이터만 남기고 나머지를 삭제한다고 가정합니다...

Oracle 2025.01.09

데이터베이스(DB) 트랜잭션(ACID)

🧐 트랜잭션이란?트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위를 뜻합니다. 여러 데이터베이스 연산(INSERT, UPDATE, DELETE 등)을 하나로 묶어서 실행하며, 모든 연산이 성공적으로 완료되거나, 전부 취소(ROLLBACK)되는 것이 보장됩니다.트랜잭션은 데이터 무결성과 일관성을 유지하기 위한 필수적인 메커니즘입니다. 📋 트랜잭션의 특징 (ACID)Atomicity (원자성): 트랜잭션 내의 모든 작업이 성공적으로 완료되거나, 전부 취소됩니다.Consistency (일관성): 트랜잭션이 완료되면 데이터베이스는 항상 일관된 상태를 유지합니다.Isolation (격리성): 하나의 트랜잭션이 실행되는 동안 다른 트랜잭션이 간섭하지 못합니다.Durability (지속성): 트랜잭션이 성공적으..

DataBase 2024.12.31