GCP 공부#4. 데이터베이스의 기초

정은경·2020년 1월 23일
0

Google Cloud Platform

목록 보기
4/7

웹 애플리케이션과 조합해서 사용하는 데이커베이스 기본

1. 데이터베이스

  • 어떤 일정한 형식으로 작성하고 관리된 데이터의 집합을 데이터베이스라고 부름
  • 데이터베이스를 관리하는 것이 데이터베이스 관리 시스템
  • 데이터베이스 관리 시스템을가동하는 서버가 데이터베이스 서버가 됨!

웹 시스템에서는 데이터 접근에 높은 가용성이 필요하기 때문에 데이터베이스 서버는 여러 가지 기술을 통한 확장성을 가지게 됨
장애 가능성에 대비해서 데이터 백업이나 원격지 보관 등의 대책도 필요
데이터에 접근이 빈번하게 일어나는 시스템에서는 데이터베이스 서버 처리가 시스템 전체의 병목이 될 가능성이 있으므로, 운용 상황에 따라서 OS나 미들웨어의 파라미터 변경으로 성능 튜닝을 해야 할 수도 있음
데이터베이스 처리에 관한 기능을 종합적으로 제공하는 것이 데이터베이스 관리 시스템임!

1) RDBMS (Relational Database Management System)

  • 스프레드시트 같은 표 형식의 테이블을 사용해서 데이터를 관리
  • 하나의 데이터는 그 테이블에 고유의 속성을 가지는 레코드로 표현됨
  • 여기서 말하는 속성은 스프레드시트의 에 해당하는 것
  • 하나의 레코드가 하나의 행에 해당한다고 생각하면 좋음
  • 사전에 정해진 테이블 구조를 스키마(Schema)라고 부름

RDBMS의 종류(대부분의 RDBMS는 미들웨어로 구현되어 있음)

  • MySQL : 오픈소스 RDBMS. 웹 시스템을 중심으로 널리 이용됨
  • PostgreSQL : 오픈소스 RDBMS. MySQL과 함께 업무 시스템에서 자주 이용되는 데이터베이스 중 하나.
  • Oracle Database : Oracle이 제공하는 사용 RDBMS. 업무시스템에서 많은 이용 실적이 있음

2) NoSQL

  • RDBMS와는 다른 새로운 방식들을 NoSQL이라고 함
  • 병렬 분산 처리와 유연한 스키마 설정 등이 특징
  • 주된 방식으로는 KVS(Key-Value Store)문서지향 데이터베이스(Documentt-oriented Database), XML 데이터베이스 등이 있음
  • 대량 데이터 축적이나 병렬 처리를 장점으로 함
  • 많은 사용자로부터 접근을 처리할 필요가 있는 온라인 시스템 등에 널리 이용됨

일반적으로 자주 사용하는 NoSQL

  • Redis
    메모리에 KSV를 구축할 수 있는 OSS(Open Source Software)인 NoSQL.
    메인 메모리에 KSV를 구축해서 애플리케이션에서 데이터의 저장이나 읽기가 가능
    메모리상의 데이터는 정기적으로 백업되지만, 데이터가 변경될 때마다 기록하지는 않기 때문에 예기치 않은 전원 단절 등이 발생하면 데이터를 손실할 수도 있음
  • MongoDB
    문서라고 불리는 구조적인 데이터를 컬렉션으로 관리하는 OSS인 NoSQL.
    문서에는 복잡한 계층 구조를 가질 수도 있고 그런 구조에 포함되는 필드를 지정한 질의나 인덱스 생성이 가능
    온라인 게임이나 로그 분석등에 이용
  • Apache Cassandra
    하나의 키에 대해서 여러 칼럼을 가지고 관계형 모델에 가깓운 데이터 구조를 가지는 OSS인 NoSQL.
    원래는 Facebook에서 대규모 데이터 저장을 위해서 개발되었음

[참고] GCP 환경에서는 KVS 기능을 제공하는 Cloud Datastore와 Cloud Bigtable이 있음

2. 데이터베이스 언어

데이터베이스에 저장된 데이터는 각각의 데이터베이스에 고유의 구조를 가지고 있고,
그 구조에 대응할 수 있는 데이터베이스 언어가 있음

가장 유명한 데이터베이스 언어는
RDBMS에서 널리 이용되는 SQL (Structured Query Language)임!

SQL에는 다음 세 가지 명령 언어가 있음

  • (1) 데이터 정의 언어 (DDL: Data Definition Language)
    데이터를 저장하는 구조를 정의하기 위한 명령 언어
    예) CREATE, DROP, ALTER
  • (2) 데이터 조작 언어 (DML: Data Manipulation Language)
    데이터베이스 안의 데이터를 조작하기 위한 명령 언어
    예) INSERT, UPDATE, DELETE, SELECT
  • (3) 데이터 제어 언어 (DCL: Data Control Language)
    데이터베이스에 접근 권한 제어상태 관리를 하기 위한 명령 언어
    데이터베이스 이용자에게 권한을 설정하거나 트랜잭션을 처리할 때 등에 사용

SQL은 명령 프롬프트나 애플리케이션에서 SQL문을 지정해서 실행하는 것 외에도
여러 SQL 문에서 비롯된 처리를 하나의 절차로 다시금 데이터베이스에 등록해두고 임의의 타이밍에 실행하는 저장프로시저(Stored Procedure)라 불리는 구조도 있음

트랜잭션 처리

  • Transaction (트랜잭션): 여러 데이터 변경 처리를 하나의 단위로 묶어서 관리하는 구조

데이터베이스 안의 데이터를 변경할 때는 여러 변경 처리를 연속해서 실행하고
하나의 관련성이 있는 집합으로 처리하지 않으면 안 되는 경우가 있음!
이런 여러 데이터 변경 처리를 하나의 단위로 묶어서 관리하는 구조를 트랜잭션이라고 부름!

데이터 변경 처리에서 전체의 변경이 유효하려면 관련된 각각의 모든 처리가 성공해야만 함.
이럴 때에 응용하는 것이 트랜잭션 기능임!
트랜잭션에 있어서는 일부 처리가 제대로 실행되지 않았을 때는 모든 변경 처리를 취소하고 처리 전체를 되돌릴 수 있음!

  • commit : 트랜잭션에 있어서 처리르 확정하는 것
  • rollback : 모든 처리를 되돌리는 것
ACID 특성
  • Atomicity (원자성)
    트랙잭션에 포함된 처리가 모두 실행되었는지, 또는 하나로 실행되지 않았는지 두 가지 상태 중 하나여야 하는 특성
  • Consistency (일관성)
    트랜잭션 처리 전후로 데이터 정합성이 지켜지고, 모순이 없는 상태이어야 하는 특성
  • Isolation (독립성)
    트랜잭션 안에서 실행 중인 처리가 다른 처리에 영향을 주지 않아야 하는 특성
  • Durability (내구성)
    트랜잭션이 끝났다면 시스템 장애 등이 생겨도 확정된 데이터를 잃어버리지 않아야 하는 특성

[참고]

NoSQL 중에는 여러 서버가 연계해서 데이터를 저장하는 분산형 아키텍처를 채택하는 것도 있음
이런 분산형 시스템에서
일관성/가용성/네트워크 분단 내구성 3가지를 동시에 보증하는 것은 어렵다고 알려져있음!

CAP 정리

  • Consistency (일관성)
  • Availability (가용성)
  • Tolerance to network Parititions (네트워크 분단 내구성)

애플리케이션의 데이터가 가지는 특성에 따라 적절한 저장소를 선정해야 함!

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글