레디스란? Redis는 Remote Disctionary Server의 약자로 키(Key) : 값(Value) 해시 맵과 같은 구조를 가진 NoSQL 데이터베이스이다. MySQL, Oracle같은 일반 DB와 다르게 하드 디스크(SSD, HDD)에서 데이터를 처리 하는 것이 아니라, Redis는 In-Memory(인메모리) 기반의 DB로 메인 메모리(DRAM)에서 데이터를 처리하기 때문에 작업 속도가 월등히 빠르다. DRAM과 SSD, HDD의 비교 메모리 계층 구조는 다음과 같이 여러 계층이 있지만 인메모리DB와 일반 DB를 비교하기 위해 2가지에 대해서만 비교 하고 넘어 가고자 한다. 특징 DRAM (메인 메모리) SSD, HDD (하드 디스크) 가격 하드 디스크 보다 비쌈 제일 저렴 지속성 휘발성 ..
MySQL에 주기적으로 특정시간에 DB에 어떤 작업을 해주어야 할 상황이 생길 때가 있다. 나는 이번에 쇼핑몰 프로젝트를 진행하면서 "장바구니에 담긴 상품은 최대 15일까지 보관되며 자동으로 삭제됩니다." 라는 장바구니의 정책이 있어서 이를 MySQL의 이벤트 스케쥴러와 프로시저를 활용하여 매일 자정에 15일이 지난 상품을 장바구니 테이블에서 삭제하도록 만들었다. 프로시저(Procedure) 프로시저는 MySQL의 함수(메서드)를 만드는 것이라고 보면 된다. 실행할 쿼리문을 함수로 빼서 재사용가능하고, 이 프로시저의 쿼리에 조건문이나 반복문도 함께 사용할수가 있다. 프로시저 생성 나같은 경우에는 현재날짜와 cart 테이블에 데이터가 생성된 시점을 비교해 15일이 지났으면 삭제하는 간단한 프로시저를 만들었..
정규화란? 데이터베이스 정규화는 데이터베이스 내의 데이터 구조를 조직화하고 최적화하는 과정이다. 정규화를 하는 목적은 데이터 중복을 제거하고, 효율성을 향상시키며, 데이터 무결성을 보장하기 위함이다. 데이터 정규화에는 다음과 같이 여러 단계가 있다. 제1 정규화 (1NF) 제2 정규화 (2NF) 제3 정규화 (3NF) 이상 종류 이상 종류란 정규화를 거치지 않은 데이터에서 발생할 수 있는 현상을 말한다. 삽입 이상 (Insertion Anomaly) : 데이터 삽입 시 의도와 다른 값들도 삽입 삭제 이상 (Delete Anomaly) : 데이터 삭제 시 의도와 다른 값들도 연쇄 삭제 갱신 이상 (Update Anomaly) : 속성값 갱신 시 일부 튜플만 갱신되어 모순 발생 제1 정규화 (1NF) 데이터..
DDL(Data Definition Language) - 데이터 정의어 데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 한다. 쉽게 말해 데이터베이스의 테이블을 생성하고, 수정하고, 삭제하는 언어이다. create : 데이터베이스, 테이블등을 생성 alter : 테이블을 수정 drop : 데이터베이스, 테이블을 삭제 truncate : 테이블을 초기화 DML(Data Manipulation Language) - 데이터 조작어 정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 한다. 쉽게 말해 DB 테이블의 컬럼과 로우를 조작하는 언어이다. 저장된 데이터를 실질적으로 처리하는데 사용된다. select : 데이터 조..
우선 Lock에 대해 알아보기 전에 트랜잭션에 대한 이해가 필요하므로 트랜잭션에 대해 모른다면 아래 포스팅을 참고하시길 바랍니다. 트랜잭션이란? 특징과 사용법에 대해 쉽게 알아보자 트랜잭션(Transaction) 트랜잭션은 DB의 상태를 변경시키기 위해 수행하는 작업 단위입니다. 여기서 DB의 상태를 변경시킨다는 SELECT, UPDATE, INSERT, DELETE 와 같은 쿼리를 날려 연산을 수행하는 것입니 hstory0208.tistory.com 락(Lock)이란 ? 두 명의 사용자가 DB에 접근해 아래 처럼 2개의 DB 세션을 사용한다고 가정해봅시다. ( 여기서는 H2 DB 사용 ) 편의상 두 개의 세션을 나눠서 세션1, 세션2라고 부르겠습니다. 세션1이 트랜잭션을 시작하고 데이터를 수정하는 동안..
트랜잭션(Transaction) 트랜잭션은 DB의 상태를 변경시키기 위해 수행하는 작업 단위입니다. 여기서 DB의 상태를 변경시킨다는 SELECT, UPDATE, INSERT, DELETE 와 같은 쿼리를 날려 연산을 수행하는 것입니다. 트랜잭션을 좀 더 쉽게 풀이해서 이야기 하자면, 트랜잭션을 한국어로 번역하면 "거래" 즉, DB에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것이라고 할 수 있습니다. 그런데 여기서 거래를 안전하게 처리하도록 보장해준다는 말이 무엇일까요? 이 얘기를 쉽게 이해하기 위해 우리가 일상속에서 자주 이용하는 계좌이체를 예시로 들 수 있습니다. 계좌이체 예시 ( 트랜잭션이 없을 경우 ) 짱구와 철수가 있습니다. 짱구와 철수는 각각 계좌에 10000원씩 있습니다. 짱..