SQLD 도전기 시작

404·2022년 3월 5일
0

Database

목록 보기
7/9

0. 시작하며...

웹 개발을 공부하면서 DB에 대한 공부가 별도로 필요할것 같다는 것을 느끼고, 회사에서 인정해주는 자격증도 아주 매우 오랜만에 추가할겸 SQLD 취득을 위한 공부를 시작했다. 오늘은 그 첫날로 DB 개요에 대해 공부했다. 진행중인 프로젝트에서도 그렇고 지금까지 noSQL만 사용해왔지만 이 기회에 SQL도 공부하면 분명 써먹을 곳이 있을것 같다. 특히 이번 기회를 통해 데이터 모델링과 아키텍처에 대해 조금이나마 알게 되고, 나아가 앞으로 프로젝트를 하는데 요긴하게 써먹을 수 있었으면 좋겠다.

1. DB와 DBMS

1-1 DB의 기본 기능 (필요조건?)

  • 동시성 제어
    ex) 영화관 좌석 예매시 ... A가 선택하고 결제 진행중인 좌석은 최종 결제가 완료되기 전이라도 B가 선택하지 못하게 한다.
  • 장애 대응
    문제 발생시 빠르게 대응 가능하게 하고 손실에 대비하여 백업한다.
  • 보안
    사용자가 요청하고 보여줄 수 있는 데이터만 보여준다. ex) 타인의 개인정보 누출 x

1-2 DB의 특징

  • 실시간 접근성 - 언제든지 접근하고 그 변화가 즉시 반영되어 나타나야함
  • 계속적인 변화 - 수정이 가능하고 축적 및 가공됨
  • 동시 공유 - 동시에 여러명의 사람이 데이터에 접근할 수 있음
  • 내용에 따른 참조 - 데이터의 물리적 위치에 상관 없이 그 자체로서의 가치

1-3 DB의 종류

  • 계층형
  • 관계형
  • 객체지향형
  • NoSQL

1-4 DBMS (Data Base Management System)

  • 데이터를 다루는 소프트웨이어이다. Oracle, mySQL, mongoDB 등이 있으며 실제 데이터 저장소와 혼동하지 않도록 한다.

2. 관계형 DB

2-1 관계형 DB란? (RDB)

  • 익숙한 excel을 생각하면 이해하기 쉽다. key 와 value로 짜여진 2차원 table이 하나 이상 존재하며 그 table에 데이터가 저장되는 DB모델이다.
  • table에는 행을 식별하는 key가 있으며 행은 record 또는 tuple 또는 raw 라고 부른다.
  • 열은 field 또는 attribute 또는 columb 라고 부른다.

2-2 SQL이란?

  • RDBMS를 관리하기 위한 프로그래밍 언어이다.

    유저가 SQL을 작성하여 DBMS에 명령하면 DBMS가 DB의 데이터를 조작한다.

  • 기본 명령어는 4개로 이루어져 있으며 개발 언어에 비해 간결한 특징이 있다.
    ( SELECT, INSERT, UPDATE, DELETE )

3. 데이터 아키텍처

3-1 데이터 아키텍처란?

  • 시스템을 만들기 위한 물리적 레벨의 조합
  • 서버의 기능, 저장소, 네트워크 등등 의 지식이 필요하며 이를 통해 DB설계 및 시스템 구성을 효율적으로 한다.

3-2 데이터 아키텍처의 역사

  • stand-alone : 사용자와 DB가 1:1 관계로 사용자가 데이터에 직접 접근함
  • client / server : 여러 clients가 server에 접속하여 데이터에 접근함
  • web 3 layer : 여러 clients가 web server에 접속하고 web server는 유저의 요청을 was에 전달하여 was가 데이터에 접근한다.

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 모두 저장소가 불능이 되면 기능을 할 수 없다. 하지만 리플리케이션은 저장소와 서버를 모두 예비로 준비하기 때문에 이에 대응이 가능하다. 장애 발생시 즉시 사용할 수 있도록 예비 저장소에도 본 저장소 데이터를 미리 동기화 하는 작업이 필요하다.

profile
T.T

0개의 댓글