목록DB (20)
쏭의 개발 블로그
프로젝트에서 PostgreSQL에서 JSON 타입을 저장하기로 했다. PostgreSQL에서는 JSON 타입은 JSON과 JSONB가 있으며, 둘다 JSON 포맷 유효성 체크를 한다. JSONJSON은 데이터를 문자열 그대로 저장처리 함수가 각 실행에 대해 파싱이 필요장점원시 텍스트 형태로 저장되어있으므로 저장이 빠르고 간단단점조회나 데이터를 조작하는 경우 성능 저하 발생 가능JSON의 특정 Key나 Value를 조회하려면 전체 문자열을 읽은 다음 해당 부분을 해석하는 과정이 필요인덱싱을 할 수 없다.의미 없는 공백을 저장한다.사용 시 고려사항:저장만 하고 읽거나 필터링하지 않는 경우에 적합 JSONB (binary JSON)JSONB 타입JSON 데이터를 구조화된 binary 형식으로 저장Postgre..

이번 포스트에서는 Redis에 대해 간단히 설명하고 Redis 데이터 백업 전략에 대해 알아본다. [1] Redis란?오픈소스 기반의 In-memory 데이터 저장소로, Key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 비관계형 데이터베이스 관리 시스템이다. 데이터베이스, 캐시, 메시지 브로커 등 다양한 용도로 사용할 수 있으며, 정해진 스키마가 없고 유연한 데이터 모델을 사용하는 NoSQL Database이다. 외부에서 사용 가능한 Key-Value 쌍의 해시맵 형태의 서버로 별도의 쿼리문 없이 Key값으로 빠르게 결과를 가져올 수 있다. Redis는 아래과 같은 특징을 가지고 있다.In-memory Database : 디스크가 아닌 메모리에서 데이터를 처리하여 매우 빠른 데이터 엑세스 ..
[1] 동시성 제어여러 사용자가 동시에 데이터에 접근할 때 데이터의 일관성과 무결성을 유지하기 위해 필수적이다.이를 통해 데이터 충돌을 방지하고 데이터 손실이나 오류 없이 시스템 안정성과 신뢰성을 확보할 수 있다.동시성 제어 전략 : 비관적 락, 낙관적 락 [2] 비관적 락 (Pessimistic Lock)데이터 접근 시에 항상 충돌이 발생할 가능성이 있다고 가정하고, 데이터를 보호하가 위해 항상 락을 걸어 다른 트랜잭션 접근을 방지한다.데이터의 변경이 발생할 가능성을 미리 차단하여 데이터의 일관성을 보장다른 트랜잭션들은 락이 해제되기까지 대기한다. 락을 오래 점유하고 있으면 성능 저하나 deadlock 등으로 인한 장애 문제가 발생할 수 있다.비관적 락을 사용할 때는 락의 범위와 지속 시간을 신중하게..

Redis를 공식적으로 리눅스 기반의 OS만 지원한다. Windows 환경 자체적으로 설치하는 것이 불가능해서 WSL2를 사용하거나 아래 URL에서 지원하는 Windows OS 버전을 사용할 수 있다. https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redisgit..

Index Scan이란?Index Scan은 테이블을 조회할 때 ,인덱스를 활용하여 데이터를 검색하는 방식이다. Full Table Scan (Sequential Scan)테이블에 존재하는 모든 데이터를 읽어가면서 조건에 맞으면 결과로 추출하고, 조건에 맞지 않으면 버리는 방식이다.인덱스를 거치지 않고 테이블 데이터에 직행하여 처음부터 끝까지 스캔하는 방식으로, 테이블의 모든 레코드를 순차적으로 조회한다. 디스크 I/O 비용이 많이 발생하며 대량의 데이터를 처리할 때는 시스템 성능에 부정적인 영향을 미칠 수 있다.대량의 데이터에 접근할 때 Full Table Scan을 활용하면 인덱스를 통한 랜덤 엑세스가 발생하지 않아 이점이 있다. Full Table Scan의 사용Full Table Scan은 다음 ..

DB Connection PoolWAS - DB 연결과 DB 커넥션 풀DB 커넥풀에 대해 설명하기에 앞서, WAS와 DB연결에 대해 말하자면 다음과 같다.WAS와 DB는 평상시에 연결되어있는 것이 아니라 Request가 오는 시점에 연결하고 정보를 가져온다. 이때 연결 시 TCP/IP 핸드셰이크와 같은 여러 단계를 거쳐야하므로 상당한 시간이 걸린다.웹에서 수많은 클라이언트가 동시다발적으로 웹서비스에 접근해 Request들을 날리는 경우 시간 지연 문제가 발생한다. 이를 해결하기 위해 DB Connection Pool을 만들어 DB 연결을 미리 해두는 것이다.위 그림을 예로 들면, 5개의 연결을 미리 해두고, request가 들어오면 연결된 것들을 통해 정보를 가져온다. 또 다른 request가 들어오면 ..

1. 트리거란? 특정 테이블에 대한 이벤트에 반응해 INSERT, DELETE, UPDATE 같은 DML문이 수행되었을 때 데이터베이스에서 자동으로 동작하도록 작성된 프로그램 별도로 호출해야하는 저장프로시저와 달리 특정한 조건이 되면 자동으로 호출 저장프로시저 중 하나 종류 행 트리거 : 데이터 변화가 생길 때마다 실행 문장 트리거 : 트리거에 의해 단 한 번 실행 2. 트리거의 구성 3. 트리거 문법 트리거 정의 CREATE TRIGGER 트리거명 BEFORE|AFTER CRUD ON 테이블명 (FOR EACH ROW) BEGIN OLD.컬럼명(변경 전) 또는 NEW.컬럼명(변경 후)을 이용한 처리 END 트리거 삭제 DROP TRIGGER 프로시저명; https://i-hope9.github.io/2..

1. 저장프로시저란? 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합 DB에 대한 작업을 정리한 절차를 RDBMS에 저장한 쿼리의 집합 특징 영구저장모듈 SQL 서버에서 제공되는 프로그래밍 기능. 쿼리문의 집합 어떠한 동작을 일괄처리하기 위한 용도로 사용 자주 사용되는 일반적인 쿼리를 모듈화시켜서 필요할 때마다 호출 테이블 처럼 각 데이터베이스 내부에 저장 2. 저장프로시저 문 오라클 기준 생성 CREATE OR REPLACE PROCEDURE 프로시저명(변수명1,변수명2,...) IS 변수 BEGIN SQL; END 프로시저명; 호출 EXEC 프로시저명; 삭제 DROP PROCEDURE 프로시저명; 3. 저장 프로시저의 장단점 1) 장점 (1) SQL 서버의 성능 향상 저장 프로시저의 2..