데이터 포맷

Volc·2024년 1월 26일
0

Data Engineer

목록 보기
2/2

데이터 포맷

세상에는 무수한 데이터가 쏟아지고 있다.
이러한 데이터를 컴퓨터에 저장을 할 때 다양한 형태로 저장된다.
그냥 text에 저장하면 안돼?
저장 해도 된다. 다만 데이터의 특성과 사용 목적에 맞게 저장을 해야한다.

고려 사항들

  • 대용량 데이터
    • 텍스트 파일 형식은 처리 및 읽기가 느릴 수 있다.
    • 이러한 경우 binary 형식이나 데이터베이스, 빅데이터 시스템 등의 다른 형식을 고려해야 한다.
  • 구조화 된 데이터
    • JSON, CSV, XML과 같이 특정 형식이 있는지 확인한다.
  • 보안
    • 민감한 정보의 경우, 데이터베이스의 암호화 기술을 사용하는 것이 안전할 수 있다.
  • 검색과 효율
    • 데이터를 효율적으로 관리하고 검색해야 하는 경우 데이터베이스가 더 나은 선택일 수 있다.
  • 이진 데이터
    • 이미지, 오디오, 비디오는 텍스트 파일에 저장하기 어려워 데이터 타입에 맞게 저장해야 한다.
  • 가용성과 확장성
    • 시스템이 가용하고 확장 가능한지 고려한다.

여러가지 데이터 포맷

XML

  • Extensible Markup Language의 약어이다.
  • 다목적 마크업 언어로, 데이터를 저장하고 전송하는 데 사용되는 텍스트 기반의 언어이다.
  • 태그를 통해 데이터를 표시하는 형태이다.
  • HTML에서는 태그를 통해 데이터의 모양과 느낌을 정의한다.
  • 단순 게임 옵션, 직접 데이터 수정이 잦은 부분에서 사용한다.
<person>
  <name>John Doe</name>
  <age>30</age>
  <city>New York</city>
</person>

JSON

  • JavaScript Objet Notation의 약어이다.
  • JavaScript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다.
  • 서버에서 클라이언트로 데이터를 보낼 때 사용하는 양식이다.
  • 기본 데이터 타입인 문자열, 숫자, 배열, 불리언, 객체 등을 포함할 수 있다.
  • 서버 통신 등 데이터 이동에 관한 부분에서 사용한다.
{
  "squadName": "Super hero squad",
  "homeTown": "Metro City",
  "formed": 2016,
  "active": true,
  "members": [
    {
      "name": "Molecule Man",
      "age": 29,
      "secretIdentity": "Dan Jukes",
      "powers": ["Radiation resistance", "Turning tiny", "Radiation blast"]
    },
    {
      "name": "Madame Uppercut",
      "age": 39,
      "secretIdentity": "Jane Wilson",
      "powers": [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    }
  ]
}

CSV

  • Comma Separated Values는 몇 가지 필드를 쉼표로 구분한 텍스트 데이터 및 텍스트 파일이다.
  • 간단한 테이블 또는 읽는 속도가 주요한 부분에서 사용한다.

parquet

  • 하둡에서 컬럼 방식으로 저장하는 저장 포맷을 말한다.
  • spark에 최적화된 형식이다.
  • 컬럼 단위로 구성하면 데이터가 더 균일하여 압축률이 높다.
  • 필요한 컬럼만 로드하기 때문에 디스크 I/O가 적다.

avro

  • 대량의 데이터를 효율적으로 저장하고 전송하기 위한 개방형 데이터 직렬화 프레임워크이다.
  • JSON과 비슷한 형식이지만 스키마가 존재한다.
  • 직렬화 되어 있어 디버깅이 힘들다.
  • 스키마 관리가 필요하다.

ORC

  • parquet과 비슷한 형태로 column 기반으로 저장한다.
  • hive에 최적화 되어 있다.
profile
미래를 생각하는 개발자

0개의 댓글