반응형

프로그래밍/DataBase 12

[Redis] 인메모리 데이터베이스 Redis - (1) Introduction

1. What is Redis?  Redis(REmote DIctionary Server)는 캐시 서버로 가장 많이 사용되는 key-value기반 인메모리 데이터베이스다. 프로세스에 할당된 메모리에 데이터를 올려놓고 사용하므로 하드디스크와 같은 대용량 저장장치를 사용하는 RDBMS 같은 타 데이터베이스에 비해 굉장히 빠른 속도가 장점이다. 하지만 대용량 저장장치에 비하면 용량이 매우 작으므로 메인 데이터베이스로 사용하기에는 한계가 있다.  또한 메모리는 volatile한 특성(휘발성)을 가지고 있으므로 프로세스가 종료되면 데이터가 유실될 수 있다. 그래서 Redis는 이러한 단점을 AOF, RDB라는 두가지 백업 방식을 이용해 커버한다. Redis의 백업 방식에 대한 자세한 내용은 뒤에 다시 언급하려고 ..

[SQLD] SQL 기본 및 활용 Section 03. SQL 최적화의 원리

1. 옵티마이저(Optimizer)와 실행 계획 01. 옵티마이저 SQL 개발자가 SQL을 작성하고 실행할 때, 옵티마이저가 SQL을 어떻게 실행할 것인가를 계획함 즉, SQL 실행 계획(Execution Plan)을 수립하고 SQL을 실행함 옵티마이저는 SQL의 실행 계획을 수립하고 SQL을 실행하는 DBMS의 소프트웨어 결과가 같은 SQL문도 어떻게 실행하느냐에 따라 성능이 달라지므로 옵티마이저의 실행 계획은 SQL 성능에 아주 중요한 역할을 함 02. 옵티마이저 특징 데이터베이스에 관한 모든 메타데이터를 가지고 있는 데이터 딕셔너리(Data Dictionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해 예상되는 비용을 산정 여러 개의 실행 계획 중에서 최저 비용을 가지고 있는 계획을 ..

[SQLD] SQL 기본 및 활용 Section 02. SQL 활용 (2) 그룹 함수부터

4. 그룹 함수 (Group Function) 01. ROLLUP GROUP BY의 칼럼에 대해 Subtotal을 만들어 줌 ROLLUP함수는 뒤에 오는 칼럼의 순서에 따라 서브토탈을 다르게 만들 수 있다. 즉, 칼럼 순서가 중요하다 ROLLUP(COL1, COL2)일 경우 COL1별 합계, COL1별 COL2 합계, 전체 합계가 조회되며, 반대의 경우에는 COL2별 합계, COL2별 COL1합계, 전체 합계가 조회됨 CREATE TABLE DEPT ( DEPTNO NUMBER(10) PRIMARY KEY, DEPTNAME VARCHAR2(20) ); INSERT INTO DEPT VALUES (1000, '총무부'); INSERT INTO DEPT VALUES (1001, '기획부'); INSERT I..

[SQLD] SQL 기본 및 활용 Section 02. SQL 활용 (1) 조인부터 서브쿼리

1. 조인(JOIN) 01. EQUI JOIN (1) EQUI JOIN 여러 개의 릴레이션을 사용해 새로운 릴레이션을 만듦 EQUI JOIN은 어떤 칼럼을 기준으로 두 개의 테이블 간의 교집합을 산출함 CREATE TABLE DEPT ( DEPTNO NUMBER(10) PRIMARY KEY, DEPTNAME VARCHAR2(20) ); CREATE TABLE EMP ( EMPNO NUMBER(10) PRIMARY KEY, ENAME VARCHAR2(20), DEPTNO_ID NUMBER(10) NOT NULL, SAL NUMBER(20), CONSTRAINT DEPT_PK FOREIGN KEY (DEPTNO_ID) REFERENCES DEPT(DEPTNO) ON DELETE CASCADE ); INSER..

[SQLD] SQL 기본 및 활용 Section 01. SQL 기본 (3) 내장형 함수부터 끝까지

9. 내장형 함수 ( BUILT-IN FUNCTION ) 모든 데이터베이스는 SQL에서 사용할 수 있는 내장형 함수를 가짐 DBMS 벤더별로 약간의 차이가 있지만 거의 비슷한 방법으로 사용이 가능함 내장형 함수로는 형변환 함수, 문자열 및 숫자형 함수, 날짜형 함수 등이 있음 01. DUAL 테이블 DUAL 테이블은 오라클 데이터베이스에 의해 자동으로 생성되는 테이블임 오라클 데이터베이스 사용자가 임시로 사용할 수 있는 테이블로 내장형 함수를 실행할 때도 사용 가능함 모든 사용자에게 공유되는 특별한 단일 행 테이블로서 주로 상수, 순수 함수, 다른 SQL 표현식의 결과값을 조회할 때나 테스트 쿼리나 일시적인 결과를 생성할 때 사용함 SELECT * FROM DUAL; SELECT SYSDATE FROM ..

[SQLD] SQL 기본 및 활용 Section 01. SQL 기본 (2) DML부터 형변환까지

4. DML ( Data Manipulation Language ) 01. INSERT 일반적인 데이터 삽입 SELECT * FROM EMP; INSERT INTO EMP VALUES (5, '강순자', 700, '1002', sysdate); SELECT * FROM EMP; 테이블에 행(튜플)을 삽입하기 위해서는 INSERT INTO ~ VALUES (~) 구문을 사용하면 된다. INSERT INTO EMP(EMPNO, ENAME, DEPTNO_ID) VALUES (6, '곽민재', '1001'); 위와 같이 일부 열(칼럼)만 선택해서 데이터를 삽입할 수 있다. 다만 빠진 열에 not null 제약조건이 있을 경우 오류가 발생한다. ❗ INSERT문을 실행했다고 데이터 파일에 저장되는 것은 아니며, ..

[SQLD] SQL 기본 및 활용 Section 01. SQL 기본 (1) SQL기초와 DDL까지

1. 관계형 데이터베이스(Relation Database) 01. 관계형 데이터베이스 1970년대 E.F. Codd박사의 논문에서 처음 소개된 데이터베이스로 릴레이션(Relation)과 릴레이션의 조인 연산을 통해 합집합, 교집합, 차집합 등을 만들 수 있는 특징이 있다. 현재 기업에서 가장 많이 사용하는 데이터베이스로 Oracle, MS-SQL, MySQL, Sybase등의 다양한 RDBMS가 있다 관계형 데이터베이스 집합 연산과 관계 연산 집합 연산 집합 연산 설명 합집합(Union) - 두 개의 릴레이션을 하나로 합하는 것 - 중복된 행(튜플)은 한 번만 조회 차집합(Difference) - 본래 릴레이션에는 존재하지만 다른 릴레이션에는 존재하지 않는 튜플을 조회 교집합(Intersection) -..

[SQLD] 데이터 모델링의 이해 Section 02. Data Model and Performance

1. 정규화 ( Normalization ) 01. 정규화 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법 데이터를 분해하는 과정 반정규화 데이터 중복을 제거하고 데이터 모델의 독립성을 확보함 테이블을 분해해서 각 테이블들의 관련성을 최소화하기 때문에 데이터 모델의 유연성을 높임 따라서 정규화를 수행하면 비즈니스에 변화가 발행해도 데이터 모델의 변경을 최소화 가능 제1정규화~제5정규화까지 있지만 보통 제3정규화까지만 수행 🔍정규화를 수행하지 않으면 부서 테이블과 직원 테이블이 하나로 합쳐져 있을 수 있다. 그러면 어떤 직원의 부서가 아직 정해지지 않았을 때 부서 코드를 임의로 할당해야 하는 등의 문제가 발생한다. 이러한 문제를 이상현상(Anormaly)이라고 함 🎯 정규화 절..

[SQLD] 데이터 모델링의 이해 Section 01. Data Modeling

1. 데이터 모델링의 이해 01. 데이터 모델링 현실 세계를 가상 공간인 데이터베이스로 표현하기 위해 추상화하는 것 데이터 모델링을 하기 위해서는 고객과의 의사소통을 통해 고객의 업무 프로세스를 완전히 이해해야 함 고객의 업무 프로세스를 이해하고 난 뒤에 데이터 모델링 표기법을 사용해서 모델링함. 고객이 쉽게 이해할 수 있도록 복잡하지 않게 모델링 되어야 함 고객의 업무 프로세스를 추상화하고, 소프트웨어를 분석, 설계해 가면서 점점 더 상세해짐 고객의 비지니스 프로세스를 이해하고 비지니스 프로세스의 규칙을 정의한다. 정의된 비지니스 규칙을 데이터 모델로 표현함. 🔍데이터 모델링 표기법 바커 표기법 (Baker Notation) - 영국 컨설팅 회사 CACI에서 처음 개발되었고 바커에 의해 지속적으로 발전..

[MySQL] 03. 데이터 타입 - 숫자 타입

Chapter 04. 데이터 타입 MySQL은 다음과 같은 데이터 타입을 지원한다 1. 숫자 타입 (numeric types) 2. 날짜 및 시간 타입 (date and time types) 3. 문자열 타입 (character and byte types) 4. 공간 타입 (spatial types) 5. JSON 데이터 타입 (JSON data types) 1. 숫자 타입 (numeric types) 1.1 숫자 타입 구문 M에 대해서 알아야 한다 1. 정수 타입의 경우 M은 최대 표시 너비를 뜻하고 최대 표시 너비는 255이다 (MySQL 8.0.17부터 사용되지 않을 예정) 2. 부동 소수점 및 고정 소수점 타입의 경우 M은 저장할 수 있는 총 자릿수이다 BIT(M) 비트의 값을 저장할 수 있다. ..

반응형