파일 시스템, HTTP, DB, 트랜잭션

HongBoogie·2024년 8월 8일

File

  • 논리적 저장 단위로, 관련된 정보 자료들의 집합에 이름을 붙인 것.
  • 레코드 혹은 블록 단위비 휘발성 보조기억장치에 저장.
  • 일반적으로 MetaData데이터 영역으로 이루어짐.
    • MetaData란 데이터 영역에 기록된 파일의 이름, 위치, 크기, 시간정보, 삭제 유무 등의 파일 정보이다.

File System

  • 컴퓨터에서 파일이나 자료를 쉽게 발견 가능하도록 유지 및 관리하는 방법.

  • 커널 영역에서 동작한다.

  • 파일 CRUD 기능을 원활히 수행하기 위함.

  • 계층적 디렉터리 구조를 지님.

  • 디스크 파티션 별로 하나씩 둘 수 있다.

    • Partition은 연속된 저장 공간을 하나 이상의 연속되고 독립적인 영역으로 나눠 사용할 수 있도록 정의한 규약.
    • 하나의 물리적 디스크 안에 여러 파티션을 두는게 일반적.
  • https://weftnwarp.kr/site-it/archives/디렉터리와-폴더-그리고-파일의-차이/#google_vignette

파일과 디렉터리

  • 어떤 OS를 사용하던 결국은 디렉터리와 파일로 구성됨.
  • Unix에선 모든 것은 파일이다. 라는 명언이 존재하는데, Unix 시스템이 거의 모든 자원과 서비스를 파일 형태로 표현하기 때문이다.

디렉터리

  • 디렉터리는 파일을 분류해 한데 모아 놓은 일종의 서류철을 의미함.
  • 디렉터리는 수직적 트리구조로, 단순 파일 뿐 아니라 하위 디렉터리를 포함.
  • 전화번호부와 비슷한데, 각 사람을 다른 이들과 구별할 수 있는 최소한의 속성을 담고 있을 뿐이다.
  • 디렉터리도 파일의 일종인데, 이는 동명의 디렉터리와 파일을 만들 수 없음으로써 증명된다.

HTTP

  • 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜
  • HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.
  • TCP / IP를 이용하는 응용 프로토콜이다.
    • 컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로 인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고 받는 기능을 이용하는 응용 프로토콜
  • HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
    • 이러한 단점을 해결하기 위해 CookieSession이 등장하였다.

Request

클라이언트가 서버에게 연락하는 것

Request Method

  • GET : 자료를 요청할 때 사용
  • POST : 자료의 생성을 요청할 때 사용
  • PUT : 자료의 수정을 요청할 때 사용
  • DELETE : 자료의 삭제를 요청할 때 사용

Request HTTP example

GET https://velog.io/@HongBoogie HTTP/1.1								// 시작줄
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...			  // 헤더
Upgrade-Insecure-Requests: 1

1. 시작줄 (첫 줄)

첫 줄은 시작줄로 메서드 구조 버전으로 구성되었다.

  • GET : HTTP Method
  • https://velog.io/@HongBoogie : 사이트 주소
  • HTTP/1.1 : HTTP 버전

2. 헤더 (두 번째 줄부터)

두번째 줄부터는 헤더이며 요청에 대한 정보를 담고 있다. User-Agent, Upgrade-Insecure-Requests 등등이 헤더에 해당되며 헤더의 종류는 매우 많다.

3. 본문 (헤더에서 한 줄 띄고)

본문은 요청을 할 때 함께 보낼 데이터를 담는 부분이다. 현재 예시에는 단순히 주소로만 요청을 보내고 있고 따로 데이터를 담아 보내지 않기 때문에 본문이 비어있다.

Response

  • 서버가 요청에 대한 답변을 클라이언트에게 보내는 것

    Status Code (상태 코드)

    상태 코드에는 굉장히 많은 종류가 있다. 모두 숫자 세 자리로 이루어져 있으며, 아래와 같이 크게 다섯 부류로 나눌 수 있다.

    • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
    • 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
    • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
    • 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
    • 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.
  • https://inpa.tistory.com/entry/DB-📚-데이터베이스-기초-개

Database

  • 데이터베이스는 간단히 말하면 데이터들을 저장하고 조회하는 프로그램

    특징

    • 중복된 정보에 대해 데이터를 통합해 자료의 중복을 최소화한 데이터 모임으로 구성
    • 실시간 접근성을 지녀, 사용자의 요구에 신속하고 정확하게 응답이 가능해야함.
    • 내용에 의한 참조, 즉 DB에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터의 위치나 주소로 데이터를 찾음.
    • 동시 공용, 즉 다수의 사용자가 동시에 같은 내용의 데이터를 이용 가능해야함.

DBMS

  • DataBase Management System의 약자로 데이터베이스를 관리하는 시스템
  • 사용자와 DB사이에서 사용자의 요구에 따라 데이터를 생성해주고, DB를 관리해주는 소프트웨어.
  • 파일 시스템을 사용해 저장하며, 따라서 테이블 간에는 아무런 관계가 없다.
  • 데이터에 대한 많은 보안을 제공하지 않으며 정규화를 수행할 수 없어 데이터는 높은 중복성을 가질 수 있다.

RDBMS

  • RDB를 생성하고 수정하고 관리할 수 있는 소프트웨어
    • RDB는 관계형 데이터 모델에 기초를 둔 데이터베이스로, 모든 데이터를 2차원 테이블 형태로 표현
    • 관계형 모델은 실제 세계의 데이터를 관계라는 개념을 사용해서 표현한 데이터 모델
  • RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다.
  • 정규화를 통해 데이터의 중복성을 최소화하여 트랜잭션을 수행하는 것이 더 쉽다.
  • https://build.tistory.com/5

SQL

  • 구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장하고 처리하기 위해 사용한다.

CREATE

  • 테이블 및 컬럼 생성
CREATE TABLE 테이블명 (
	컬럼명 변수형식(자리수) 조건,
	컬럼명2 변수형식(자리수) 조건,
)

SELECT

  • 조회하고자 하는 테이블의 컬럼을 조회할 수 있다.
SELECT Column1, Column2 FROM NewTable

UPDATE

  • 테이블의 내용을 업데이트 해줄수 있다.
UPDATE 테이블 SET 변경할컬럼 = 변경할데이터 WHERE 조건컬럼 = 조건데이터

DELETE

  • 말그대로 조건으로 받은 데이터를 삭제.
DELETE 테이블명 WHERE 조건컬럼 = 조건데이터

CSV

  • 표 형태의 데이터를 저장하는 파일 형식
  • 한 줄이 한개의 행에 해당하며, 열 사이에는 쉼표를 넣어 구분

사용 예시

이름생년국어 점수영어 점수수학 점수
홍길동1992년7월17일100점90점70점
희동이1992년4월3일90점100점100점

위에 표를 CSV 형태로 저장하면 아래와 같다.

이름,생년,월,일,국어 점수,영어 점수,수학 점수
홍길동,1992,7,17,100,90,70
희동이,1992,4,3,90,100,100

트랜잭션

  • 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위
    • 상태를 변경시킨다는 것은 SELECT, UPDATE, INSERT 등의 행동을 뜻한다.
  • 트랜잭션은 상황에 따라 여러개가 생성 가능한데, 각 트랜잭션은 Commit or Rollback 될 수 있다.
    • 중복 저장, 중복 삭제 등의 문제가 있을 수 있기 때문에

원자성

  • 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나

일관성

  • 작업 처리의 결과가 항상 일관되어야 한다. 즉, 데이터 타입이 반환 후와 전이 동일해야함.

독립성

  • 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없고 독립적이다. 즉, 서로 간섭 불가하다.

지속성

  • 트랜잭션이 성공적으로 완료되면 영구적으로 결과에 반영되어야 함.

Commit & Rollback

Commit

  • 하나의 트랜잭션이 성공적으로 끝난 상태. 즉 데이터베이스에 일관성이 존재

Rollback

  • 트랜잭션의 원자성이 깨졌을 경우
  • 즉, 하나의 트랜잭션 처리가 비정상적으로 종료 되었을 때의 상태이다.
  • Rollback이 이뤄진다면 트랜잭션을 다시 실행하거나 부분적으로 변경된 결과를 취소한다.

트랜잭션의 상태

트랜잭션은 논리적으로 5가지의 상태에 있을 수 있다.

  • Active
    • 트랜잭션이 현재 실행 중인 상태
  • Failed
    • 트랜잭이 실행되다 오류가 발생해서 중단된 상태
  • Aborted
    • 브랜잭션이 비정상 종료되어 Rollback 이 수행된 상태
  • Partially Committed
    • 트랜잭션의 연산이 마지막까지 실행되고 Commit이 되기 직전 상태
  • Committed
    • 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태
profile
개발이 즐겁고 노는게 즐거워요

0개의 댓글