1. 데이터베이스

데이터(컴퓨터 안에 기록되어있는 숫자)의 집합, 넓은 의미에서는 ‘컴퓨터 안에 기록된 모든 것’
영구적으로 보존되어야하기에 하드디스크 또는 플래시메모리(SSD) 등의 비휘발성 저장장치에 저장

데이터센터의 서버에서 운용하는게 일반적(인터넷 쇼핑, 예약 서비스 등), 개인용 컴퓨터 및 휴대용기기에 내장되어있는 형태로도 존재(전화번호부 등)

일반적으로 DB라는 약자로 통용됨 DB를 효율적으로 관리하는 프로그램을 데이터베이스 관리 시스템(Database Management System, DBMS)이라고 부름

  • DBMS가 필요한 이유
    1. 시스템 개발 과정에서의 생산성 향상
      DB를 사용하는 모든 시스템에서는 데이터 검색 / 추가 / 삭제 / 갱신과 같은 처리가 이루어짐 - 이러한 기본 기능을 DBMS가 제공하여 비용 측면에서 효율성을 확보
    2. 기능성
      복수 유저의 요청에 대응, 대용량 데이터를 저장하고 고속으로 검색하는 기능 제공, 유저가 직접 데이터베이스 관리 기능을 확장하는 등 유연한 개발 가능
    3. 신뢰성
      하드웨어를 여러 대로 구성하여 신뢰성 및 성능 향상을 꾀함
      + 소프트웨어를 통해 확장성(Scalability) 및 부하 분산(Load balancing)을 구현 - 클러스터 구성 혹은 스케일 아웃이라고 부름
      데이터를 다른 저장장치로 export하거나 데이터베이스 안에 import하는 기능을 통한 백업기능 확보

이런 DBMS를 다루는데 필요한 언어가 SQL이며, SQL은 그중 관계형 데이터베이스 관리 시스템(Relational Database Management System, RDBMS)를 조작할 때 유용함

  • SQL : C나 자바와 같은 표준 언어, 크게 3가지 명령으로 나눌 수 있음
    1. DML : Data Manipulation Language, 데이터베이스에 데이터를 추가 / 삭제 / 갱신 등 데이터를 조작할 때 사용
    2. DDL : Data Definition Language, 데이터를 관리하는데 사용되는 데이터 베이스 객체를 만들거나 삭제
    3. DCL : Data Control Language, 데이터를 제어 - 트랜젝션을 제어하는 명령과 데이터 접근권한을 제어하는 명령 포함

2. 다양한 데이터베이스

데이터베이스는 데이터 저장 방법에 따라 분류 가능

  1. 계층형 데이터베이스
    가장 오래된 DBMS, 폴더와 파일 등의 계층 구조로 데이터를 저장, 현재 DBMS로 채택되는 경우는 많지 않음
  2. 관계형 데이터베이스
    관계 대수(relational algebra)에 착안하여 고안된 데이터베이스 - 행과 열을 가지는 표 형식 데이터를 저장하는 형태
    시스템 업계에서 데이터베이스의 주류를 이룸
  3. 객체지향 데이터베이스
    가능하면 객체 그대로를 데이터베이스의 데이터로 저장하는 것
  4. XML 데이터베이스
    XML 형식으로 기록된 데이터를 저장하는 데이터베이스, SQL 명령 대신 XQuery라는 전용 명령어를 사용
  5. 키-밸류 스토어(KVS)
    key와 그에 대응하는 값(value)이라는 단순한 형태의 데이터를 저장하는 데이터베이스
    키와 밸류의 조합은 연상배열(associative array, map이나 dictonary라고 부르기도 함) 및 해시 테이블에서 자주 볼 수 있음
    NoSQL(Not only SQL)이라는 슬로건으로부터 생겨났으며 열 지향 데이터베이스라고도 불림

RDBMS는 엄청나게 널리 쓰임 : 메인 프레임, 워크스테이션, 웹 시스템과 연동, 휴대전화 내장 등

  • Oracle : 현재 가장 많이 쓰이는 RDBMS중 하나로 사실상 표준
  • DB2 : IBM이 개발
  • SQL Server : 마이크로소프트가 개발
  • PostgreSQL, MySQL, SQLite : 오픈소스 커뮤니티에서 개발

특정 데이터베이스 제품에만 통용되는 고유 방언이 존재함(DELETE FROM, 외부결합 등) - 방언을 제거하기 위해 표준 SQL이 등장함


3. 데이터베이스 서버

RDBMS는 클라이언트 / 서버 모델로 동작하여 복수의 클라이언트의 요청(접속 요청, SQL 명령 실행요청 등)에 응답
일반적인 RDBMS는 네트워크 상에 하나의 서버를 두고 독점해서 사용하지만, 서버 대신 자신의 PC에 클라이언트와 서버 모두를 실행시켜 운용하는 것도 가능

  • 클라이언트 / 서버 모델
    클라이언트(사용자 조작에 따라 요청을 전달) / 서버(요청을 받아 처리)로 소프트웨어를 나누어 복수의 컴퓨터 상에서 하나의 모델을 구현
    • 웹 시스템 상에서
      브라우저가 클라이언트 기능을 하여 사용자가 지정한 URL과 연결된 웹 서버에 요청(리퀘스트)을 보냄
      리퀘스트를 받은 웹 서버는 HTML로 된 데이터를 클라이언트로 반환하여 응답(리스폰스)
      응답을 전달받은 브라우저가 화면에 페이지 내용을 표시
      실제 웹에서는 위와같은 요청과 응답을 되풀이하면서 웹 페이지를 표시함
    • RDBMS에서 웹 시스템과는 달리 사용자 인증이 필요
      RDBMS에 접속 후에는 SQL 명령을 서버로 보내고, 서버는 응답함
      클라이언트를 종료하여 데이터베이스 접속을 끊기 전에는 재접속 없이 SQL 명령을 여러번 보낼 수 있음
  • 웹 어플리케이션 웹 사이트가 정적인 HTML만으로 구성되어있다면 웹 서버만으로도 시스템 구축이 가능하지만, 웹 어플리케이션이라고 부를 정도의 규모라면 데이터베이스가 필요
    일반적으로 웹 서버와 데이터베이스 서버의 조합으로 구축
    • 프로그래밍 언어로는 Perl, PHP, Ruby등의 스크립트 언어를 주로 사용, 윈도우는 ASP.NET, 자바는 Servlet 등
    • CGI : 동적 콘텐츠를 위한 확장 방식, 웹 서버에서 동적으로 HTML을 생성하기 위한 제어용 프로그램과 웹 서버간을 연동 / 통신하여 처리
      PHP나 루비 등으로 만들어진 CGI프로그램이 데이터베이스에 접속 - 웹 서버의 CGI 프로그램이 데이터베이스의 클라이언트가 됨
      브라우저 <-> 웹 서버 - CGI <-> DB

    웹 서버와 데이터베이스 서버를 서로 다른 머신에 두어 처리를 분산시키는 것으로 시스템 전체 성능을 향상

Tags:

Categories:

Updated: