얼렁뚱땅

[SQL 첫걸음] 1장 본문

데이터베이스

[SQL 첫걸음] 1장

당당익명 2021. 9. 12. 23:44

1장 데이터베이스와 SQL

1강 데이터베이스

  • 데이터: 컴퓨터 안에 기록되어 있는 숫자
  • 데이터베이스 : 데이터의 집합

데이터는 영구적으로 보존되어야 하기 때문에 하드디스크나 SSD 등 비휘발성 저장장치에 저장된다.

 

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

데이터베이스의 예시)

  • 데이터센터에 설치된 데이터베이스 : 인터넷 쇼핑몰
  • 데이터베이스에 데이터가 전송되는 경우 : 계산대
  • 휴대용 기기의 데이터베이스 : 핸드폰의 전화번호부

결론 : 데이터베이스는 다양한 시스템에서 사용한다.

 

2. DB와 DBMS

  • DB : 저장장치 내에 정리되어 저장된 데이터의 집합
  • DBMS : 데이터를 효율적으로 관리하는 소프트웨어

 

DBMS가 필요한 이유, 사용 목적 :

- 생산성 : 시스템 개발 과정에서의 생산성 향상. 데이터 검색, 추가, 삭제, 갱신과 같은 기본 기능을 DBMS가 제공한다.

- 기능성 : 데이터베이스를 다루는 기능을 많이 제공. 복수 유저 대응, 대용량 데이터 처리 etc.

- 신뢰성 : 대규모 데이터베이스는 많은 요청에 대응할 수 있도록 만들어져있다. 클러스터 구성, 스케일 아웃.

 

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

DBMS에서 사용하는 언어로 관계형 데이터베이스 관리 시스템(RDBMS)을 조작할 때 사용된다. 

SQL 명령은 크게 DML, DDL, DCL로 나뉘어 진다. 

 

2강 다양한 데이터베이스

DBMS는 다양한 종류가 존재한다. 

그중에서 SQL로 데이터를 다루는 데이터베이스를 관계형 데이터베이스(RDB)라고 부른다. 

 

1. 데이터베이스 종류

DBMS는 데이터 저장 방법에 따라 몇가지로 분류할 수 있다.

  • 계층형 데이터베이스 :폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식. 요즘에는 잘 사용하지 않는다.
  • 관계형 데이터베이스 : 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 DB. SQL 명령어로 조작할 수 있다. 
  • 객체지향 데이터베이스 : 객체 그대로를 데이터베이스의 데이터로 저장하는 것
  • XML 데이터베이스 : XML 형식으로 기록된 데이터를 저장하는 데이터베이스
  • 키-밸류 스토어 (KVS) : 키와 그에 대응하는 값이라는 단순한 형태의 데이털ㄹ 저장하는 데이터베이스

앞으로 관계형 데이터베이스에 집중할 것이다. 

 

2. RDBMS 사용 시스템

일반적로 사용하는 인프라는 인터넷이다.

요즘은 웹 시스템과 연동하여 사용하는 경우도 많다. 

 

3. 데이터베이스 제품

RDBMS : 관계형 데이터베이스를 관리하는 소프트웨어

아래는 모두 RDBMS 제품으로 SQL을 사용할 수 있다.

  • Oracle : 현재 가장 많이 쓰이는 RDBMS 중 하나이다.
  • db2 : IBM이 개발
  • SQL server : MS가 개발. 윈도우에서만 작동
  • postgreSQL : 오픈소스 커뮤니티가 개발. 무료이다.
  • MySQL : 오픈소스 커뮤니티에서 개발.
  • SQLite : 오픈소스 커뮤니티에서 개발. 임베디드 시스템이서 자주 쓰이는 작은 RDBMS이다.

 

4. SQL이 방언과 표준화

모든 RDBMS에서 SQL을 사용할수는 있지만 각 제품마다 별도의 확장 기능이 생겨나면서 특정 데이터베이스 제품에서만 통용되는 '방언'이라는 것이 생겨났다.

예시) 키워드 생략

DELETE 명령어. 어떤 DB는 FROM을 생략해도 되고 어떤 DB는 생략하면 에러가 난다. 

예시) 외부결합

Oracle에서는 + 연산자를, SQL Server에서는 *= 연산자를 사용한다.

하지만 표준 SQL을 사용하기를 권장한다. 

 

3강 데이터베이스 서버

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

RDBMS는 복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트/서버 모델로 동작한다.

  • 클라이언트는 서버에 접속 요청이나 SQL 명령 실행요청을 보낼 수 있다. 
  • 서버는 이를 처리하고 클라이언트에 그 결과를 반환한다.

웹 시스템에서의 클라이언트/서버 : 웹 브라우저와 웹 서버

  • 클라이언트 : URL을 통해 연결된 웹 서버에 요청을 보낸다. "웹 페이지를 보고 싶다!" (request)
  • 웹 서버 : HTML로 된 데이터를 반환. (response)

RDBMS의 클라이언트/서버

데이터베이스는 사용자 별로 접근을 제한하기 위해 ID와 비밀번호를 이용한 사용자 인증이 필요하다. 

RDBMS에 접속하면 SQL 명령을 서버에 보낼 수 있다. 

 

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

웹 애플리케이션 = 웹 서버 + 데이터베이스 서버

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

정리 : 클라이언트 브라우저 -> 웹 서버 -> CGI 프로그램 -> DB

 

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

MySQL 패키지를 PC에 install 하면 서버와 클라이언트 모두 사용할 수 있다.

PC 한대로 클라이언트와 서버 모두 실행할 수는 있지만 클라이언트에서 서버에 접속할 필요가 있다. 이때 네트워크를 경유해서 PC의 서버로 되돌아오는 형태로 접속하는데 이것을 '루프 백 접속'이라고 부른다.