1장 데이터베이스와 SQL

유동헌·2021년 8월 1일
0

SQL첫걸음

목록 보기
1/2

01강 데이터베이스

데이터베이스

  1. 데이터 : 컴퓨터 안에 기록되어 있는 숫자를 의미데이터 : 컴퓨터 안에 기록되어 있는 숫자를 의미
  2. 데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태 / 영구적으로 저장되는 데이터
  3. 주기억장치에만 데이터를 저장한다면 전원을 끄는 순간 삭제됨 → 비휘발성 저장장치에 저장

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

데이터베이스는 다양한 시스템에서 사용됨

2. DB와 DBMS

데이터베이스는 저장장치 내에 정리되어 저장된 데이터의 집합, 이를 효율적으로 관리하는 소프트웨어를 → Database Management System(DBMS)

DBMS가 필요한 이유

  • 어떤 시스템이든 데이터 검색, 추가, 삭제, 갱신 필요 → 기본 기능을 DBMS가 제공 → 생산성 향상 도모
  • 데이터베이스를 효과적으로 다룰 수 있는 기능 제공
  • 대규모 요청에 대응하기 위한 신뢰성 향상. 확장성, 부하분산(Load Balancing) 구현 → 클러스터 구성, 스케일 아웃
  • 간단한 백업 과정

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

SQL → Relational Database Management System과 관계가 깊음.

SQL, IBM이 개발한 SEQUEL이라는 관계형 데이터베이스 조작용 언어를 기반으로 만들어졌음. 현재는 표준화된 언어.

— SQL 명령의 종류

DML (Data Multipualtion Language) : 데이터베이스에 새롭게 데이터를 추가하거나 삭제하거나 내용을 갱신하는 등, 데이터를 조작할 때 사용함.

DDL (Data Definition Language) : 데이터베이스는 데이터베이스 객체라는 데이터 그릇을 이용하여 데이터를 관리하는데 이 같은 객체를 만들거나 삭제하는 명령어.

DCL (Data Control Language) : 데이터를 제어하는 명령어. DCL에는 트랜잭션을 제어하는 명령과 데이터 접근권한을 제엉하는 명령이 포함되어 있음.

02강 다양한 데이터베이스

1. 데이터베이스의 종류

DBMS는 데이터 저장 방법에 따라 몇 가지로 분류

계층형 데이터베이스

  • 폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식

관계형 데이터베이스

  • 관계 대수라는 것에 학안하여 고안한 데이터베이스
  • 행과 열, 관계 대수로 표현된 데이터베이스 → 표 형태

객체지향 데이터베이스

  • 자바나 C++를 객체지향 언어라고 함. 객체라는 것을 중심으로 프로그래밍하는 언어

XML 데이터베이스

  • XML : 태그를 이용해 마크업 문서를 작성할 수 있게 정의한 것
  • SQL 명령 사용 불가 → Xquery라는 것을 사용

키 - 밸류 스토어

  • 키와 그에 맞는 값(value)이라는 단순한 형태의 데이터를 저장하는 데이터베이스
  • 키와 값(value)의 조합은 연상 배열이나 해시 테이블에서 자주 볼 수 있음.
  • NoSQL이라는 슬로건으로부터 생겨난 데이터베이스로, 열 지향 데이터베이스라고도 불린다.

2. RDBMS 사용 시스템

RDBMS는 역사가 깊은 만큼 다양한 시스템에서 사용됨. 메인프레임은 대부분 RDBMS를 사용함. 기업의 기반 시스템으로 채택되는 것은 아주. 일반적인 일. 다만 최근 들어 메인프레임 자체를 찾아보기 어려워짐. 다운사이징으로 인해 소형 워크스테이션으로 대체된 것. 그래도 여전히 데이터베이스 서버로는 RDBMS가 사용되었는데, 이때부터 클라이언트/서버 구조로 유행하기 시작.

웹 시스템과 연결하여, 소규모로 자주 이용되는 경우가 늘었다는 걸로 해석됨.

3. 데이터베이스 제품

대표적인 데이터베이스로는 DB2, SQL Server, PostgreSQL, MySQL, SQLite 등이 있다.

4. SQL의 방언과 표준화

키워드 등이 생략된 방언이 존재함.

03강 데이터베이스 서버

많은 RDBMS가 클라이언트/서버 모델을 채택해 가동 중. 특히 웹 시스템과 연동하는 RDBMS라면, 접속자 수가 수백명에 달하는 전용 데이터베이스 서버를 운용하는 일도 드물지 않다.

RDBMS는 복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트/서버 모델로 동작. 클라이언트는 서버에 접속 요청이나 SQL 명령 실행 요청을 보낼 수 있음. 서버는 이를 처리하고 클라이언트에 그 결과를 반환.

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

https://media.vlpt.us/images/two_jay/post/45d20c5f-b1bd-4966-bfe8-96d058c24f55/으왕.png

복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템

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

https://upload.wikimedia.org/wikipedia/commons/c/c9/Client-server-model.svg

웹 시스템이란 브라우저와 웹 서버로 구성되는 클라이언트/서버 모델의 시스템

클라이언트/서버 모델은 클라이언트와 서버로 구성된다!

웹 시스템에서 클라이언트 기능을 하는 브라우저는 사용자가 지정한 URL과 연결된 웹 서버에 요청을 보냄(Request) → 클라이언트의 요청을 받은 웹 서버는 요청을 처리하여 응답(데이터를 반환, Response)

요청과 응답을 주고 받으며 통신이 이뤄짐

RDBMS의 클라이언트/서버

웹 시스템과 대동소이. 하지만 단순히 요청과 응답을 되풀이하는 것은 아님.

사용자 인증 필요.

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

웹 애플리케이션은 일반적으로 웹 서버와 데이터베이스 서버의 조합으로 구축

웹 시스템 = 클라이언트 + 서버이며 브라우저가 클라이언트, 아파치(Apache)나 IIS와 같은 웹 소프트웨어가 서버 역할을 함. 클라이언트가 서버에게 요청하면 웹 서버는 클라이언트에게 응답.

http://www.w3big.com/python3/Cgi01.png

웹 서버에서 동적으로 HTML을 생성하려면 제어용 프로그램이 필요, CGI라 불리는 동적 콘텐츠를 위한 확장 방식이 필요. 이 CGI를 이용하여 프로그램과 웹 서버 간을 연동, 통신하여 처리함

실제로 데이터베이스에 접속하는 것은 CGI 프로그램

https://flylib.com/books/1/108/1/html/2/files/20fig02.gif

데이터베이스 서버를 사용하기 위해서는 먼저 데이터베이스 서버와의 접속이 성립되어야 한다. 그 후 데이터베이스에 필요한 SQL 명령을 전달하고, 실행 결과는 클라이언트로 되돌아간다. 이때 웹 서버의 CGI 프로그램이 데이터베이스의 클라이언트가 된다.

3. MySQL 서버와 mysql 클라이언트

클라이언트 / 서버 모델은시스템의 하드웨어 구성을 유연하게 변경할 수 있도록 도와줌.

사진 및 내용 출처

아사이 아츠시, SQL첫걸음
https://ko.wikipedia.org/wiki/클라이언트서버모델
http://www.w3big.com/ko/python3/python3-cgi-programming.html
https://flylib.com/books/en/1.108.1.149/1/

profile
지뢰찾기 개발자

0개의 댓글