728x90
반응형

데이터베이스란 ? 

 

대량의 정보를 컴퓨터가 효율적으로 접근할 수 있도록 가공 및 저장한 것 

 

DBMS란 ?

 

다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합

 

DBMS를 쓰지 않는다면

 

다수의 사람이 데이터를 공유하기 어렵다 

대량의 데이터를 다루기 어렵다 (txt,xls 등)

읽기/쓰기를 자동화하려면 프로그래밍 기술이 필요하다. 

만일의 사고에 대비 어렵다.

 

관계형 데이터베이스 - RDB 

 

관계형 데이터베이스는 키와 값의 간단한 관계를 2차원 표(테이블)형식으로 나타낸 데이터베이스이다. 

하나의 데이터베이스 안에는 여러 개의 테이블이 존재할 수 있다.

 

테이블

 

테이블은 행과 열로 이루어져 있다. 

 

테이블의 행은 레코드라고 브르며 데이터 한 건에 해당 

하나의 테이블은 적게는 수백개 많게는 수백만개의 레코드를 지님. 

 

 

테이블의 열에 해당하는 칼럼은 각기 구분하기 쉽게 이름을 붙여 분류 

칼럼은 특정한 데이터 타입을 가진다.

 

RDBMS는 일반적으로 클라이언트가 요청을 보내면 서버가 처리해주는 C/S구조로 되어있다.

클라이언트가 요청을 보낼때에 주로 사용하는 언어가 SQL이다.

 

사용자가 데이터를 조회하고 싶을때에 SQL문으로 작성한 요청을 RDBMS에 보내면 RDMBS는 요청된 데이터를 반환한다. 이 때 RDMBS는 2차원 표 형태의 데이터를 반환한다.

 

RDBMS의 종류 

 

어떤 RDBMS를 쓰는지에 따라 SQL 문법이 조금씩 달라진다. 쓰이는 인기 있는 RDBMS는 

아래와 같다.

 

Oracle DB - 가장 오래되었고 신뢰도도 높다. 뛰어난 기술력과 안정성을 가지고 있다. 대규모의 애플리케이션,

특히 은행 업계에서 쓰이며 유료로 사용 

MySQL - 오픈 소스이기 때문에 널리 쓰인다. 웹 개발 특히 PHP를 이용한 개발에 흔히 쓰인다. 오라클이 인수한 후

불안감 때문에 다른 곳으로 넘어가는 경우가 보임

Maria DB -오라클이 MySQL을 인수하면서 라이선스 문제가 불확실해지자 이에 반발하여 만들어졌다.

MySQL 5.5를 기반으로 만들어져 사용법이 거의 유사하고 호환성도 뛰어나다.

PostgreSQL - 버클리 대학의 프로젝트로 만들어진 오픈 소스 ORDBMS이다. 

(ORDBMS : 객체 - 관계형 데이터베이스 관리 시스템) SQL의 확장성과 표준을 준수하고 풍부한 기능을 지원한다.

SQL Server - 마이크로소프트가 개발한 RDBMS이기 때문에 윈도우 시스템 환경 지원 

SQLite - DB를 서버가 아닌 파일로 저장하는 DBMS이다. 기기에 가벼운 DB를 저장하는 목적으로 설계되었으며

대표적으로 안드로이드,iOS,mac OS에서 사용 

 

SQL 명령어 

 

DDL - 데이터베이스 스키마와 설명을 처리하는 정의하는 언어. 데이터베이스나 테이블 생성/변경/삭제 등의 작업이 여기 포함된다. 

DML - 데이터검색,삽입,변경.삭제를 수행하여 조작하는 언어.실질적으로 저장된 데이터에 처리할 때 사용 

DCL - 데이터에 접근할 수 있는 권한을 관리하는 언어

TCL - 트랜잭션을 다루는 언어 

 

반응형
728x90
반응형

Static Pages와 Dynamic Pages

 

정적 페이지와 동적 페이지

1. Static Pages 

    - Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contents를 반환한다.

    - 항상 동일한 페이지를 반환한다.

    - Ex) image,html,css,javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들 

2. Dynamic Pages 

    - 인자의 내용에 맞게 동적인 contents를 반환한다.

    - 즉, 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물 

     * Servlet : WAS 위에서 돌아가는 Java Program

    - 개발자는 Servlet에 doGet()을 구현한다.

 

Web Server와 WAS의 차이 

 

Web Server 

 

Web Server의 개념 

  - 소프트웨어와 하드웨어로 구분된다.

  - 하드웨어 

     - Web 서버가 설치되어 있는 컴퓨터

  - 소프트웨어 

     - 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html.jpeg.css 등)

Web Server의 기능 

  - HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스  

    하는 기능을 담당한다.

  - 요청에 따라 아래의 두 가지 기능 중 적절하게 선택하여 수행한다.

기능 1) 

   - 정적인 컨텐츠 제공 

   - WAS를 거치지 않고 바로 자원 제공 

기능 2) 

   - 동적인 컨텐츠 제공을 위한 요청 전달 

   - 클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달

     (응답,Response)한다.

   - 클라이언트는 일반적으로 웹 브라우저를 의미한다.

Web Server의 예

  Ex) Apache Server,Nginx,IIS(Windows 전용 Web 서버)

 

WAS(Web Application Server)

 

- WAS의 개념

    - DB조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진

      Application Server

    - HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다. 

    - "웹 컨테이너(Web Container)" 혹은 "서블리 컨테이너(Servlet Container)"라고도 불린다.

    - Container란 JSP,Servlet을 실행시킬 수 있는 소프트웨어를 말한다.

    - 즉 WAS는 JSP,Servlet 구동 환경을 제공한다.

- WAS의 역할 

  - WAS = Wev Server + Web Container 

  - Web Server 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시되었다.

    - 분산 트랜잭션,보안,메시징,쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다.

    - 주로 DB서버와 같이 수행된다. 

  - 현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는데 있어서 성능상 큰 차이가 없다.

- WAS의 주요 기능 

   i. 프로그램 실행 환경과 DB 접속 기능 제공

   ii. 여러 개의 트랜잭션(논리적인 작업 단위) 관리 기능

   iii. 업무를 처리하는 비즈니스 로직 수행

- WAS의 예

   EX) Tomca,JBoss.Jeus,Web Sphere 등

 

Web Server와 WAS를 구분하는 이유 

 

 

- Web Server가 필요한 이유 ? 

  - 클라이언트에 이미지 파일을 보내는 과정을 생각해보자 

    - 이미지 파일과 같은 정적인 파일들은 웹 문서(HTML 문서)가 클라이언트로 보내질때 함께

      가는 것이 아니다 

    - 클라이언트는 HTML문서를 먼저 받고 그에 맞게 필요한 이미지 파일들을 다시 서버로 

      요청하면 그때서야 이미지 파일을 받아온다.

    - Web Server를 통해 정적인 파일들을 Application Server까지 가지 않고 앞단에서 빠르게 보내줄 수 있다.

- 따라서 Web Server에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.

 

WAS가 필요한 이유?

  - 웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재한다.

    - 사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어서 제공해야 한다.

    - 이때, Web Server만을 이용한다면 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어 놓고 

      서비스를 해야 한다.

    - 하지만 이렇게 수행하기에는 자원이 절대적으로 부족하다.

  - 따라서 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 

    만들어서 제공함으로써 자원을 효율적으로 사용할 수 있다.

 

그렇다면 WAS가 Web Server의 기능도 모두 수행하면 되지 않을까 ?

 1. 기능을 분리하여 서버 부하 방지 

     - WAS는 DB조회나 다양한 로직을 처리하느라 바쁘기 때문에 단순한 정적 컨텐츠는 Web 

        Server에서 빠르게 클라이언트에 제공하는 것이 좋다.

     - WAS는 기본적으로 동적 컨텐츠를 제공하기 위해 존재하는 서버이다.

     - 만약 정적 컨텐츠 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 부하가 커지게 되고 

       동적 컨텐츠의 처리가 지연됨에 따라 수행 속도가 느려진다.

     - 즉, 이로 인해 페이지 노출 시간이 늘어나게 될 것이다.

2. 물리적으로 분리하여 보안 강화

    - SSL에 대한 암복호화 처리에 Web Server를 사용 

3. 여러 대의 WAS를 연결 가능 

      - Load Balancing을 위해 Web Server를 사용 

      - fail over(장애 극복), fail back 처리에 유리 

      - 특히 대용량 웹 어플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리

        하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.

      - 예를 들어, 앞 단의 Web Server에서 오류가 발생한 WAS를 이용하지 못하도록 한 후

        WAS를 재시작함으로써 사용자는 오류를 느끼지 못하고 이용할 수 있다.

4. 여러 웹 어플리케이션 서비스 가능 

      - 예를 들어, 하나의 서버에서 PHP Application과 Java Application을 함꼐 사용하는 경우

5. 기타 

      - 접근 허용 IP관리,2대 이상의 서버에서의 세션 관리 등도 Web Server에서 처리하면 효율적이다.

- 즉, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리한다.

Web Server를 WAS앞에 두고 필요한 WAS들을 Web Server에 플러그인 형태로 설정하면 더욱 

효율적인 분산 처리가 가능하다.

 

Web Service Architecture 

 

- 다양한 구조를 가질 수 있다.

   1. Client -> Web Server -> DB 

   2. Client -> WAS -> DB

   3. Client -> Web Server -> WAS -> DB

 

3번 구조의 동작과정 

 

1. Web Server는 웹 브라우저 클라이언트로부터 HTTP요청을 받는다.

2. Web Server는 클라이언트의 요청을 WAS에 보낸다. 

3. WAS는 관련된 Servlet을 메모리에 올린다.

4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)

5. HttpServletRequest와 HttpServletResponse객체를 생성하여 Servlet에 전달한다.

    5-1 Thread는 Servlet의 service 메서드를 호출 

    5-2 service 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.

6.doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.

7.WAS는 Response객체를 HttpResponse형태로 바꾸어 Web Server에 전달한다.

8.생성된 Thread를 종료하고 HttpServletRequest와 HttpServletResponse 객체를 제거

 

DBMS와 MiddleWare의 개념

 

DBMS 

 - 다수의 사용자들이 DB내의 데이터를 접근할 수 있도록 해주는 소프트웨어

 - DBMS는 보통 Server형태로 서비스를 제공

 - Ex) MySQL,MariaDB,Oracle,PostgreSQL 

 - Q) DBMS Server에 직접 접속해서 동작하는 Client Program의 문제점 ?

       - Clinet에 로직이 많아지고 이에 따라 Client Program의 크기가 커진다.

       - 로직이 변경될 때마다 매번 배포가 되어야 한다

       - Client에 대부분의 로직이 포함되어 배포가 되기 때문에 보안에 취약하다.

- A) => 이를 해결하기 위해 아래와 같은 MiddlWare가 등장했다.

 

MiddleWare 

  - Client - MiddleWare Server - DB server(DBMS)

  - 동작 과정 

      - Client는 단순히 요청만 중앙에 있는 MiddleWare Server에게 보낸다.

      - MiddleWare Server에서 대부분의 로직이 수행

      - 이때, 데이터를 조작할 일이 있으면 DBMS에 부탁한다.

      - 로직의 결과를 Client에게 전송한다.

      - Client는 그 결과를 화면에 보여준다.

- 즉, 비즈니스 로직을 Client와 DBMS사이의 MiddleWare Server에서 동작하도록 함으로써

   Client는 입력과 출력만 담당하게 된다.

 

출처 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

반응형

'IT' 카테고리의 다른 글

RPA 란 ??  (0) 2021.08.18
스푸핑,스니핑,스누핑  (0) 2021.08.17
리눅스 보안 이슈를 해결하는 4가지 방법  (0) 2021.08.11
핫 스패어(Hot Spare)란 ??  (0) 2021.08.10
핫 스왑이란 ?  (0) 2021.08.10
728x90
반응형

전체적인 구조

DML(Data Manipulation Language, 데이터 조작어)

데이터베이스의 데이터를 관리하는데 사용됩니다. DML명령은 자동으로 커밋되지 않습니다. 즉 DML명령에 의한 변경은 데이터베이스에 영구적이지 않으므로 롤백할 수 있습니다.

 

DML(INSERT,UPDATE,DELETE,SELECT) 명령어의 경우, 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에

실시간으로 테이블에 영향을 미치는 것은 아니다. 따라서 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 한다. 그러나 SQL Server의 경우는 DML의 경우도 AUTO COMMIT으로 처리되기 때문에 실제 테이블 반영하기 위해 COMMIT 명령어를 입력할 필요가 없다.

 

데이터베이스에서 데이터를 검색.(RETREVE라고도 함)

 

 SELECT    - ALL : 기본 옵션이므로 별도로 지정하지 않아도 되며,
중복되는 데이터가 있더라도 모두 출력 
 - DISTINCT : 중복된 데이터가 있는 경우 1건만 출력
INSERT 테이블에 데이터를 삽입(추가)
UPDATE 테이블 내의 기존 데이터를 수정
DELETE 테이블에서 데이터를 삭제
테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 DELETE TABLE보다는 시스템 부하가 적은 TRUNCATE TABLE을 권고한다.
단, TRUNCATE TABLE의 경우 삭제된 데이터의 로그가 없어서 ROLLBACK이 불가능하므로 주의해야 한다.
그러나 SQL Server의 경우 사용자가 임의적으로 트랜잭션을 시작한 후 
TRUNCATE TABLE을 이용하여 데이터를 삭제한 이후 오류가 발견되어
다시 복구를 원할 경우 ROLLBACK문을 이용하여 
테이블 데이터를 원 상태로 되돌릴 수 있다.
 
MERGE UPSERT 작업 (INSERT 또는 UPDATE)
데이터가 테이블에 존재하지 않으면 INSERT,존재하면 UPDATE를 수행한다.
CALL PL/SQL 또는 Java 서브 프로그램 호출
EXPLAIN PLAN 데이터 접근 경로를 해석
(SQL문이 어떻게 실행/작동하는지에 대한 점검/분석을
할 수 있도록 도와 준다)
LOCK TABLE  동시성 제어

 

DDL (Data Definition Language, 데이터 정의어) - Auto Commit 

데이터베이스 구조 또는 스키마를 정의하는데 사용

주의 : 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DDL명령어를 입력하는 순간. 명령어에 해당하는 작업이 즉시 (AUTO COMMIT) 완료된다는 것을 기억하기 바란다. 

               

CREATE 데이터베이스의 객체를 생성
ALTER 데이터베이스의 구조를 변경
DROP 데이터베이스의 객체를 삭제 (테이블의 모든 데이터와 구조를 삭제)
RENAME 데이터베이스의 객체 이름을 변경
COMMENT 데이터에 주석등을 추가
TRUNCATE 테이블에 할당된 모든 공간을 포함하여 모든 레코드를 제거.
(테이블 객체의 저장공간 재사용 가능)

 

DCL (Data Control Language,데이터 제어 언어) - Auto Commit

 

데이터베이스에 권한 부여

주의 : 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DCL 명령어를 입력하는 순간. 명령어에 해당하는 작업이 즉식 완료된다는 것을 기억하기 바란다.

 

GRANT 데이터베이스에 대한 사용자의 액세스 권한을 제공.
(특정 사용자만 특정 작업을 할 수 있도록 지정 가능)
REVOKE GRANT명령으로 주어진 액세스 권한을 철회

TCL (Transaction Control Language, Transaction 제어 언어)

데이터의 보안,무결성,회복,병행 수행제어 등을 정의하는데 사용 

COMMIT 트랜잭션의 작업 결과를 저장 반영 (트랜잭션 완료)
ROLLBACK 데이터베이스를 마지막 COMMIT된 시점의 상태로 복원
데이터에 대한 변경 내용은 논리적인 트랜잭션으로 그룹화 될 수 있다.
SAVEPOINT 저장점을 정의하면 롤백할때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다. 따라서 복잡한 대규모 트랜잭션에서 에러가 발생했을때 SAVEPOINT까지의 트랜잭션만 롤백하고 실패한 부분에 대해서만 
다시 실행할 수 있다. (일부 툴에서는 지원이 안 될 수 있음)
복수의 저장점을 정의할 수 있으며, 동일이름으로 저장점을 정의했을때는
나중에 정의한 저장점이 유효하다.
SET 
TRANSACTION
Transaction 지정

 

출처 : https://iamfreeman.tistory.com/entry/DBMS-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%96%B8%EC%96%B4-DDL-DML-DCL-TCL-%EC%9D%98-%EC%A0%95%EC%9D%98

반응형

'IT > DB' 카테고리의 다른 글

SQL 개념 정리  (0) 2021.10.20
왜 데이터베이스 튜닝을 해야할까 ?? -  (0) 2021.10.14
쿼리란 ?  (0) 2021.10.14
DBMS와 SQL이란  (0) 2021.08.19
[DB]SQL Query문 간단하게 정리 (SELECT,INSERT,UPDATE,DELETE 쿼리문 사용법)  (0) 2021.08.11

+ Recent posts