[DB] 데이터베이스와 SQL
데이터베이스(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
데이터베이스 서버
클라이언트/서버 모델
웹 시스템에서의 클라이언/서버
- 웹 시스템 : 브라우저와 웹서버로 구성된 클라이언트/서버 모델
- 클라이언트인 브라우저에서 지정한 URL과 연결된 웹 서버에 요청
- 서버는 브라우저가 페이지를 표시할 수 있도록 HTML로 된 데이터를 반환
- 데이터는 네트워크를 통해 전송
리퀘스트(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 파일로 사이트를 운영하기에는 한계가 있어서 동적 콘텐츠가 필요하게 되었고, 개발자가 작성한 백엔드 서버 사이에서 데이터를 전송해주는 애로 이해를 했다. 찾아보니까 현재는 이 방식에서 발전한거 같은데 따로 찾아서 정리를 해야겠다.