◎ 데이터베이스
- 컴퓨터 시스템에 전자적으로 저장된 체계적 데이터의 모음
- 점점 더 대용량의 데이터를 저장하고 조회하는 요구 상항이 증대됨에 따라 데이터베이스라는 개념 도입
- 데이터베이스 발명 이전에는
텍스트 파일 형태로 정장 및 관리, 공유의 어려움, 파일로 주고받으며 데이터의 유실 가능성 존재 - 현재 모든 것이 데이터베이스로 관리
◎ 데이터베이스 관리 시스템
- Database management system (DBMS)는 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합
※ 데이터베이스 시스템의 특징
ⓐ 실시간 접근성 : 수 초 내에 결과를 서비스한다.
ⓑ 계속적인 변화 : 데이터 값은 시간에 따라 항상 바뀐다.
ⓒ 동시 공유 : 여러 사용자에게 동시에 공유, 동시는 병행 이라고도 하며, 데이터베이스에 접근하는 프로그램이 여러 개 있다는 의미다.
ⓓ 내용에 따른 참조 : 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조
◎ 데이터베이스의 기본 기능
- 데이터 갱신{삽입(insert), 삭제(delete), 수정(modify)}, 조회 기능
- 동시성 제어 : 동시에 공통의 하나를 선택할 수 없게 제어, 동시성은 한 기업의 비즈니스 성패를 좌우할 수 있을 정도로 중요함
- 장애 대응 기능 : 손실 발생 시 복원이 가능
- 보안 기능 : 보안에 위배되지 않는 데이터 조회
◎ 데이터베이스의 종류
○ 저장 방식에 따른 데이터베이스 종류
⑴ 계층형 데이터베이스 : 최초의 현대적 데이터베이스
⑵ 관계형 데이터베이스 : 2차원 표 형식으로 데이터 관리, 가장 널리 사용
⑶ 객체 지향형 데이터베이스
⑷ NOSQL 데이터베이스 : 최근에 각광을 받고 있음, 관계형 데이터베이스 기능 일부 삭제
☆ 오라클 데이터베이스는 세계 1위의 독보적인 관계형 데이터베이스
◎ 관계형 데이터베이스
- 키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터베이스 (RDB라고도 부른다)
- 2차원 표 이용한 데이터 목록화 관리를 하는 것이 주 목적임(Excel, Google 스프레드 시트)
- 관계형 모델은 집합론에 기반을 둔 일종의 데이터베이스 모델, 열과 행을 이루는 하나 이상의 테이블이 존재하고 테이블에 데이터가 저장됨
- 직관적인 방법으로 데이터를 추출할 수 있음 ( SQL 언어를 이요한 간편한 데이터 추출 )
◎ SQL
- SQL(Structured Query Language)는 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
- 많은 수의 데이터베이스 관련 프로그램들이 SQL을 표준으로 채택하고 있다.
- 일반 프로그래밍 언어에 비해 간결함
테이블(TABLE) | > 관계형 데이터베이스의 2차원 표 > 테이블 설계는 데이터베이스 설계의 중요 부분 |
행(ROW) | > 테이블의 가로축 > 텍스트 파일로 치면 한 개의 라인이라고 할 수 있음 |
열(COLUMN) | 데이블의 세로축 |
◎ 관계형 데이터베이스 소프트웨어(=DBMS)
- Oracle, MySQL, SQL Server, PostgreSQL 등이 있다.
- 데이터베이스는 추상적 개념, DBMS는 실체적 개념 + 구체적 소프트웨어
◎ 아키텍처
- 시스템을 만들기 위한 물리 레벨의 조합(서버의 기능, 저장소와 네트워크 기기의 조합 등)
- 데이터베이스 설계에서 시스템의 구성
- 아키텍처 통해 시스템의 용도와 목적 추측 가능
IT 아키텍처 : 일정 기준과 절차에 따라 조직 전체의 정보화 구성요소를 통합 분석 후 그 관계를 구조적으로 정리한 체제 이를 바탕으로 정보시스템을 효율적으로 구성하기 위한 방법
▲ Stand-alone : 높은 보완, 떨어진 장소에서 접근 불가, 1명만 이용가능, 낮은 가용성(서버가 단 1대), 확장성 부족
▲ 클라이언트/서버 : 복수의 사용자가 동시에 사용가능, 인터넷 환경에서 접속 시 보안이 위험, 각자의 PC에서 애플리케이션 설치(수정 및 배포의 어려움 존재)
▲ WEB3 계층 : 직접적인 접속 요청을 웹서버 계층에 한정하여 보안이 향상됨, 애플리케이션 계층에 비즈니스 로직이 집중됨(관리의 용이성 및 비용 절감), 큰 단점이 존재하지 않음
◎ 가용성과 확장성 확보
☆ 가용성
- 가용성(Availability)이란 서버와 네트워크, 프로그램 등의 정보 시스템이 정상적으로 사용 가능한 정도를 말한다.
- 가용성이란 정상적인 사용 시간(Uptime)을 전체 사용 시간(Uptime + Downtime)으로 나눈 값을 말한다.
- 가용성이 높은 것을 고가용성(HA, High Availability)이라고 한다.
★ 확장성
- 확장성(Scalability)는 대규모적인 재설계 및 재설치가 필요 없이 확장이 얼마나 쉽고 가능한지에 대한 용이성
- 절대적인 사용자 수가 증가하더라도 이를 수용할 수 있도록 확장성 있게 설계해야 한다.
□ 가용성을 높이는 전략
고품질 · 소수 | 저품질 · 다수 |
> DBMS 서버의 고품질을 추구 > 소수의 DBMS 서버를 높은 견고함과 신뢰성으로 무장 시킴 |
> DBMS 서버가 품질이 떨어지더라도 다수의 DBMS를 사용 > 클러스터링 전략(동일 기능의 DBMS 서버를 다수로 구축) |
◎ DB 서버의 다중화
◎ DB 서버 다중화 유형
⑴ Active-Active : 두개의 DBMS 엔진 서버가 동시에 가동됨, 저장소는 한 곳을 바라봄(저장소는 1개)
⑵ Active-Standby : 평소에는 Active만 운영하고 나머지 서버는 Standby 상태, 저장소는 한 곳을 바라봄, 평소에는 Active 서버로만 업무를 처리함, 저장소 병목으로 인한 성능 상 이슈는 없음, 비용상 유리하고 관리가 용이
⑶ 리플리케이션 : 데이터베이스 서버와 저장소가 동시에 사용 불능일 때 서비스를 계속할 수 있도록 해주는 매우 가용성이 높은 아키텍처
§ DB 서버는 업무적 측면, 기술적 측면, 비용적 측면, 조직 운영 등을 고려하여 결정해야 한다.
◎ 최적의 아키텍처 설계 전략
- 가용성, 신뢰성, 재해대책, 성능, 보안, 조직, 비용 등 다양한 조건을 고려해야한다.
- 해당 비즈니스의 성장성이나 사용자의 유입 예측도 감안해야 한다.
- 한번 구축하면 변경 시 비용과 시간이 소요된다.
◎ 트랜잭션
- 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다.
- 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다.
- 만약 쿼리 하나가 실패하면, 데이터베이스 시스템은 전체 트랜잭션 또는 실패한 쿼리를 롤백한다.
★☆★☆★☆★☆★☆★☆★☆ 중요 ★☆★☆★☆★☆★☆★☆★☆
◎ 락과 데드락
▲ 락
- 락 : 데이터를 수정 중이라는 사실을 알리는 방법의 잠금 장치
- 공유락 : 읽기는 가능하고 수정은 불가능
- 배타락 : 읽기와 수정 모두 불가능
△ 데드락
- 데드락 : 두 개 이상의 트랜잭션이 각각 자신의 데이터에 대하여 락을 획득하고 상대방 데이터에 대하여 락을 요청하면 무한 대기 상태에 빠질 수 있는 현상. 교착상태라고도 한다.
'Data scientist > SQL' 카테고리의 다른 글
SQL_함수(2) (0) | 2021.08.09 |
---|---|
SQL_Practice_기온 데이터 분석 (0) | 2021.08.08 |
SQL_함수 (0) | 2021.08.06 |
SQL_TABLE (0) | 2021.08.05 |
SQL_기본 (0) | 2021.08.04 |