HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식이다.
메시지는 총 2가지가 타입이 있는데 위의 이미지에서 보이는 것처럼
하나는 클라이언트가 서버에 요청(Request)를 보낼 때 사용하는 메시지,
다른 하나는 서버가 일을 마친 후 클라이언트에게 응답(Response)을 보낼 때 사용하는 메시지이다.
HTTP 메시지는 위의 그림과 같은 구조로 이루어져 있으며 간단하게 정리하면 다음과 같다.
브라우저에서도 위와 같이 헤더를 확인할 수 있다.
브라우저 개발자 도구 - 네트워크 - (예시: www.naver.com) - Headers
크게 세 사지 요소로 이루어져 있다.
HTTP Header는 여러 유형별로 나뉘며, 각각의 Header는 특정한 목적이 있다.
요청 및 응답 메시지 모두에서 사용되며 컨텐츠 자체에는 적용되지 않는다.
사용되고 있는 Context에 따라 reponse, request 헤더로 사용된다.
엔터티 헤더는 요청과 응답의 본문에 포함된 엔터티에 대한 메타데이터를 제공합니다.
DBMS는 Database Management System의 약자로 데이터베이스를 관리하는 소프트웨어 시스템이다.
데이터를 삽입, 수정, 삭제, 검색을 포함하는 여러 작업을 수행한다.
실시간 접근성: 사용자의 요청에 즉시 응답하여 실시간으로 데이터를 처리.
지속적인 변화: 데이터의 삽입, 삭제, 갱신을 통해 항상 최신의 정확한 정보 유지.
동시 공유: 여러 사용자가 동시에 데이터에 접근, 공유.
내용 기반 참조: 데이터의 물리적 위치가 아닌 내용을 기반으로 참조.
데이터 독립성: 응용 프로그램과 데이터베이스를 분리하여 유연성 제공.
데이터 중복 최소화: 데이터베이스로 통합에 의해 중복문제 최소화.
보안성 강화: 제어 기능/ 접근 제어, 권한 할당으로 보안성 확보.
데이터 독립성 확보: 응용프로그램과 DB간 독립성이 유지됨.
효율적인 데이터 관리: 백업, 복구, 동시성 제어 등의 기능을 제공.
비용: 초기 구축 및 유지보수에 상당한 비용이 소요될 수 있다.
복잡성: 구조가 복잡하기 때문에 문제가 발생했을 때 어렵다.
시스템 의존성: DB에 데이터가 통합되어 관리되기 때문에 DBMS에 장애가 발생하면 치명적이다.
RDBMS는 Relational Database Management System의 약자로 관계형 데이터베이스 관리 시스템이다.
RDBMS는 DBMS와는 다르게 2차원 테이블 형태로 데이터를 저장하고 각각의 테이블간의 관계를 통해 구조화하고 관리한다.
테이블 기반 구조: 데이터를 행과 열로 구성된 테이블 형태로 저장.
관계성: 테이블 간의 관계를 외래 키를 통해 정의하고, 이를 이용해 테이블 간 조인(Join)이 가능.
SQL 사용: 데이터베이스와 상호작용하기 위해 표준화된 쿼리 언어인 SQL을 사용.
ACID 준수: 트랜잭션의 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 보장.
데이터 일관성: 엄격한 스키마와 관계 정의를 통해 데이터의 일관성 유지.
복잡한 쿼리 지원: SQL을 통해 복잡한 데이터 조회와 분석 가능.
유연성과 확장성: 기존 데이터에 큰 영향을 주지 않고 테이블, 열 및 관계 수정 가능.
보안성: 사용자 인증, 권한 관리, 데이터 암호화 등 다양한 보안 기능 제공.
광범위한 지원: 오랜 기간 사용되어 왔기 때문에 풍부한 지원과 통합 옵션 제공.
확장성 제한: 대규모 데이터 처리나 수평적 확장이 어렵다.
스키마 변경의 어려움: 엄격한 스키마로 인해 구조 변경이 복잡하다.
비정형 데이터 처리의 한계: 정형화된 데이터 처리에 최적화되어 있어, 비정형 데이터 처리에는 제한이 있을 수 있다.
트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 논리적 단위이다.
한꺼번에 모두 수행되어야 할 연산들을 의미하며, 데이터베이스의 일관성을 유지하는 데 중요한 역할을 한다.