본문 바로가기

db

(7)
정규화(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을 찾는 과정을 알아보자. 먼저 인덱스 값으로 사용할 이름과 실제 데이터 위치를 나타내주는 물리적 주소 값을 가져온다. 그리고 이름 값들을 알파벳 순으로 정렬한다. 정렬되어 ..
Transaction과 ACID 쉽게 이해하기(+MySQL transaction 설정 방법) 개요와 목적 이번 글에서는 DB의 무결성을 보장해주는 트랜잭션의 개념에 대해서 알아본다. 그리고, 무결성을 보장하는 트랜잭션의 특징인 ACID에 대해서도 알아본다. Transaction 트랜잭션이란, 명령어들이 뭉쳐진 하나의 작업 덩어리를 의미한다. 분할 할 수 없는, 작업 덩어리라고 말할 수 도 있다. 예시를 통해, 분할 되어서는 안 되는 작업 덩어리가 무엇인지 알아보자. 은행 서비스를 이용해, 월세를 지불하는 상황이다. → 먼저 세입자 통장에서 월세 60만원이 인출 된다. → 집주인 통장으로 60만원이 입금 된다. 그런데, 만약 60만원 인출 작업만 성공하고, 입금 작업은 실패한다면, 허공에 돈이 날아가는 문제가 발생한다. 즉 60만원 인출과 60만원 입금은 동시에 성공하던지, 동시에 실패 해야 하는..
SQL 언어 DML, DDL, DCL, TCL 이해하기 개요와 목적 먼저 관계형 데이터 베이스 관리 조작 언어인 SQL를 간단히 알아보고, 관계형 데이터 베이스 구조 별로 사용하는 SQL 언어인 DML, DDL, DCL,TCL에 대해서 알아보자 SQL이란 SQL이란 관계형 데이터베이스를 관리하고 조작하는 언어이다. 관계형 데이터 베이스에 대한 설명은 아래 글을 통해 확인 할 수 있다. SQL은 프로그래밍 언어가 아닌, 쿼리 언어를 사용한다. 특징으로, 영어 문장 형식과 비슷한 질의를 통해 데이터 베이스와 소통한다. 영어 문장 구조와 비슷한 SQL예시를 알아보자. SELECT * FROM students WHERE age>21; students 테이블에서 나이가 21 이상인 정보 조회하는 요청이다.. DELETE FROM students WHERE id=2; ..
RDBMS 관계형 데이터 베이스 이해하기 개요와 목적 이번 시간에는 관계형 데이터에 대해서 알아본다. 관계형 데이터 베이스의 뿌리가 되는 데이터 베이스에 대해서 먼저 알아보고, 관계형 데이터 베이스 핵심인 테이블 연결 기능이 어떤 편리함을 주는 지 알아본다. 마지막으로 관계형 데이터 베이스의 구조도 알아본다. 데이터 베이스란, 필요성과 기능. RDBMS전에, 기반이 되는 데이터베이스의 필요성과 데이터를 관리 하는 기능을 알아보자. 파일을 통해, 데이터를 관리하는 것이 얼마나 불편한 지 알게 되면, 데이터 베이스의 필요성과 기능을 파악할 수 있다. 텍스트 파일을 통해서, 제목, 내용, 날짜, 저자, 저자 프로필을 파일로 관리한다면 문제점이 무엇이 있을까? 이렇게 파일 형식으로 한다면, egoing이라는 저자가 작성한 데이터를 찾으려면 모든 파일을..

반응형