백엔드/SQL 첫걸음

1. 데이터베이스와 SQL

smallsilver_west 2024. 9. 25. 14:08

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