01. 데이터베이스
데이터베이스
- 넓은 의미: 컴퓨터 안에 기록된 모든 것
- 일반적으로 통용되는 의미: 특정 데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태의 데이터
주기억장치
데이터 베이스 내 데이터는 영구적으로 보존되어야 함
휘발성 저장장치: 전원을 끄는 순간 저장한 모든 데이터가 사라짐.
비휘발성 저장장치: 하드디스크, 플래시메모리(SSD)
DBMS의 사용 목적
| 생산성: 시스템 개발 과정 중 생산성 향상을 도모
데이터 검색, 추가, 삭제, 갱신 처리와 같은 기본 기능을 DBMS가 제공해 개발에 필요한 작업이 줄어들어 비용적 측면에서 효율적
| 기능성: DBMS가 데이터베이스를 다루는 기능을 제공
복수 유저 요청 대응, 대용량 데이터 저장, 고속 검색 , 데이터베이스 관리 기능을 유저가 확장 및 유연하게 개발 가능
| 신뢰성: DBMS가 컴퓨터 여러대를 두고 소프트웨어를 통해 확장성(Scalability)과 부하 분산(Load Balacing) 구현
클러스터 구성 또는 스케일 아웃이라 부르며 외에도 데이터를 im/export해 데이터베이스 백업 가능
DBMS란 데이터베이스를 관리하는 소프트웨어로, 사용 목적은 생산성 향상과 기능성, 신뢰성 확보에 있다.
SQL
- DBMS와 대화에 필요한 언어
- 여러 종류의 데이터베이스 중에서도 관계형 데이터베이스 관리 시스템(RDBMS: Relational Database Management System)을 조작할 때 사용
- 현재 ISO등에 의해 표준화가 진행되어 C, JAVA와 같은 표준 언어
| DML: Data Manipulation(조작) Language, 데이터베이스에 새롭게 데이터를 추가, 삭제, 갱신하는 등 데이터를 조작 시 사용
| DDL: Data Definition Language, 데이터를 정의하는 명령어, 데이터 베이스 객체(Object)를 만들거나 삭제하는 명령어
| DCL: Data Control Language, 데이터를 제어하는 명령어, 트랜잭션을 제어하는 명령, 데이터 접근권환을 제어하는 명령 포함
02. 다양한 데이터베이스
종류
| 계층형 데이터베이스: 폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식으로 현재 DBMS로 채택하는 경우는 많지 않음
ex) 하드디스크, DVD 파일시스템
| 관계형 데이터베이스: 관계대수에서 착안하여 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터 베이스로 각 표에 이름을 지정해 관리
* SQL을 사용할 수 있는 데이터베이스틑 관계형 데이터베이스 밖에 없음
| 객체지향 데이터베이스: 객체 그대로를 데이터베이스의 데이터로 저장하는 형태
| XML 데이터베이스: XML형식으로 기록된 데이터를 저장하며 SQL 명령을 사용할 수 없으며 XQuery라는 정용 명령어롤 사용
| 키-밸류 스토어(KVS): 키와 그에 대응하는 값을 저장하는 단순한 형태로 열 지향 데이터베이스
RDBMS 사용 시스템
- 대형 범용기기(Main Frame)부터 소형 워크스테이션까지 널리 사용하며 휴대전화에도 내장
단, 모바일 OS 안드로이드에는 SQLite라는 RDBMS가 표준으로 내장
데이터베이스 제품
- RDMS: 관계형 데이터베이스를 관리하는 소프트웨어
- 종류: Oracle, DB2, SQL, 윈도우 플랫폼 Server, PostgreSQL, MySQL, SQLite
SQL 방언과 표준화
각 데이터베이스 제품 별로 확장 과정에서 특정 데이터베이스 제품에만 통용되는 고유 방언이 생겨나게 되어 되도록 표준 SQL을 사용하는 것 추천
03. 데이터베이스 서버
클라이언트/서버 모델
- 클라이언트: 사용자 조작에 따라 요청을 전달
- 서버: 해당 요청을 받아 처리하는 소프트웨어
* 복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템
웹 시스템
브라우저와 웹 서버로 구성되는 클라이언트/서버 모델의 시스템
- 전형적인 클라이언트/서버 모델 처리: 클라이언트가 웹서버에 요청을 보내면 웹 서버가 그에 맞게 처리 후 응답을 클라이언트로 반환
- 웹에서는 요청과 응답이 되풀이되며 웹 페이지를 표시
RDBMS의 클라이언트/서버
웹 시스템과 동일하게 클라이언트/서버 모델로 시스템이 구성되지만 웹 시스템에는 없는 ID와 비밀번호를 이용한 사용자 인증 필요
SQL 명령 실행
RDBMS에 접속했을 때, 서버가 가동 중이고 네트워크에 연결되어 있으면 클라이언트에서 SQL 명령을 보낼 때 서버가 응답
한번 데이터베이스에 접속하면 이를 유지하고 일반적으로 클라이언트를 종료하면 데이터베이스 접속이 끊기는 형태
웹 애플리케이션 구조
- 일반적으로 웹 서버와 데이터베이스 서버 조합으로 구축
- 웹 시스템은 클라이언트/서버 모델로 구성
| 브라우저 역할: 클라이언트
| 서버 역할: 아파치, IIS와 같은 웹 소프트웨어
* 웹 사이트가 정적인 HTML로 구성되어 있는 경우 웹 서버만으로 시스템 구축 가능
* 동적 HTML을 생성하기 위해서는 제어용 프로그램 필요
CGI
동적 콘텐으를 위한 확장 방식으로 프로그램과 웹 서버 간을 연동, 통신하여 처리
펄(perl), PHP, 루비(ruby) 등 스크립트 언어나 윈도우에서는 ASP.NET, 그 외에도 자바가 Servlet을 조합하여 사용
* 웹 서버의 CGI 프로그램은 데이터베이스의 클라이언트 역할
클라이언트/서버 모델
시스템의 하드웨어 구성을 유연하게 변경할 수 있도록 하며 클라이언트가 많아져 서버 능력이 부족해지면 추가로 설치해 분산
: 시스템 전체의 성능을 높일 수 있는 형태
MySQL 서버/ mysql 클라이언트
MySQL 패키지: 서버와 클라이언트 모두 사용 가능하며 MySQL 서비스가 데이터베이스 서버, mysql 커맨드가 클라이언트 역할
* 루프 백 접속: 클라이언트 서버에 접슥할 때 네트워크를 경유해 PC 서버로 되돌아오는 형태
'백엔드 > SQL 첫걸음' 카테고리의 다른 글
6. 데이터베이스 객체 작성과 삭제 (0) | 2024.10.12 |
---|---|
5. 집계와 서브쿼리 (0) | 2024.10.11 |
4. 데이터의 추가, 삭제, 갱신 (0) | 2024.10.05 |
3. 정렬과 연산 (1) | 2024.10.05 |
2. 테이블에서 데이터 검색 (4) | 2024.09.25 |