목록Computer Science/데이터베이스 (7)
mojo's Blog
데이터베이스의 기본 데이터베이스는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터 모음이다. 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS 라고 하며, 데이터베이스 안에 있는 데이터들을 특정 DBMS 마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 데이터베이스 위에 DBMS, DBMS 위에 응용 프로그램이 있으며 이러한 구조로 데이터를 주고 받는다. DBMS 는 예로 MySQL 이 있으며 응용 프로그램에 속하는 Node.js, php 에서 해당 데이터베이스 안에 있는 데이터를 가져와서 해당 데이터 관련 로직을 구축할 수 있다. ※ 엔티티 엔티티는 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미한다. 예를 들어 회원은 이름, 아이디..
Anomaly 정규화를 해야하는 이유는 잘못된 테이블 설계로 인해 Anomaly(이상 현상)이 나타나기 때문이다. 예를 들어서 {Student ID, Course ID, Department, Course ID, Grade} 가 있다고 해보자. ① 삽입 이상(Insertion Anomaly) 예를 들어서 기본키가 {Student ID, Course ID} 두개일 경우, Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생하므로 Course ID를 Null 로 지정해야 한다. 그러나 기본키는 Null이 될 수 없으므로 테이블에 추가할 수 없다. ('미수강' 과 같은 Course ID로 대체 가능하긴 함) 즉, 불필요한 데이터를 추가해야만 삽입할 수 있는 상황을 삽입 이상이라고 한다. ② ..
데이터베이스를 사용하는 이유? 데이터베이스가 존재하기 이전에는 file system 을 이용하여 데이터를 관리하였다. (현재도 부분적으로 사용됨) 데이터를 각각의 파일 단위로 저장하며 이러한 일들을 처리하기 위한 독립적 애플리케이션과 상호 연동이 되어야 한다. 이 때의 문제점은 데이터 종속성 문제와 중복성, 데이터 무결성이 있다. ※ 데이터베이스의 특징 ① 데이터의 독립성 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다. 논리적 독립성 : 데이터베이스는 논리적인 구조로 다양항 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다. ② 데이터의 무결성 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 ..
※ Redis 보통 데이터베이스는 하드 디스크 or SSD 에 저장한다. 하지만 Redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠른 장점이 존재한다. 캐싱도 가능하기 때문에 실시간 채팅에 적합하며 세션 공유를 위해 세션 클러스터링에도 활용된다고 한다. 그러나 RAM 은 휘발성이기 때문에 종료하고 킬 경우 다 날아가는 일이 발생한다. 이를 방지하기 위해서 백업 과정이 존재한다. snapshot : 특정 지점을 설정하고 디스크에 백업 AOF(Append Only File) : 명령(쿼리)들을 저장해두고, 서버가 셧다운될때 재실행해서 다시 만들어 놓음 데이터 구조는 key/value 로 이루어져 있다. (비정형 데이터를 저장하는 비관계형 데이터 베이스 관리 시스템) value 는 총 5..
※ Transaction Transaction 은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위를 의미한다. 어떠한 데이터베이스의 상태를 변화시키는지 ? 상태를 변화시킨다는 것은 SQL 질의어를 통해 DB 에 접근하는 것을 의미한다. 이때 SQL 질의어로 SELECT, INSERT, DELETE, 그리고 UPDATE 총 4개로 구성된다. 어떠한 작업 단위를 수행하는지 ? 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것을 수행한다. 예를 들어 생각해보도록 한다. 사용자 A가 사용자 B에게 100 만원을 보낸다고 가정해본다. 이때 다음과 같이 DB 작업을 수행하도록 정한다. 사용자 A의 계좌에서 100 만원을 차감한다. => UPDATE 문을 통한 사용자 A의 잔고 변경 사용자 B의 ..
정규화 (Normalization) ※ Normalization 데이터베이스의 가장 큰 목표는 테이블 간 중복된 데이터를 허용하지 않는 것이다. 중복된 데이터를 만들지 않으면 무결성을 유지할 수 있으며 DB 저장 용량 또한 효율적으로 관리할 수 있다. 무결성은 무엇인가요? 데이터 무결성이란 컴퓨팅 분야에서 완전한 수명 주기를 거치며 데이터의 정확성과 일관성을 유지하고 보증하는 것을 가리키며 데이터베이스나 RDBMS 시스템의 중요한 기능이다. ※ Normalization의 목적 데이터의 중복을 없애면서 불필요한 데이터를 최소화시킨다. 무결성을 지키고 이상 현상을 방지한다. 테이블 구성을 논리적이고 직관적으로 할 수 있다. 데이터베이스 구조를 확장에 용이해진다. ① 제 1정규화(1NF) 테이블 칼럼이 원자값..