SQL

데이터베이스 개론 정리

peach_h 2022. 10. 2. 17:08
데이터베이스란 ? 

컴퓨터 시스템에 전자적으로 저장된 체계적 데이터의 모음

과학이 발전하면서 데이터를 저장하고 조회하는 기능이 더욱 필요해지고 데이터베이스 개념이 발생.

 

동시에 여러명이 같은 데이터를 수정/ 삭제/ 활용을 하는 것이 데이터베이스의 역할이다.

 

데이터 베이스 이전엔 txt 파일을 사용함.

- 여러 사용자가 동시에 사용하기 어려움.

- 파일을 이동하며 데이터가 유실되는 문제 발생.

 

DBMS( Database Management System) : 데이터베이스 관리 시스템

다수의 사용자들이 데이터베이스 속의 데이터에 접속할 수 있도록 해주는 소프트에어 도구의 집합

 

데이터베이스의 특징

1. 실시간 접근성 : 사용자가 데이터를 요청하면 그 결과를 즉시 서비스함

2. 계속적인 변화 : 데이터 값이 시간에 따라 계속해서 변화함

3. 동시 공유  : 여러 사용자에게 동시에 공유됨

4. 내용에 따른 참조 : 서버의 물리적 위치는 중요하지 않고, 데이터 자체 값에 따라 참조됨.

계속해서 변화하고, 동시에 여러 사용자에게 요청받은 데이터를 즉시 서비스해줌.

 

 

 

데이터 베이스의 기본 기능

1. 조회 : 데이터를 조회

2. 삽입 : 원하는 데이터를 삽입

3. 삭제 : 원하는 데이터를 삭제

4. 수정 : 원하는 데이터를 수정

 

데이터베이스는 동시성 제어가 아주 중요하다.

같은 데이터에 다수의 사용자가 서로 다른 기능을 진행했을 때, 어떻게 처리할 것인지.

ex) A는 같은 파일을 삭제하고, B는 같은 파일을 수정하려 할때

 

장애 대응 기능

데이터베이스는 데이터 손실이 발생했을 때, 복원이 가능해야한다.

보호와 장애에 대한 방안이 있어야함.

 

 

 

데이터베이스의 종류

1. 계층형 데이터베이스 : 계층 구조로 데이터 관리

2. 관계형 데이터베이스 : 2차원 표 형식으로 데이터 관리, 가장 많이 사용

3. 객체 지향형 데이터 베이스 : 아직 많이 사용X

4. NOSQL 데이터베이스 : Not Only SQL, 최근 관심받는 중

 

 

관계형 데이터베이스란?

키(key)와 값(value)의 관계를 테이블화 시킨 데이터베이스.

2차원 표를 이용하여 데이터 목록을 관리함(Excel)

 

 

관계형 모델

column(열) / row(행) 으로 구성

각 테이블은 row를 식별하는 Primary Key를 가지고 있다.

column = Field = Attribute

row = Tuple = 레코드 라고도 부름.

 

관계형 데이터베이스의 혁신성

1. 역사적 혁신성 : 최초로 2차원 표를 이용한 데이터베이스 소프트웨어임.

2. 기능적 혁신성 : SQL언어를 이용하여 간단하게 데이터를 추출 / 조회 가능

 

 

 

SQL 이란?
  • SQL(Structured Query Language) : RDBMS(관계형 데이터베이스 관리시스템)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어 ( 전세계 표준임 )
  • 자료의 검색, 관리 / 데이터베이스 스키마 생성, 수정 을 하기 위해 고안됨
  • 다른 프로그래밍 언어에 비해 간결함. 간단한 영어 문장 사용.
  • SELECT / INSERT / UPDATE / DELETE

 

테이블 / 행 / 열

TABLE : 관계형 데이터베이스의 2차원 표

테이블 설계는 데이터베이스 설계의 중요 부분

ROW(행) : 테이블의 가로축 / 한개의 라인

COLUMN(열) : 테이블의 세로축

CELL : 행과 열이 교차하는 부분

 

 

데이터베이스와 DBMS의 차이

관계형 데이터베이스를 사용하기 위해서는 DBMS를 설치해야함.

데이터베이스 - 추상적 개념

DBMS - 데이터베이스를 구체화하는 실체적 개념 / 구체적 소프트웨어

oracle은 DBMS임. 데이터베이스 자체가 아니다.

 

 

IT 시스템이 탄생하는 과정 = SI(System integration)과정

사용자 -> WEB 서버 -> WAS 서버 -> DBMS 서버

WAS : Web Application Server

WEB / WAS /  DBMS 중 한가지라도 정상 동작하지 않으면 IT시스템에 장애가 발생할 수 있다.

가장 중요한건 DBMS임

 

 

DBMS와 운영체제

DBMS는 다양한 운영체제와의 조합으로 구축이 가능하다.

 

 

DBMS의 마이그레이션

1. DBMS는 동일하고, OS만 바뀌는 경우 : DBMS가 동일하기 때문에 괜찮음

2. OS가 동일하고, DBMS만 바뀌는 경우 : DBMS 관련 작업이 많아서 좀 어려움

3. DBMS와 OS 모두 바뀌는 경우 : 진짜 힘들다.

 

 

어플리케이션(Application)

비즈니스 처리 기능을 가진 소프트웨어

WAS 서버에서 동작함

어플리케이션으로 DBMS에 연동하여 프로그램을 구축

 

구현 방식

1. 직접 개발 : 개발비용 많이 비쌈 / 디테일한 요구 수용 가능

2. 솔루션 구매 : 개발비용은 싸지만, 소프트웨어 구매비용이 필요 / 디테일한 요구 수용 불가 / 커스터마이징 추가비용

 

 

아키텍처란? (Architecture)

시스템을 만들기 위한 물리 레벨의 조합

데이터베이스 설계에서 시스템의 구성임  (서버 구축할 때 필요한 것들을 구성)

아키텍처를 통해 시스템의 용도와 목적을 추측할 수 있음.

 

 

IT 아키텍처

정보시스템을 효율적으로 구성하기 위한 방법

AS-IS : AP와 DB가 같이있음

TO-BE : AP랑 DB를 분리

 

IT 아키텍처의 역사

1. Stand-alone 단계

DBMS가 네트워크 접속 없이 독립적으로 작동

사람이 직접 서버가 있는 곳에 가야지 사용 가능

장점 - 구축과정이 간단 / 높은 보안

단점 - 멀리 떨어진 장소에서 접근 불가 / 복수 사용자 동시 이용 불가 / 낮은 가용성 / 확장성 부족

 

2. 클라이언트 / 서버 단계

네트워크 연결을 통한 복수 사용자가 동시에 사용 가능

DB 서버 한대에 여러 사용자가 접속하는 구성

단점 - 인터넷 환경에서 접속 시 보안이 위험함 / 각 사용자 PC에서 어플리케이션 설치 필요

         사용자의 SW가 모두 다르면? 아주 어렵다 ..

 

3. WEB3 계층

어플리케이션을 WAS 서버에서 관리

WEB - WAS - DBMS

사용자는 WEB서버만 보이기 때문에 보안이 좋다.

WAS에서 로직을 처리 후, 데이터가 필요하면 DBMS에 요청하는 방식임.

 

 

가용성(Availability)

서버, 네트워크, 정보 시스템이 정상적으로 사용 가능한 정도

정상적인 사용시간(Uptime)을 전체 사용 시간(Uptime+Downtime)으로 나눈 값을 의미함.

Availability가 높으면 고가용성(HA, High Availability)

 

 

확장성(Scalability)

재설계, 재설치 없이 확장이 얼마나 쉽고 가능한지

DBMS 설계자는 DBMS의 확산이나 거대한 성장을 도모해야 한다.

확장성있게 설계해야함.

클라우드 시스템이 각광받는 이유 : 확장성이 아주 좋기때문

 

 

가용성을 높이는 전략

1. 고품질의 DBMS를 소수 사용 : 정말 중요한 시스템에 사용

2. 저품질의 DBMS를 다수 사용 : 사용자 많은 게시판 / 여러대의 DBMS가 한 개의 시스템을 위해 존재

동일기능을 하는 DBMS 서버를 여러대 설치 및 운영 ( 병렬화 )

DBMS서버를 1대만 늘려도 Uptime이 엄청나게 상승함

 

 

신뢰성 VS 가용성

신뢰성 - 고장 나는 빈도 및 고장 기간

가용성 - 사용자 입장에서 시스템을 어느정도 사용할 수 있는가

신뢰성이 낮아도, 저품질-다수 방식을 통해 가용성 확보가 가능함

 

 

단일장애점 SPOF(Single Point Of Failure)

시스템 구성 요소 중에서 동작하지 않으면 전체 시스템이 중단되는 요소

높은 신뢰성이 필요한 시스템은 단일 컴포넌트에 의존하지 않는 것이 좋음

 

 

DB 서버의 다중화

다른 컴포넌트에 비해 다중화 어려움.

데이터 장기간 보존 필요 / 데이터 다중화 시 갱신시 데이터 정합성 중요

 

 

DB 서버 다중화 유형

1. Active-Active : 1저장소 2DBMS / 엔진 서버가 동시에 가동 / 가장 많이 사용

                하나의 서버가 다운되도, 나머지 하나가 계속 처리함 - Downtime이 거의 없다.

                두 Active가 같은걸 다른 동작할 때 문제가 발생할 수 있음. - 저장소 병목 이슈

                운영상 성능이 유리 / Oracle의 RAC가 대표적인 A-A 다중화 제품임.                       

2. Active-Standby : 1저장소 2DBMS / Active가 고장났을 때를 대비하여 한대를 대기시킴

                 항상 한대가 놀기때문에 비효율적임 / A-A에 비해 비용적으로 유리하고 관리가 쉬움

3. 리플리케이션 : 1저장소 1DBMS  / DB와 저장소를 하나 세트로 1세트(Active+저장소)를 미리 더 준비시킴. 

                  Active(DBMS+저장소) / Standby(DBMS+저장소)

                  A와 S를 서로 다른지역에 서버를 설치함 / 비용이 엄청든다

                 두 DB 엔진 서버는 실시간으로 데이터가 동기화됨.

                    하나의 저장소에 문제가 생기면 바로 장애 발생 / 하나의 저장소에만 데이터 저장되서 데이터 소실 가능성 있음

 

 

성능 추구를 위한 다중화

1. Shared Disk : A-A 구성 DB / 저장소 공유로 인한 병목현상 / DB 서버 늘려도 한계점에 도달함

                      성능상 유리 / 은행과 같은 시스템에서 사용

2. Shared Nothing : 1세트(저장소+서버)를 늘려 병렬처리 / 세트 늘린 것 비례하여 만큼 처리율 증가함

                         DB 서버 다운 시 다른 서버가 이어 받아 처리할 수 있는 커버링 전략 필요

                         무한정 서버 늘리기가 가능 - 게임에 주로 사용 / 저장소 공유 X

 

 

데이터베이스 샤드(Shard)는 데이터베이스나 웹 검색 엔진의 데이터 수평 분할임.

데이터베이스 내의 일부 데이터는 모든 샤으데 존재하지만, 일부는 하나의 샤드에만 존재함.

각 샤드(또는 서버)는 이 데이터 부분을 위해 하나의 소스로서 동작함.

'SQL' 카테고리의 다른 글

연습문제풀이  (0) 2022.10.05
서브 쿼리  (0) 2022.10.05
VIEW  (0) 2022.10.05
INSERT / UPDETE / DELETE  (1) 2022.10.05
SELECT문 ( DUAL / ORDER BY / DISTINCT / WHERE )  (0) 2022.10.04