Post

[SQL 첫걸음] 1장: 데이터베이스와 SQL

[SQL 첫걸음] 1장: 데이터베이스와 SQL

“SQL 첫걸음” 도서 바로가기

1장: 데이터베이스와 SQL

1강. 데이터베이스

  • 데이터: 컴퓨터 안에 기록되어 있는 숫자
  • 데이터베이스: 데이터의 집합
  • 데이터베이스 내의 데이터: 영구 보존 필요. → 비휘발성 저장장치에 저장(ex. 하드디스크, SSD)

1. 시스템 내의 데이터베이스

  • 데이터베이스는 웹 시스템, POS시스템 등 다양한 시스템에서 사용한다.

2. DB와 DBMS

  • DB(Database): 저장장치 내에 정리되어 저장된 데이터의 집합
  • DBMS(Database Management System): 데이터베이스를 효율적으로 관리하는 소프트웨어
    • 사용 목적: 생산성 향상 & 기능성, 신뢰성 확보
      • 생산성: 전용 언어(SQL)를 통해 데이터를 빠르고 편리하게 관리하는 것
      • 기능성: 검색, 정렬, 사용자 공유 등 필요한 도구를 통합 제공하는 것
      • 신뢰성: 무결성을 유지하고 장애 시 복구하여 데이터를 안전하게 보호하는 것

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

  • SQL: 관계형 DBMS(RDBMS: Relational DBMS)을 조작할 때 사용
  • SQL 명령의 종류
    • DML(Data Manipulation Language): <데이터 조작어=""> 테이블 내의 데이터를 조회, 삽입, 수정, 삭제하는 실무에서 가장 많이 쓰는 언어 (예: `SELECT`, `INSERT`, `UPDATE`)
    • DDL(Data Definition Language): <데이터 정의어=""> 테이블이나 인덱스 같은 데이터베이스의 구조를 생성, 수정, 삭제하는 언어 (예: `CREATE`, `ALTER`, `DROP`)
    • DCL(Data Control Language): <데이터 제어어=""> 데이터에 접근할 수 있는 권한을 부여하거나 회수하여 보안을 관리하는 언어 (예: `GRANT`, `REVOKE`)

2강. 다양한 데이터베이스

1. 데이터베이스 종류

  • 계층형 데이터베이스: 데이터를 트리(Tree) 구조로 구성하여 상하 종속 관계로 관리하는 방식 (예: IMS)
  • 관계형 데이터베이스(RDB): 데이터를 표(Table) 형태로 관리하며 공통 키로 데이터를 연결하는 가장 대중적인 방식 (예: MySQL, Oracle)
  • 객체지향 데이터베이스: 프로그래밍의 객체(Object) 개념을 그대로 데이터베이스에 저장하고 관리하는 방식 (예: ObjectDB)
  • XML 데이터베이스: 데이터를 XML 문서 형식으로 저장하여 계층 구조와 메타데이터를 유연하게 관리하는 방식
  • 키-밸류 스토어(KVS): 고유한 키(Key)와 값(Value)의 쌍으로만 데이터를 저장하여 읽기/쓰기 속도가 매우 빠른 방식 (예: Redis)

2. RDBMS 사용 시스템

  • RDBMS: 관계형 모델을 기반으로 하는 데이터베이스 관리 시스템. 데이터를 단순히 저장하는 것을 넘어, 데이터 간의 ‘관계(Relationship)’를 정의하고 이를 관리하는 데 최적화된 소프트웨어
  • 핵심 구성 요소 및 특징
    • 테이블(Table) 구조: 데이터를 행(Row)과 열(Column)로 구성된 2차원 표 형태로 저장.
    • 스키마(Schema): 데이터의 구조, 표현 방법, 관계 등을 미리 엄격하게 정의한 설계도가 존재.
    • SQL(Structured Query Language): 데이터를 정의, 조작, 제어하기 위해 전용 언어인 SQL을 사용.

3. 데이터베이스 제품

  • Oracle: 강력한 성능과 보안, 대규모 트랜잭션 처리에 최적화된 엔터프라이즈 시장 점유율 1위 DB
  • DB2: IBM 메인프레임 환경에서 시작되어 안정성이 매우 높고 대형 기업 시스템에 주로 쓰이는 DB
  • SQL Server: 마이크로소프트(MS) 제품군과 호환성이 뛰어나며 Windows 서버 환경에 최적화된 DB
  • PostgreSQL: 오픈 소스임에도 표준 SQL을 가장 잘 준수하며 복잡한 쿼리와 확장에 강한 ‘진보된’ DB
  • MySQL: 세계에서 가장 많이 쓰이는 오픈 소스 DB로, 웹 서비스와 CMS 개발에 표준처럼 사용되는 DB
  • SQLite: 별도 서버 설치 없이 파일 하나로 동작하여 모바일 앱이나 임베디드 기기에 내장되는 가벼운 DB

4. SQL의 방언과 표준화

  • 표준의 강제성 부족과 제조사별 기능 차별화 및 성능 최적화 경쟁 때문 → “고유 방언” 생김
  • 고유 방언의 예: 키워드 생략, 외부결합 등
  • DBMS마다 고유한 방언이 존재하지만, 시스템 이동 시 수정 비용과 인력 교육비가 가중되므로 유지보수와 확장을 위해 표준 SQL 사용을 지향해야 함!

3강. 데이터베이스 서버

1. 클라이언트/서버 모델

: 서비스를 요청하는 클라이언트(Client)와 서비스를 제공하는 서버(Server)가 역할을 나누어 통신하는 네트워크 구조

  • 웹 시스템에서의 클라이언트/서버
    • 클라이언트(Client): 웹 브라우저(Chrome, Safari 등)를 통해 특정 페이지나 데이터를 서버에 요청(Request)
    • 서버(Server): 요청을 받아 데이터베이스(DB)에서 정보를 꺼내거나 로직을 처리한 뒤, 결과를 클라이언트에 응답(Response)
  • RDBMS에서의 클라이언트 서버
    • RDBMS는 사용자 별로 DB 접근 제한이 가능 → ID와 비밀번호를 이용한 사용자 인증이 필요
  • SQL 명령 실행
    • 인증 후 수립된 세션을 유지하여 재접속 없이 연속적인 SQL 처리가 가능하며, 작업 완료 시 연결을 종료

2. 웹 애플리케이션의 구조

  1. 웹 브라우저 (클라이언트): 사용자가 웹 페이지에서 데이터를 입력하고 서버에 요청을 보냄
  2. 웹 서버: 브라우저의 요청을 받아들입니다. 정적인 HTML은 직접 응답하지만, 데이터 처리가 필요한 동적 요청은 CGI 규격에 맞춰 외부 프로그램에 전달
  3. CGI (Common Gateway Interface): 웹 서버와 외부 프로그램 사이에서 데이터를 주고받기 위한 표준 약속(인터페이스)
  4. CGI 프로그램 (애플리케이션): PHP, Python, Java 등으로 작성된 프로그램으로, 서버로부터 받은 요청을 처리하고 필요 시 데이터베이스와 통신하여 결과를 생성한 뒤 웹 서버에 돌려줌

⇒ 요약: 웹 서버가 직접 처리할 수 없는 동적인 작업을 위해 CGI라는 규격을 통해 외부 프로그램에 처리를 맡기고, 그 결과를 다시 받아 사용자에게 전달하는 구조

This post is licensed under CC BY 4.0 by the author.