챌린지 16일차 학습 정리

챌린지 16일차 학습 정리

네이버 부스트캠프 9기 챌린지 16일차 학습 정리 페이지입니다.

  • 누군가 작성한 것을 그대로 쓰는 것이 아니라 나만의 언어로 재구조화하여 작성해야 합니다.
  • 기술 키워드에 대한 상세 내용도 좋고, 미션 해결 과정에서 기능 구현을 성공한 사례도, 트러블 슈팅 경험도 좋습니다.

목차

학습한 내용

파일 시스템

개념

파일 시스템이란 데이터를 저장하고 관리하는 구조와 방법을 말합니다. 파일 시스템은 운영체제와 데이터 저장 장치 간의 인터페이스 역할을 하며, 데이터를 파일 단위로 저장하고 파일을 조직, 검색, 읽기, 쓰기 등의 작업을 가능하게 합니다.

파일 시스템의 특징

파일 시스템의 특징은 다음과 같습니다.

  • 계층적 디렉토리 구조를 가집니다.
  • 디스크 파티션 별로 하나씩 둘 수 있습니다.

파일 시스템의 기능

  • 파일 관리: 파일 생성, 삭제, 읽기, 쓰기, 수정 등의 작업을 지원합니다.
  • 디렉토리 관리: 파일을 체계적으로 정리할 수 있도록 디렉토리 구조를 제공합니다.
  • 저장 공간 관리: 디스크 공간을 효율적으로 사용하도록 도와주며, 파일들이 디스크 상에 효율적으로 배치되도록 합니다.
  • 보안 및 접근 제어: 사용자 및 그룹 권한을 설정하여 파일 접근을 제한합니다.
  • 데이터 무결성 및 복구: 데이터 손실을 방지하고, 데이터가 송상되었을 때 이를 복구할 수 있는 기능을 제공합니다.

주요 구성 요소

  • 파일: 데이터의 집합체로 파일 이름과 확장자를 통해 구분됩니다.
  • 디렉토리: 파일과 다른 디렉토리를 포함할 수 있는 구조로 파일 시스템을 계층적으로 구성합니다.
  • 메타데이터: 파일에 대한 정보(파일 이름, 크기, 생성 날짜, 수정 날짜, 권한 등)를 저장합니다.
  • 할당 테이블: 파일이 디스크 어디에 저장되어 있는지에 대한 정보를 관리합니다.
  • 저장 장치: 파일 시스템이 관리하는 물리적 또는 논리적 저장 매체를 의미합니다. 저장 장치로는 HDD, SSD, USB 드라이브 등이 있습니다.

파일 시스템의 종류

  • FAT(File Allocation Table): MS-DOS와 Windows에서 널리 사용된 파일 시스템입니다. FAT16, FAT32 등이 있습니다.
  • NTFS(New Technology File System): Windows NT 계열에서 사용되는 파일 시스템으로 보안, 압축, 암호화 등의 기능을 제공합니다.
  • EXT(Extended File System): 리눅스에서 주로 사용되는 파일 시스템입니다. EXT2, EXT3, EXT4가 있습니다.
    • EXT2: UFS(Unix File System)을 기반으로 필요한 기능만 가져다 단순하게 만들어졌습니다. 파일 이름을 256바이트까지 지을 수 있고, 파일당 최대 용량 2GB, 전체 디스크 크기는 4TB까지 인식이 가능합니다.
    • EXT3: EXT2에 저널링, 온라인 파일 시스템 증대, 큰 디렉토리를 위한 HTree4 인덱싱 등의 기능을 추가하였습니다.
    • EXT4: 주로 리눅스에서 사용되는 파일 시스템 중 하나로, 대용량 파일 시스템을 지원하고 디스크 단편화에 대한 부분과 성능 증가, 타임 스탬프를 개선하였습니다.

HTTP Request와 Response

개념

HTTPHyperText Transfer Protocol의 약자로, 문서를 전송하기 위한 프로토콜을 의미합니다. 즉, 서버와 클라이언트 사이에서 어떻게 메세지를 교환할지를 정해 놓은 규칙입니다.

HTTP Request

HTTP Request는 클라이언트(보통 웹 브라우저)가 서버에게 정보를 요청할 때 사용하는 메세지입니다. HTTP Request는 다음과 같은 주요 구성 요소로 이루어져 있습니다.

  • 요청 메서드(Request Method): 클라이언트가 서버에 수행하고자 하는 작업의 유형을 나타냅니다.
    • GET: 서버로부터 리소스를 요청합니다. 데이터를 요청할 때 주로 사용됩니다.
    • POST: 서버에 데이터를 제출합니다. 폼 제출 등에서 사용됩니다.
    • PUT: 서버에 데이터를 업데이트합니다.
    • DELETE: 서버에서 리소스를 삭제합니다.
    • PATCH: 서버에 데이터를 부분적으로 업데이트합니다.
    • HEAD: GET 요청과 동일하지만, 응답 본문을 포함하지 않습니다. 메타데이터만 필요할 때 사용됩니다. GET 요청으로 반환될 데이터 중 헤더 부분에 해당하는 데이터만 요청합니다.
    • TRACE: 서버에 송신한 요청의 내용을 반환해 줄 것을 요청합니다.
    • CONNECT: 특정 종류의 프록시 서버에게 연결을 요청합니다.
    • OPTIONS: 서버가 지원하는 메서드를 요청합니다.
  • Request URL: 요청하는 리소스의 주소를 나타냅니다. 이는 프로토콜, 도메인, 경로, 쿼리 문자열로 구성됩니다.

    https://www.example.com/path/to/resource?query=param
    
  • HTTP 버전: 사용 중인 HTTP의 버전을 나타냅니다.
  • 헤더(Headers): 추가적인 정보를 제공하는 키-값 쌍의 집합을 의미합니다.
  • 본문(Body): 요청과 함께 전송되는 데이터를 의미합니다. 주로 POSTPUT 요청에서 사용됩니다.

HTTP Response

HTTP Response는 서버가 클라이언트의 요청에 응답할 때 사용하는 메세지입니다. HTTP Response는 다음과 같은 주요 구성 요소로 이루어져 있습니다.

  • 상태 라인(Status Line): HTTP 버전, 상태 코드, 상태 메세지로 구성됩니다.
    HTTP/1.1 200 OK
    
  • 상태 코드(Status Code): 요청의 처리 상태를 나타내는 3자리 숫자입니다.

    • 1XX(정보 제공): 요청을 받았으며 작업을 진행 중이라는 의미입니다.
    • 2XX(성공): 클라이언트의 요청을 수신하여 이해했고 받아들여졌으며, 성공적으로 처리했다는 의미입니다.
    • 3XX(리다이렉션): 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다는 의미입니다.
    • 4XX(클라이언트 오류): 클라이언트의 요청이 올바르지 않다는 의미입니다.
    • 5XX(서버 오류): 클라이언트의 요청은 유효하지만 서버가 처리하는데 실패했다는 의미입니다.
  • 헤더(Headers): 추가적인 정보를 제공하는 키-값 쌍의 집합을 의미합니다.
  • 본문(Body): 요청된 리소스의 데이터입니다. HTML, JSON, 이미지 등 다양한 형식이 될 수 있습니다.

SQL

개념

SQL(Structured Query Language)이란 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어입니다. 관계형 데이터베이스는 정보를 표 형식으로 정하며, 행과 열은 다양한 데이터 속성과 데이터 값 간의 다양한 관계를 나타냅니다. SQL 문을 사용하여 데이터베이스의 테이블에 서 데이터를 검색, 삽입, 업데이트, 삭제하는 등의 작업을 수행할 수 있습니다.

SQL의 주요 구성 요소

  • DDL(Data Definition Language): 데이터베이스의 객체를 정의하고 관리할 때 사용합니다.
  • DML(Data Manipulation Language): 데이터베이스에 저장된 데이터를 조작할 때 사용합니다.
  • DCL(Data Control Language): 데이터베이스에 대한 접근을 제어할 때 사용합니다.
  • TCL(Transaction Control Language): 트랜잭션을 제어할 때 사용합니다.

데이터베이스

개념

데이터베이스(Database)란 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음을 의미합니다. 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(Database Management System)라고 하며, 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(Query Language)를 통해, 삽입, 삭제, 수정, 조회 등을 수행할 수 있습니다. 또한 데이터베이스는 실시간 접근과 동시 공유가 가능합니다.

데이터베이스의 주요 개념

  • Entity: 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미합니다.
  • Relation: 데이터베이스에서 정보를 구분하여 저장하는 기본 단위를 의미합니다.
  • 테이블(Table): 데이터베이스에서 데이터를 행과 열로 구성하여 저장하는 구조입니다.
  • 스키마(Schema): 데이터베이스의 구조를 정의하는 개념입니다. 스키마는 데이터베이스 내의 테이블, 뷰, 인덱스, 관계 등을 정의합니다.
  • 인덱스(Index): 테이블에서 데이터 검색을 빠르게 하기 위한 데이터 구조를 의미합니다.
  • 속성(Attribute): Relation에서 관리하는 구체적이며 고유한 이름을 갖는 정보입니다.
  • 도메인(Domain): 각각의 속성들이 가질 수 있는 값의 집합을 의미합니다.
  • 키(Key): 테이블 간의 관계를 조금 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치를 의미합니다.
    • 기본 키(Primary Key, PK): 테이블 내에서 유일성과 최소성을 만족하는 키를 의미합니다. 즉, 테이블의 각 행을 고유하게 식별하는 열 또는 열의 조합입니다.
    • 외래 키(Foreign Key, FK): 다른 테이블의 기본 키를 그대로 참조하는 값으로 개체와의 관계를 식별하는 데 사용합니다.
    • 후보 키(Candidate Key): 기본 키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족하는 키를 의미합니다.
    • 대체 키(Alternate Key): 후보 키가 두 개 이상일 경우 어느 하나를 기본 키로 지정하고 남은 후보 키들을 말합니다.
    • 슈퍼 키(Super Key): 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키입니다.

CSV

개념

CSV(Comma-Separated Values)란 몇 가지 필드를 쉼표로 구분한 텍스트 데이터 및 텍스트 파일을 의미합니다. 확장자는 .csv이며 MIME 형식은 text/csv입니다. CSV 파일은 주로 스프레드시트 소프트웨어(Ex. Microsoft Excel, Google Sheets)와 데이터베이스 시스템에서 데이터를 가져오고 내보내는 데 사용됩니다.

CSV 파일 형식의 특징

  • 단순한 구조: CSV 파일은 텍스트 파일로, 각 행이 데이터 레코드를 나내타고 각 열이 데이터 필드를 나타냅니다.
  • 쉼표 구분: 데이터 필드를 구분하는 데 쉼표가 사용됩니다. 다른 구분 기호(Ex. 탭, 세미콜론)도 사용될 수 있습니다.
  • 헤더 행: CSV 파일의 첫 번째 행은 열 이름을 포함하는 헤더 행일 수 있습니다. 헤더 행은 각 데이터 필드의 이름을 정의합니다.
  • 확장자: CSV 파일의 확장자는 .csv입니다.
  • 텍스트 형식: CSV 파일은 순수 텍스트 형식이므로, 모든 텍스트 편집기로 열고 편집할 수 있습니다.

CSV 파일의 구성 요소

  • 헤더(Header): 선택 사항으로, CSV 파일의 첫 번째 행에 열 이름을 포함합니다.
  • 레코드(Record): 각 행은 하나의 레코드를 나타내며, 쉼표로 구분횐 데이터 필드를 포함합니다.
  • 필드(Field): 각 레코드의 쉼표로 구분된 데이터 요소를 의미합니다.

CSV 파일의 장점

  • 단순성: 텍스트 형식으로 저장되어 이해하고 작성하기 쉽습니다.
  • 호환성: 대부분의 데이터 분석 도구와 소프트웨어가 CSV 파일을 지원합니다.
  • 가벼움: 데이터 저장 시 오버헤드가 적어 파일 크기가 작습니다.

CSV 파일의 단점

  • 데이터 형식 제한: 숫자, 문자열 등의 단순한 데이터 형식만 지원합니다.
  • 구분 기호 문제: 데이터 필드에 쉼표가 포함된 경우 이를 적절히 이스케이프(escape) 처리해야 합니다.
  • 메타데이터 부족: 데이터 타입, 인코딩 등의 메타데이터 정보를 포함하지 않습니다.

JSON

개념

JSON이란 JavaScript Object Notation의 약자로 일반적으로 클라이언트와 서버 사이에서 데이터를 주고 받을 때 사용하는 양식입니다.

JSON 구조

JSON 구조는 다음과 같이 이루어집니다.

{
  "키": "값",
  "types": "사용할 수 있는 자료형은 string, number, boolean, null, object, array 6개가 존재합니다.",
  "string": "문자열 값",
  "number": 20240717,
  "boolean": true,
  "null": null,
  "object": {
    "key1": 3.14159265358979323846264338,
    "key2": false,
    "key3": {
      "key4": "value",
      "key": "value2"
    }
  },
  "array": [
    "12351",
    {
      "key1": 1,
      "key2": "value"
    },
    ["1", "2", "3"]
  ]
}

JSON 구조의 특징은 다음과 같습니다.

  • JSON 구조는 위와 같이 키-값 쌍으로 이루어져 있습니다.
  • 키와 값은 :으로 구분합니다.
  • 값으로 사용할 수 있는 자료형은 string, number, boolean, null, object, array의 6가지가 존재합니다.
  • 날짜 및 시간 데이터를 지원하지 않습니다.
  • 주석을 사용할 수 없습니다.
  • 객체 내에 또 다른 객체나 배열을 사용할 수 있습니다. 마찬가지로 배열 내에 또 다른 배열을 사용할 수 있습니다.

참고 자료

  • 파일 시스템
    • https://blog.naver.com/kangdydtjs/222402981630
    • https://security-nanglam.tistory.com/228
    • https://lgana1021.tistory.com/79
    • https://namu.wiki/w/%ED%8C%8C%EC%9D%BC%20%EC%8B%9C%EC%8A%A4%ED%85%9C
  • HTTP
    • https://velog.io/@bky373/Web-HTTP%EC%99%80-HTTPS-%EC%B4%88%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC
    • https://jangjjolkit.tistory.com/12
    • https://namu.wiki/w/HTTP
    • https://hongong.hanbit.co.kr/http-%EC%83%81%ED%83%9C-%EC%BD%94%EB%93%9C-%ED%91%9C-1xx-5xx-%EC%A0%84%EC%B2%B4-%EC%9A%94%EC%95%BD-%EC%A0%95%EB%A6%AC/
  • SQL
    • https://aws.amazon.com/ko/what-is/sql/
  • Database
    • https://aws.amazon.com/ko/what-is/database/
  • CSV
    • https://ko.wikipedia.org/wiki/CSV_(%ED%8C%8C%EC%9D%BC_%ED%98%95%EC%8B%9D)

Comments