웹 개발을 공부하면서 DB에 대한 공부가 별도로 필요할것 같다는 것을 느끼고, 회사에서 인정해주는 자격증도 아주 매우 오랜만에 추가할겸 SQLD 취득을 위한 공부를 시작했다. 오늘은 그 첫날로 DB 개요에 대해 공부했다. 진행중인 프로젝트에서도 그렇고 지금까지 noSQL만 사용해왔지만 이 기회에 SQL도 공부하면 분명 써먹을 곳이 있을것 같다. 특히 이번 기회를 통해 데이터 모델링과 아키텍처에 대해 조금이나마 알게 되고, 나아가 앞으로 프로젝트를 하는데 요긴하게 써먹을 수 있었으면 좋겠다.
1-1 DB의 기본 기능 (필요조건?)
1-2 DB의 특징
1-3 DB의 종류
1-4 DBMS (Data Base Management System)
2-1 관계형 DB란? (RDB)
2-2 SQL이란?
RDBMS를 관리하기 위한 프로그래밍 언어이다.
유저가 SQL을 작성하여 DBMS에 명령하면 DBMS가 DB의 데이터를 조작한다.
기본 명령어는 4개로 이루어져 있으며 개발 언어에 비해 간결한 특징이 있다.
( SELECT, INSERT, UPDATE, DELETE )
3-1 데이터 아키텍처란?
3-2 데이터 아키텍처의 역사
3-3 가용성과 확장성
가용성(availability) : 정보시스템이 정상적으로 작동 가능한 정도를 나타낸다
가용성 = ( 정상 사용시간 / 전체 사용시간 ) * 100
확장성 (scalability) : 재설계 없이 쉽고 빠르게 확장 가능한 정도. (cloud의 유행 이유)
HA (high availability) 전략
1) 고품질 소수 ( 소수의 고성능 컴퓨터) : 높은 신뢰성과 안정성을 요할 때 사용
2) 저품질 다수 ( 다수의 보통 컴퓨터) : 높은 신뢰성과 안정성을 요하지 않지만 다수의 요청을 처리하기 위해 사용
3-4 DB 서버의 확장 (다중화)
Active - Active (1개 저장소에 대해 2대의 DBMS 서버를 동시에 가동)
가용성이 상승하며 높은 처리속도를 보이지만 서버간 작업 충돌이 생기지 않도록 주의해야한다.
Active - Standby (1개 저장소에 대해 1대의 DBMS 서버 가동, 1대는 가동 대기)
장애 대응을 위해 대기 서버를 준비하는것. 가용성이 상승하지만 두 서버가 동시에 작업하는 것이 아니기 때문에 처리속도 면에서 이점은 없다. 하지만 작업 충돌 문제는 발생하지 않는다.
리플리케이션 (DB서버와 저장소를 세트로 준비)
A-A와 A-S 모두 저장소가 불능이 되면 기능을 할 수 없다. 하지만 리플리케이션은 저장소와 서버를 모두 예비로 준비하기 때문에 이에 대응이 가능하다. 장애 발생시 즉시 사용할 수 있도록 예비 저장소에도 본 저장소 데이터를 미리 동기화 하는 작업이 필요하다.