데이터베이스(DB, DataBase)

  • 데이터(data) : 컴퓨터 안에 기록된 숫자(0, 1)
  • 데이터의 집합, 컴퓨터 안에 기록된 모든 것
  • 데이터는 주기억장치에 저장하면 전원이 꺼지면 데이터가 날아감
  • 하드디스크(HDD)나 플래시메모리(SSD) 등 비휘발성 저장장치에 저장

시스템 내의 데이터베이스

  • 데이터베이스는 데이터센터(DC, Data Center)에서 운영했었음
  • 현재는 단말기(개인 컴퓨터, 핸드폰 등)에 내장
ex) 계산대(POS) -> 판매정보 기록(데이터베이스)
휴대전화 -> 전화번호부(데이터베이스)

DB와 DBMS

  • DB(DataBase) : 저장장치 내에 저장된 데이터의 집합
  • DBMS(Database Management System) : DB를 효율적으로 관리할 수 있는 소프트웨어

DBMS 사용 목적

  • 생산성
    • 데이터 추가, 검색, 갱신, 삭제의 기본기능을 제공 -> CRUD 제공
    • DBMS가 제공하는 기본기능을 이용하면 생산성 증가
  • 기능성
    • 복수 유저의 요청에 대응 가능
    • 대용량의 데이터를 저장, 고속 검색 기능 제공
    • 관리 기능을 유저가 확장 가능
  • 신뢰성
    • 많은 요청에 대응할 수 있도록 확장성(Scalability), 부하 분산(Load balancing)을 구현
    • 이를 클러스터 구성 or 스케일 아웃이라 함
    • 데이터를 다른 저장장치로 내보내고(export), 집어넣기(import) 등의 기능이 있어 백업 가능

데이터베이스를 조작하는 언어 SQL

DBMS를 이용하면 간접적으로 DB에 CRUD 가능

CRUD : Create(추가), Read(읽기), Update(갱신), Delete(삭제)

  • SQL로 DBMS와의 대화 가능
  • SQL은 데이터베이스 종류 중 관계형 데이터베이스(RDBMS)을 조작할 때 사용

관계형 데이터베이스 관리 시스템(RDBMS, Relational Database Management System)

SQL명령의 종류

  • DML(Data Manipulation Language) : 데이터 조작
  • DDL(Data Definition Language) : 데이터 정의
  • DCL(Data Control Language) : 데이터 제어

다양한 데이터베이스

  • 계층형 데이터베이스
    • 폴더와 파일 등의 계층 구조로 데이터를 저장
  • 관계형 데이터베이스
    • 행과 열을 가지는 표 형식 데이터를 저장
    • 표 형식 데이터 = 2차원 데이터 -> 엑셀(Excel)
  • 객체지향 데이터베이스
    • 객체(object) 그대로를 데이터로 저장
  • XML 데이터베이스
    • HTML과 흡사
    • XML 형식 데이터를 저장
    • SQL 명령어 사용X -> XQuery 명령어 사용해야됨
  • 키-밸류 스토어(KVS)
    • key:value 형태로 데이터 저장
    • 연상배열 or 해시 테이블(hash table)에 사용
    • NoSQL(Not only SQL)부터 생겨남, 열 지향 데이터베이스

데이터베이스 제품

  • Oracle(오라클)
    • 현재 가장 많이 사용
  • DB2
  • SQL Server
    • 윈도우 플랫폼에서만 동작
  • PostgreSQL
    • 오픈소스 커뮤니티가 개발, 무료 소프트웨어여서 자유롭게 사용 가능
  • MySQL
    • PostgreSQL와 마찬가지로 오픈소스 커뮤니티에서 탄생
  • SQLite
    • 오픈소스 커뮤니티에서 탄생, 임베디드 시스템에 쓰이는 작은 RDBMS

데이터베이스 서버

클라이언트/서버 모델

웹 시스템에서의 클라이언/서버

  • 웹 시스템 : 브라우저와 웹서버로 구성된 클라이언트/서버 모델
  1. 클라이언트인 브라우저에서 지정한 URL과 연결된 웹 서버에 요청
  2. 서버는 브라우저가 페이지를 표시할 수 있도록 HTML로 된 데이터를 반환
  3. 데이터는 네트워크를 통해 전송

리퀘스트(Request) = 요청
리스폰스(Response) = 응답

RDBMS의 클라이언트/서버

  • 웹 시스템에 없던 사용자 인증이 필요
  • RDBMS는 사용자 별로 데이터베이스 접근을 제한할 수 있음

SQL 명령 실행

  • RDBMS에 접속하면 SQL 명령을 서버에 보낼 수 있음
  • 한 번 DB에 접속하면 재접속 없이 SQL명령을 보낼 수 있게 유지됨

웹 애플리케이션의 구조

  • 웹 서버와 데이터베이스 서버의 조합으로 구축
  • 웹 서버에서 동적 콘텐츠를 위한 확장 방식으로 CGI 사용
  • CGI를 이용하여 프로그램과 웹 서버 간을 연동, 통신 처리

    CGI(Common Gateway Interface)

MySQL 서버와 mysql 클라이언트

  • MySQL 패키지 설치하면 pc 한대로 서버와 클라이언트 모두 사용 가능
  • MySQL 서비스 = 데이터베이스 서버 / mysql 커맨드 = 클라이언트
  • 루프 백 접속 : 클라이언트에서 네트워크를 경우해 pc의 서버로 되돌아오는 형태

느낀점

CGI가 도대체 뭘 말하는지 이해가 안갔다. 처음에 DBMS을 얘기하는건가 하면서 읽었는데 그런뜻은 아니였고 인터넷이 발달하다보니 웹 서버만으로 정적인 HTML 파일로 사이트를 운영하기에는 한계가 있어서 동적 콘텐츠가 필요하게 되었고, 개발자가 작성한 백엔드 서버 사이에서 데이터를 전송해주는 애로 이해를 했다. 찾아보니까 현재는 이 방식에서 발전한거 같은데 따로 찾아서 정리를 해야겠다.

reference

SQL 첫걸음
모두의 SQL
CGI 란
CGI는 무엇인가?