Sign In

[데이터 수집] 데이터 종류

Y
Yerim
  1. ML
  2. DataAnalysis

데이터의 종류

앞의 ‘데이터의 정의에서 데이터는 데이터 베이스에 저장된다고 언급했다.
데이터의 종류는 데이터가 데이터베이스에 ‘어떤 형식으로 저장’ 되는 지에 따라 ‘정형데이터’, ‘비정형 데이터’, ‘반정형 데이터’로 나뉜다.
정형데이터
형태가 있음
연산이 가능
예) 엑셀, csv
반정형데이터
형태가 있음
연산이 불가능
예) HTML, XML
비정형데이터
형태가 없음
연산이 불가능
예) 사진, 영상, 음성

정형 데이터 (Structured Data)

정형데이터란?

데이터베이스 종류 중 관계형 데이터베이스 (Relational Database; RDB), 스프레트 시트(Spread Sheet), 확장자 csv인 파일에 저장할 수 있는 테이블 형태의 데이터를 의미한다.
수학적 용어 “관계”는 테이블로 유지되는 형성된 데이터 세트를 지정한다.
즉, 행과 열로 이루어진 테이블 형태의 데이터를 의미한다.
정형 데이터에서 테이블의 모든 행은 동일한 열을 가진다.
정형 데이터는
데이터 테이블은 고객 번호와 같이 행마다 고유한 값을 가진 **식별키 (Prime Key, Primary Key)**가 존재한다.
이 식별키를 이용하여 데이터 테이블 사이의 관계를 알 수 있다.

스키마 (Schema)

쇼핑몰의 정형 데이터를 예시로 들어보자.
위의 사진과 같이 고객 정보, 상품 정보, 주문 정보를 모두 한 테이블에 넣으려고 하면 어떻게 될까?
열(column)이 굉장히 많은 테이블이 될 것이다.
그리고 이러한 테이블은 고객, 상품, 주문이 증가할 수록 관리하기 힘들어질 것이다.
따라서 여러 개의 테이블로 나눠 저장한다면, 관리가 더 쉬워질 것이다.
또한 테이블에 이름을 붙이면 정보를 찾는 일도 쉬울 것이다.
식별키는 데이터를 여러 테이블로 나눠서 관리할 때 테이블들의 상호 연결하는 역할을 한다.
관계형 데이터베이스에 데이터를 저장하려면 필드(열, Field)에 맞게 데이터 값이 잘 입력되어야 한다. (주문번호에 고객ID가 들어가면 안 된다.)
데이터 테이블에 식별키는 무엇이고 필드마다 어떤 값이 들어가야 하는 지에 관한 조건이 정리된 데이터가 필요 → 스키마(Schema)

정형데이터 정의

이제 위에서 배운 내용을 통해 정형 데이터를 여러 표현을 사용하여 정의해볼 수 있다.
행과 열로 이루어진 테이블로 이루어진 데이터
값의 의미를 파악하기 쉽고, 규칙적인 값이 들어가 있는 데이터
미리 정해진 스키마 (Prefined Schema)에 따라 관계형데이터베이스에 저장될 수 있는 데이터

SQL

그렇다면 관계형 데이터베이스에 저장된 관계 데이터 중에 필요한 데이터를 어떻게 찾을 수 있을까?
관계형 데이터베이스에서 필요한 데이터를 불러오거나 활용할 때 사용하는 언어가 **SQL (Structured Query Language)**이다.
SQL이라는 언어로 찾고 싶은 데이터의 조건을 검색하고 데이터를 조회해야 한다.
이때 던지는 질문을 쿼리(Query)라 한다.
쿼리를 통해 얻은 데이터를 계산하거나, 패턴을 알아보는 등 분석을 진행할 수 있다.
관계형 데이터베이스를 다루는 시스템: MySQL, Oracle, PostgreSQL, Microsoft SQL Server 등

비정형 데이터 Unstructured Data

비정형 데이터 예시

개인적으로 비정형 데이터는 말보다 그림으로 보았을 때 더 쉽게 이해할 수 있었다.
위의 사진은 비정형 데이터의 예시이다.
사람이 이 사진을 보았을 때는 자료가 자동차에 대해 이야기한다는 것을 쉽게 알 수 있다.
하지만 위의 사진에는 자동차 사진과 텍스트들이 규칙 없이 작성되었다.
따라서 컴퓨터의 입장에서는 규칙이 없는 위의 데이터를 처리하기 어렵다.
결국 비정형 데이터란 정해진 규칙(rule)이 없어서 값의 의미를 쉽게 파악하기 힘든 데이터를 의미한다.

비정형 데이터란?

비정형 데이터는 사전 정의된 방식으로 구성되지 않았거나 사전 정의된 데이터 모델이 없는 정보이다.
즉, 스키마에 따라 테이블 형식으로 데이터가 저장되는 것이 아니라, 데이터 형태와 구조가 복잡한 다이나믹한 스키마 (Dynamic Schema)에 따라 데이터가 저장된다.
비정형 데이터는 데이터마다 다른 스키마를 가질 수 있다.
ex) 영상, 음성, 이미지, 바이너리(byte) 데이터 파일, 워드(Word), PDF와 같은 문서, 소셜 미디어 활동 데이터 등

NoSQL

비정형 데이터는 비정형 데이터베이스 (Non-Relational Database; NoSQL)에 저장된다.
NoSQL에는 전혀 다른 특성을 가진 데이터를 저장할 수 있다.
비관계형 데이터베이스 시스템: MongoDB, AWSDynamoDB, Cassandra, Redis 등
관계형 데이터 베이스 → 하나의 데이터베이스 시스템을 알면 다른 것도 금방 익힘
비관계형 데이터 베이스 → 데이터에 따라 저장소가 다르기 때문에 하나의 시스템을 안다고 다른 것을 사용할 수 있는 것은 아님
비정형 데이터를 저장하는 다양한 데이터베이스의 형식 중에는 ‘키-밸류 저장’, ‘문서 저장’, ‘그래프 저장’, ‘와이드-칼럼 저장’이 있다.
키-밸류 저장
하나의 키와 하나의 값이 한 쌍으로 묶인 가장 간단한 저장 방법
중복된 키X
숫자, 문자열, 이미지, 음성 등 다양한 값 가능
주요 제품: AWS DynamoDB, Redis, Hbase 등
문서 저장
키-밸류 저장과 비슷한 형식
JSON(제이슨, JavaScript Object Notation, {키:밸류} 형태의 데이터), XML(eXtensible Markup Language, HTML을 개선해 만든 언어), BSON(Binary Jason)과 같은 문서 형태
주요 제품: MongoDB, MondgoDB Atlas, AWS DynamoDB, AWS DocumentDB, Google Cloud Fierstore, Couchbase SErver, Azure Cosmos DB, IBM Cloudant 등
그래프 저장
많은 객체에서 연결 관계를 표현할 때 유용
관계의 수나 종류 제약 X
관계를 표현할 때 <시작노드>→<도착노드>와 같이 방향이 필요
주요 제품: Neo4j, Azure Cosmos DB, AWS Neptune 등
와이드-칼럼 저장
관계형 데이터베이스와 비슷해 보이지만,
와이드-칼럼 저장은 하나의 행에 여러 개의 칼럼으로 되어 있다.
각 행마다 다른 열을 가질 수 있다. → 고정된 스키마가 없다.
주요제품: Cassandra, Hbase 등

반정형 데이터 Semi-structured Data

반정형 데이터란?

구조화된 데이터 (관계형 데이터베이스)로 구성되어있지 않지만 여전히 어느 정도 구조를 가지고 있는 정보
반정형 데이터의 예: HTML(Hypertext Matkup Language; 웹 페이지를 만드는 언어의 한 종류), 오픈 API(Open Application Programming Interface)에 사용되는 XML, JSON, 로그파일 등
// XML 파일
<root>
    <element>
        <사용자>ABC_123</사용자>
        <이름>홍길동<이름>
    </element>
    <element>
        <사용자>ABD_234</사용자>
        <이름>김철수<이름>
    </element>
</root>
// JSON 파일
[
    {
    "사용자ID": "ABC_123",
    "이름": "홍길동",
    },
    {
    "사용자ID": "ABD_234",
    "이름": "김철",
    },
]
반정형 데이터를 살펴보면 어떤 내용이 포함되었는지는 확인할 수 있지만, 테이블의 형태로 구조화되어 있지 않기 때문에 연산에는 적합하지 않다.
저장방법: 주로 JSON형식으로 저장, QWS DynamoDB와 같은 클라우드 서비스를 이용하기도 한다.

스크래핑 (Scrapping)

스크래핑은 웹사이트나 문서 파일을 데이터로 추출하는 작업이다.
스크래핑: 비정형데이터(이미지) → 반정형데이터(HTML)
스크래핑 후 데이터 분석 시: 반정형데이터(HTML) → 정형데이터(CSV)
Yerim-DevNote
Subscribe to 'Yerim-DevNote'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'Yerim-DevNote'!
Subscribe
👍