AI/K-Digital Training

012. 데이터베이스 개념 요약1

찌리남 2021. 8. 9. 21:58
728x90

 

 데이터베이스는 현실 세계를 컴퓨터 시스템에 저장한 데이터 모음이다. 컴퓨터 과학이 발전하면서 점점 대용량의 데이터를 조회 사용하는 기술이 필요해졌다. 지금은 모든 것이 데이터 베이스로 관리된다. DBMS는 실시간으로 데이터에 접근하고 사용할 수 있게 하는 소프트웨어고 오라클이 대표적이다. 데이터 베이스 시스템의 특징은 실시간 접근성, 계속적인 변화, ‘동시 공유’, 내용에 따른 참조가 있다.


 데이터 베이스의 기본 기능은 조회, 갱신, 장애 대응, 보안 기능이 있고 갱신은 삽입, 삭제, 수정 기능이 있다. 동시성 제어가 되지 않으면 서비스에 큰 혼란이 초래되기 때문에 비즈니스 성패를 좌우할 정도로 중요하다. 장애 대응 기능은 데이터 손실에 대비한 기능이다. 보안 기능은 사용자에게 보여줄 데이터만 보여주는 기능이다.
데이터 저장 방식에 따라 종류가 나뉜다. 계층형 데이터 베이스, 2차원 표 형식으로 데이터 관리하면서 가장 널리 사용되는 관계형 데이터베이스, 객체 지향형 데이터베이스, NOSQL데이터베이스가 있다.
관계형 데이터베이스는 키와 값들을 테이블(2차원 표)화 시킨 데이터베이스다. 직관적인 이해가 가능해서 실생활에서 사용하는 정보를 관리할 수 있다. 관계형 모델은 집합론에 기반한 데이터베이스 모델이다. 열과 행을 이루는 하나 이상의 테이블에 데이터가 저장된다. 각각의 로우를 식별하는 기본 키(레코드, 튜플)가 있고 컬럼은 속성이 있다. 관계형 데이터베이스는 최초로 2차원 표를 이용한 데이터베이스이고 직관적인 방법으로 데이터를 추출 가능해서 혁신적이다.
SQL은 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위한 특수 목적의 프로그래밍 언어다. 자료의 검색,관리, 스키마 생성과 수정, 데이터베이스 객체 접근 조정관리를 위해 만들어졌다. 타 프로그래밍 언어에 비해 간결하고 간단한 영어 문장을 사용하는 장점이 있다. 테이블, 행, 열로 이루어져 있다. Select문, Insert문, Update문, Delete문이 많이 쓰인다.

 

 DBMS는 추상적 개념이고, DBMS가 실체적인 소프트웨어다. 일반적인 IT시스템은 사용자 – 웹서버 – WAS서버 – DBMS 로 이루어져 있다. DBMS는 다양한 운영체제와 조합으로 구축이 가능하다. DBMS의 마이그레이션은 OS만 바뀌는 경우가 가장 공수가 절 들어간다. DBMS만 바뀌는 경우 DBMS 관련 작업이 많아진다. 어플리케이션은 비즈니스 처리 기능을 가진 소프트웨어고 WAS 서버에서 동작한다. SQL외 프로그래밍 언어를 이용하고 DBMS에 연동해 각종 프로그램을 구축한다. 어플리케이션의 구현 방식은 개발 비용이 높지만 디테일한 요구사항을 수용이 가능한 직접 개발과 개발 비용이 절약되지만 디테일한 요구사항이 수용 불가한 솔루션 구매가 있다.

 

 아키텍쳐는 시스템을 구축하기 위한 물리 레벨의 조합이다. IT 아키텍쳐는 데이터의 관계를 구조적으로 정리해 정보 시스템을 효율적으로 구성하는 방법이다. 예로 AS-IS, TO-BE가 있다.
IT 아케텍처의 역사는 3 단계로 나뉜다. Stand-alone, 클라이언트/서버, WEB, WAS, DBMS로 구분되는 WEB 3계층이 있다. 최근에는 클라우드 시대를 맞이해 다양한 IT 아키텍처가 등장하고 있다. Stand-alone 단계는 네트워크 접속 없이 독립적으로 작동해 높은 보안이 장점이지만 물리적으로 떨어진 장소에서 접근이 불가하고, 동시에 작업이 불가하고 확장성이 부족하다는 단점이 있다. 클라이언트/서버 단계는 복수 사용자가 동시에 사용가능한 장점이 있지만 인터넷 환경에서 접속시 보안이 위험하고 어플리케이션 설치가 필요해 수정 배포의 어려움이 있다는 단점이 있다. WEB3 계층은 3가지 계층의 조합으로 인식해 보안이 향상되고 WAS에 비즈니스 로직이 집중되어 관리가 용이하다는 장점이 있고 단점이 크게 없다.

 

 가용성이란 서버, 네트워크, 프로그램 등이 정상적으로 사용 가능한 정도를 말한다. 가용성이 높은 것을 고가용성(HA)라고 한다. Availability = Uptime / (Uptime + Downtime). 확장성은 IT 시스템에서 재설계나 재설치 없이 확장이 얼마나 쉽고 가능한지에 대한 용이성이다. DBMS 설계자는 확산과 성장을 도모해야한다. 클라우드의 장점 중 하나가 확장성이다. 가용성을 높이는 전략은 고품질-소수와 DBMS 서버를 여러 대 설치해 병렬화 시키는 저품질-다수 전략이 있다. 단일 장애점(SPOF)은 시스템 구성 요소 중에서, 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다. 높은 신뢰성을 요구하는 시스템은 단일 컴포넌트에 의존하지 않아야 한다. 신뢰성은 컴포넌트 자체의 문제고 가용성은 사용자 입장에서 시스템을 사용하는 정도를 나타내고 시스템 전체 수준의 문제다.
DB 서버의 다중화는 여러 유형이 있다. Active-Active, Active-Standby, 리플리케이션이 있다. Active-Active 유형이 가장 흔하고 하나의 서버가 다운되어도 나머지 하나가 계속 처리한다. Active-Standby는 평소에는 하나의 서버만 사용하고 장애가 생길 경우 Standby 서버가 업무를 처리한다. 저장소 병목 현상이 덜 일어난다. 리플리케이션 다중화는 저장소를 다중화한다. 하나의 저장소에 문제가 생기면 바로 장애 상황이 발생한다. DB서버와 저장소를 여러 개 준비하나 비용이 매우 많이 들어간다.

 

 성능 추구를 위한 다중화는 저장소를 공유하는 Shared Disk와 서버와 저장소 세트를 늘려 병렬처리하는 Shared Nothing으로 나뉜다. Shard 기술은 데이터의 수평 분할이다. Shared Nothing은 DB서버 대수가 늘을수록 처리율이 늘어난다.

 

 최적의 아키텍처 설계 전략은 가용성, 신뢰성, 재해대책, 성능, 보안, 조직, 비용, 성장 등을 고려해야 한다. 해당 비즈니스의 성장성이나 사용자의 유입 예측이 선행되어야 한다.
트랜잭션은 데이터베이스 시스템에서 상호작용의 단위다. 단일 트랜잭션은 읽거나 쓰는 여러 개 쿼리를 요구한다. 수행된 일부 쿼리를 남기지 않는 것이 특징이다. 그리고 쿼리 하나가 실패하면, 데이터베이스 시스템은 실패한 쿼리를 롤백한다. 트랜잭션은 데이터 조작이 전부 성공 혹은 실패할지 보증하는 구조인 원자성, 데이터 조작 전후가 일관적인 일관성, 동시에 데이터를 처리할 경우 각각의 처리가 모순 없이 실행되는 고립성, 한번 데이터 변경되면 영구적으로 확정되는 지속성을 갖고 있다.

 

 트랜잭션의 격리 수준은 아직 commit되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용하는 Read Uncommitted, commit이 확정된 데이터만 다른 트랜잭션이 읽도록 허용하는 Read Committed, 쿼리를 두 번 이상 수행할 때, 첫 번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌는 현상을 방지하는 Repeatable Read, 쿼리를 두번 이상 수행할 때, 첫 번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌지 않음은 물론 새로운 레코드가 나타나지도 않는 Serializable 네가지가 있다.  

 

 락은 데이터를 수정 중이라는 사실을 알리는 방법의 잠금 장치다. 락은 공유락과 배타락으로 나뉜다. 공유락은 데이터를 수정중 읽기가 가능하다. 데드락은 두 개 이상의 트랜잭션이 각각 자신의 데이터에 락을 걸고 작업시 무한 교착 상태에 빠지는 것이다.

 

 데드락을 최소화시키기 위해 트랜잭션을 자주 커밋해야하고 정해진 순서로 테이블에 액세스한다. 오토 커밋은 과부화를 유발해서 자제해야하고 긴 트랜잭션은 교착 상태 발생 가능해서 자제해야 한다.

728x90
반응형