본문 바로가기

Web Sever 개발과 CS 기초/DB 지식

(11)
DB OLTP와 OLAP 차이 OLTP(Online Transaction Processing) 온라인 트랜잭션 처리의 약자이다. 데이터베이스 수정을 관리한다. OLTP의 목적은 정확하고 빠르게, INSERT, UPDATE, DELTEE처리 하는 것을 의미한다. 예를 들어 알아보면, 회원가입, 회원 가입 테이블에 이름 id 등 정보를 INSERT하기 비밀번호 변경, 회원 가입 테이블에 비밀번호 정보를 UPDATE하기 회원 탈퇴, 회원 가입 테이블에 사용자의 정보를 DELETE하기 OLAP(Online Analytical Processing) 온라인 분석 처리의 약자이다. DB에 저장되어 있는 데이터를 분석하는 것을 의미한다. OLAP의 목적은 데이터 분석, 통계를 통해 사용자의 의사 결정에 도움을 주는 것이다. 예를 들어 알아보면, 오..
MySQL 데이터 타입 이해와 Java와 Type Mapping(+MSSQL) MySQL Data Type Mapping MySQL 설명 Java TINYINT 1바이트(-128~127) 이론으로 byte, Byte가 맞는데 현실적으로 Java boolean과 맵핑을 한다. boolean, Boolean INT 4바이트(-21억 ~ 21억) int, Integer BIGINT, BIGINT UNSIGJNED 8바이트 primary key Id의 타입으로 많이 사용한다. long, Long FlOAT 4바이트 - 부동 소수점 타입 - 실수 값을 대략적으로 표현 float, Float DOUBLE 8바이트 - 부동 소수점 타입 double, Double DECIMAL(M,D) (고정 소수텀 타입) 정확한 실수 값 표현하기 위해, M은 소수 부분을 포함한 실수 총 자릿수, D는 소수 부..
Read 시도 후 없으면 Insert , 있으면 Update 쿼리를 만들면 안 되는 이유 +Upsert 쿼리 알아보기 개요 목적 데이터 베이스를 사용할 때, Read 시도 후 없으면 Insert , 있으면 Update 쿼리를 만들면 안 되는 이유에 대해서 알아보자. 그리고 이 문제를 해결할 다양한 DB에서 직접 제공하는 Upsert 쿼리에 대해서 알아보자. Read 시도 후 없으면 Insert , 있으면 Update 쿼리를 만들면 안 되는 이유 그 이유는 해당 글, DB Lock에 대한 이해와 MySQL Lock의 특징 MySQL 락의 특징에서 나온, Lock을 걸 때 행 단위 Record Lock을 걸기 때문이다. Record Lock이란, primary key 또는 unique index (multi-column unique index 포함)로 조회해서 하나의 인덱스 레코드(=row=행)에만 lock을 거는 것을 의..
DB Lock에 대한 이해와 MySQL Lock의 특징 개요 목적 이번 시간에는 DB Lock에 대해서 알아본다. 먼저 DB 락의 필요성과 역할을 알아본 후에 Lock종류와 Lock에서 발생할 수 있는 문제도 알아본다. 그리고 Lock 문제 중 데드락을 해결하는 방법을 제시한다. 마지막으로, 많이 쓰이는 MySQL은 어떻게 Lock을 사용하고 있는지 알아보자. DB Lock의 필요성과 역할 DB Lcok이란, 한 세션에서 트랜잭션을 시작하고 데이터를 수정하는 동안 커밋이나 롤백되기 전에는 다른 세션이 해당 데이터를 수정할 수 없게 하는 역할을 한다. 그렇지 않으면, 데이터의 무결성을 보장할 수 없다. Lock 개념과 헷갈리는 트랜잭션의 개념과 글에서 자주 나오는 세션 개념을 아래 블로그 글에서 확인할 수 있다. [백엔드/데이터베이스] - Transaction..
정규화(1,2,3,BNCF) 쉽게 이해하기 개요 목적 이번 시간에는 데이터 베이스 정규화에 대해서 알아본다. 데이터 베이스 정규화란, 잘못된 데이터 베이스 설계에서 발생하는 이상현상을 해결하고, 저장 공간을 효율성을 증가하기 위해, 테이블을 여러개로 분리하는 과정이다. 정규화 방법에는 1차, 2차, 3차, BCNF, 4차, 5차 정규화가 있다. 실무에서 주로 쓰이는 1, 2, 3, BNCF 정규화 방법과 예시를 통해 어떻게 데이터를 깔끔하고, 이상 현상을 방지하는 지 알아보자. 이상현상이란, 데이터베이스의 설계를 잘못하게 되었을 때 데이터 삽입, 갱신, 삭제 연산을 수행할 대 부작용이 발생하는 것을 의미한다. ex) 삽입 이상 - 불필요한 데이터도 같이 삽입해야 하는 문제 윤성빈은 이벤트에 참여하지 않았는데, 관련 컬럼이 있어서, null이라는 ..
DB Isolation Level 격리 수준 이해하기 개요와 목적 [백엔드/DB 지식] - DB Lock에 대한 이해와 MySQL Lock의 특징 해당 글에서는, 트랜잭션을 시작하면, 데이터를 DB Lock 설정으로, 다른 트랜잭션은 해당 데이터 접근을 막아 동시성 문제를 해결함을 배웠다. 이번 시간에는, 트랜잭션 격리성 레벨에 대해서 알아본다. 격리성 레벨에 따라 트랜잭션이 가지는 격리성(동시성 해결 능력)과 동시성(동시에 실행되는 정도)이 달라진다. 예를 들어 가장 강한 정도의 격리성 레벨, 완전히 순차적 실행이 되면 격리성(동시성 해결 능력)은 높아지지만 동시성은 너무 낮아져서 DB 처리 속도가 너무 느려진다. 한 트랜잭션이 읽기 작업만 해도, 다른 트랜잭션은 끝날 때까지 기다려야 하기 때문이다. (트랜잭션의 격리성과 동시성은 반비례 관계이다.) 각 ..
데이터베이스 구성 요소와 키(PK, FK)에 대한 이해 개요 목적 이번 글에서는 데이터 베이스 구성 요소에 대한 용어 설명과 PK와 FK와 중심으로 데이터를 구별해주는 데이터베이스 키에 대해서 알아본다. 엔티티, 릴레이션, 속성, 도메인 엔티티 엔티티는 비지니스 서비스의 요구에 맞춰 여러 개의 속성을 지닌 명사이다. 예를 들어, 게임 서비스에서 가입자를 나타내기 위해 아이디, 비밀번호, 이름, 생년월일, 별명의 속성을 지닌 회원 엔티티를 만들 수 있다. 릴레이션 위에서 만든 엔티티가 데이터베이스에서 관리될 때 릴레이션이라는 단위로 변화한다. 릴레이션이란, 데이터베이스에서 정보를 구분하여 저장하는 가장 기본 단위이다. 릴레이션은 관계형 데이터베이스에서는 테이블이라고 하고, NoSQL에서는 컬랙션이라고 한다. 예를 들어, 관계형 데이터 베이스 회원 테이블(릴레이..
DB Index 이해하기 인덱스란 무엇인가 인덱스란, 별도의 저장 공간을 사용하여, 데이터베이스의 검색 속도 높여 주는 장치이다. 인덱스가 어떻게 생성되는 지, 왜 검색 속도를 높여주는 지 예시를 통해서 알아보자. 오른쪽 테이블에는 물리적 주소와 이름과 email 값이 저장되어 있다. 인덱스가 존재 하지 않는 상황에서, 이름이 SMITH인 사람의 Email을 모두 알아낸다고 가정하자. 인덱스가 없다면, 맨 위부터 100000번째 아래 데이터를 모두 훑으며 이름이 SMITH인 데이터를 일일이 발견해야 한다. 하지만 인덱스를 만들어 이름이 SMITH인 Eamil을 찾는 과정을 알아보자. 먼저 인덱스 값으로 사용할 이름과 실제 데이터 위치를 나타내주는 물리적 주소 값을 가져온다. 그리고 이름 값들을 알파벳 순으로 정렬한다. 정렬되어 ..

반응형