-
데이터베이스란
-
기본 기능
-
데이터의 검색과 갱신
-
동시성 제어
-
장애 대응
-
보안
-
-
종류
-
계층형 데이터베이스
-
ex. 조직도, 전체구조도
-
-
관계형 데이터베이스
-
ex. 2차원 테이블
-
-
NoSQL 데이터베이스
-
-
-
관계형 데이터베이스란
-
데이터베이스에 얽힌 돈 이야기
-
초기비용
-
라이선스료
-
프로세서 라이선스
-
사용자 라이선스
-
-
서브스크립션료
-
에디션과 옵션
-
-
운영비용
-
기술지원(유지보수)에 대한 비용
-
기술지원 수준은 매년 내려간다.
-
-
-
데이터베이스와 아키텍처 구성
-
역사와 개요
-
Stand-alone
-
클라이언트 / 서버
-
웹 3계층
-
웹 서버 계층
-
애플리케이션 계층
-
데이터베이스 계층
-
-
-
가용성과 확장성의 확보
-
심장전략
-
신장전략
-
-
DB 서버 다중화
-
Stand-alone
-
Clustering
-
Shared-Nothing
-
Shared-Disk
-
Active - Actvie
-
시스템 다운 시간이 짧다.
-
성능이 좋다.
-
저장소 병목현상
-
-
Active - Stanby
-
Heartbeat
-
Cold-stanby
-
Hot-stanby
-
-
-
-
Replication
-
마스터 슬레이브
-
멀티 마스터
-
-
-
-
DBMS 기본지식
-
SQL문과 관리명령
-
관계형 데이터베이스 계층
-
인스턴스
-
데이터베이스
-
(스키마)
-
테이블
-
-
-
SQL문의 기본
-
검색 : SELECT
-
SELECT (열 명) FROM (테이블 명);
-
ex. SELECT * FROM city;
-
-
조건 : WHERE
-
SELECT (열 명) FROM (테이블 명) WHERE (조건);
-
ex. SELECT * FROM city WHERE district = 'chollanam';
-
-
중복제거 : DISTINCT
-
ex. SELECT DISTINCT district FROM city WHERE countrycode = 'KOR';
-
-
결과 정렬 : ORDER BY
-
SELECT ~ ORDER BY (열 명);
-
ex. SELECT * FROM city WHERE countrycode = 'KOR' ORDER BY population desc;
-
-
테이블 요약
-
COUNT : 테이블 행의 수
-
SUM : 테이블의 수치 데이터 합계
-
AVG : 테이블 수치 데이터의 평균
-
MAX : 테이블 임의 열 데이터 중 최대값
-
MIN : 테이블 임의 열 데이터 중 최소값
-
ex. SELECT MAX(name) FROM city WHERE countrycode = 'KOR';
-
-
그룹으로 나눠 집약 : GROUP BY
-
SELECT ~ FROM (테이블 명) GROUP BY (열 명);
-
ex. SELECT district, COUNT(*) FROM city WHERE countrycode = 'KOR' GROUP BY district;
-
-
집약한 결과에 조건 지정 : HAVING
-
SELECT ~ FROM ~ GROUP BY ~ HAVING (조건);
-
ex. SELECT district, COUNT(*) FROM city WHERE countrycode = 'KOR' GROUP BY district having count(*) = 6;
-
-
-
갱신, 삽입과 제거 : UPDATE, INSERT, DELETE
-
갱신 : UPDATE
-
UPDATE (테이블 명) SET (열 명) = (값) WHERE (조건);
-
ex. UPDATE city SET name = 'Siheung' WHERE countrycode = 'KOR' and district = 'kyonggi' and name = 'Shihung';
-
-
삽입 : INSERT
-
INSERT INTO (테이블 명) VALUES (값1, 값2, ...);
-
ex. INSERT INTO city VALUES (default, 'Gimpo', 'KOR', 'Kyonggi', 349900)
-
-
삭제 : DELETE
-
DELETE FROM (테이블 명) WHERE (조건);
-
ex. DELETE FROM city WHERE id = 4080;
-
-
-
뷰의 작성과 서브쿼리 및 결합
-
뷰 작성 : CREATE VIEW
-
CREATE VIEW (뷰 명) (열 명) AS (SELECT 문)
-
ex. CREATE VIEW citykyonggi AS SELECT id, name, population FROM city WHERE contrycode = 'KOR' and district = 'Kyonggi';
-
-
서브쿼리
-
(SELECT 문)의 결과를 데이터 처럼 다루는 쿼리.
-
ex. SELECT * FROM citykyonggi WHERE population > (SELECT AVG(population) from city korea)
-
-
결합
-
내부결합 : INNER JOIN ~ ON
-
SELECT (열 명) FROM (테이블1) INNER JOIN (테이블2) ON (결합 조건)
-
ex. SELECT countrylanguage.*, country.name FROM countrylanguage INNER JOIN country ON countrylanguage.contrycode = country.code WHERE language = 'Korean'
-
-
외부결합 : (LEFT or RIGHT) OUTER JOIN
-
SELECT (열 명) FROM (테이블1) OUTER JOIN (테이블2) ON (결합 조건)
-
-
-
-
SQL 문 구분
-
DDL (Data Definition Language)
-
ex. CREATE, DROP, ALTER
-
-
DML (Data Manipulation Language)
-
ex. SELECT, INSERT, UPDATE, DELETE
-
-
DCL (Data Control Langauge)
-
ex. COMMIT, ROLLBACK
-
-
-
-
트랜잭션과 동시성 제어
-
트랜잭션
-
원자성 (Atomicity)
-
커밋 (commit)
-
롤백 (rollback)
-
-
일관성 (Consistency)
-
고립성 혹은 격리성 (Isolation)
-
잠금 (LOCK)
-
격리 수준
-
커밋되지 않는 읽기 (Read Uncommitted)
-
커밋된 읽기 (Read Committed)
-
최신 쿼리의 실행 개시 시점에서 커밋된 데이터를 읽는다.
-
-
반복 읽기 (Repeatable Read, RR)
-
최초 쿼리를 실행한 시점에 커밋된 데이터를 읽는다.
-
같은 쿼리를 복수 회 실행해도 최초 읽은 내용만 반환한다.
-
MySQL 트랜잭션 격리 수준의 기본 값
-
-
직렬화 가능 (Serializable)
-
-
격리 수준이 완화되면 나타나는 문제
-
더티 읽기 (Dirty Read)
-
애매한 읽기 (Fuzzy Read)
-
팬텀 읽기 (Phantom Read)
-
-
-
지속성 (Durability)
-
암묵적 혹은 오토커밋 설정
-
-
MVCC 에 따른 MySQL 특성
-
읽기와 읽기는 서로 블락되지 않는다.
-
읽기와 갱신은 서로 블락되지 않는다.
-
갱신과 갱신은 블락된다.
-
-
잠금 타임아웃과 교착상태
-
해서는 안되는 트랜잭션 처리
-
-
테이블 설계의 기초
-
제 1정규형
-
테이블 셀에 복합적인 값을 포함하지 않는다.
-
스칼라 값 이외의 값을 포함하지 않는 테이블
-
-
제 2정규형
-
부분함수 종속
-
''기본키" 가 2개 열 이상일 때, 열의 일부에만 함수 종속이 존재하는 것.
-
-
기능적인 테이블
-
-
제 3정규형
-
추이함수 종속
-
"기본 키" 이외의 키 간에 발생하는 함수 종속
-
-
-
ER 다이어그램
-
Entity
-
PK (Primary Key)
-
-
Relationship
-
FK (Foreign Key)
-
-
-
가장 중요한 2가지 사실.
-
테이블은 집합이다.
-
테이블은 함수이다.
-
-
-
백업과 복구
-
DBMS의 3가지 구조
-
로그 선행 쓰기 (WAL : Write Ahead Log)
-
데이터베이스 버퍼
-
크래시 복구
-
-
백업과 복구
-
PITR (Point-in-time Recovery)
-
임의의 시점에서의 데이터 변경을 포함한 복원
-
-
백업의 3가지 관점
-
데이터베이스 상태
-
핫 백업 (online)
-
주로 데이터베이스의 기능 사용
-
-
콜드 백업 (offline)
-
주로 OS의 기능 사용
-
-
-
데이터의 형식
-
논리 백업
-
SQL 기반의 텍스트 형식
-
편집 가능, 이식성 우수, 다만 크기가 크고 속도가 느리다.
-
-
물리 백업
-
바이너리 형식
-
크기가 작고, 속도가 빠름, 다만 플랫폼 의존적.
-
-
-
데이터의 양
-
풀 백업
-
부분 백업
-
차등 백업
-
최근에 풀 백업한 이후에 갱신된 데이터를 백업
-
-
증분 백업
-
최근 백업한 이후에 갱신된 데이터를 백업
-
롤 포워드 리커버리
-
-
-
-
-
-
-
'책 리뷰' 카테고리의 다른 글
산드로 만쿠소님의 소프트웨어 장인을 읽고 (0) | 2020.09.07 |
---|---|
미래를 바꾼 아홉가지 알고리즘 (0) | 2018.08.18 |