정형, 반정형, 비정형 데이터

유방현·2024년 10월 28일

1. 정형 데이터(Structured Data)

1.1 정의

  • 미리 정의된 구조나 스키마를 가진 데이터
  • 관계형 데이터베이스(RDBMS)에서 주로 사용
  • 행과 열로 구성된 테이블 형태로 저장

1.2 특징

  • 고정된 필드와 레코드 구조
  • 명확한 데이터 타입 정의
  • 쉬운 검색과 분석
  • 높은 데이터 일관성

1.3 예시

-- 고객 테이블 예시
CREATE TABLE Customers (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    age INT,
    join_date DATE
);

1.4 활용 분야

  • 기업 업무 시스템(ERP)
  • 고객 관리 시스템(CRM)
  • 재무/회계 시스템
  • 인사 관리 시스템

2. 반정형 데이터(Semi-structured Data)

2.1 정의

  • 느슨한 구조를 가진 데이터
  • 스키마가 데이터에 포함됨
  • 자체 설명적(self-describing) 구조

2.2 특징

  • 유연한 구조
  • 태그나 마커로 데이터 구분
  • 부분적 구조화
  • 계층적 구조 가능

2.3 예시

XML 예시

<?xml version="1.0" encoding="UTF-8"?>
<customers>
    <customer>
        <id>1</id>
        <name>John Doe</name>
        <email>john@example.com</email>
    </customer>
    <customer>
        <id>2</id>
        <name>Jane Smith</name>
        <phone>123-456-7890</phone>
    </customer>
</customers>

JSON 예시

{
    "customers": [
        {
            "id": 1,
            "name": "John Doe",
            "email": "john@example.com"
        },
        {
            "id": 2,
            "name": "Jane Smith",
            "phone": "123-456-7890"
        }
    ]
}

2.4 활용 분야

  • 웹 서비스(API)
  • 설정 파일
  • 데이터 교환
  • NoSQL 데이터베이스

3. 비정형 데이터(Unstructured Data)

3.1 정의

  • 미리 정의된 구조가 없는 데이터
  • 자유로운 형태의 데이터
  • 정해진 형식이나 규칙이 없음

3.2 특징

  • 가변적인 구조
  • 복잡한 처리 필요
  • 대용량 데이터 처리
  • 텍스트 마이닝/자연어 처리 필요

3.3 예시

  • 텍스트 문서
오늘은 맑은 날씨입니다.
기온은 20도이며, 습도는 적당합니다.
오후에는 비가 올 수 있습니다.
  • 이미지/비디오 메타데이터
{
    "filename": "vacation.jpg",
    "size": "2.5MB",
    "resolution": "1920x1080",
    "date_taken": "2024-01-15",
    "location": "Paris, France"
}

3.4 활용 분야

  • 소셜 미디어 데이터
  • 이메일 내용
  • 문서/보고서
  • 멀티미디어(이미지, 비디오, 오디오)

4. 데이터 유형별 처리 방법

4.1 정형 데이터 처리

// JDBC를 사용한 정형 데이터 처리 예시
public class StructuredDataExample {
    public void processData() {
        String sql = "SELECT * FROM customers WHERE age > ?";
        try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
            pstmt.setInt(1, 30);
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                // 데이터 처리
            }
        }
    }
}

4.2 반정형 데이터 처리

// JSON 처리 예시
public class SemiStructuredDataExample {
    public void processJson() {
        JSONObject json = new JSONObject();
        json.put("name", "John");
        json.put("age", 30);
        
        // 데이터 읽기
        String name = json.getString("name");
        int age = json.getInt("age");
    }
}

4.3 비정형 데이터 처리

// 텍스트 파일 처리 예시
public class UnstructuredDataExample {
    public void processText() throws IOException {
        try (BufferedReader reader = new BufferedReader(
                new FileReader("document.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                // 텍스트 분석/처리
            }
        }
    }
}

5. 데이터 유형별 저장소

5.1 정형 데이터

  • 관계형 데이터베이스(MySQL, Oracle, PostgreSQL)
  • 데이터 웨어하우스

5.2 반정형 데이터

  • NoSQL 데이터베이스(MongoDB, CouchDB)
  • XML 데이터베이스

5.3 비정형 데이터

  • 파일 시스템
  • 객체 저장소
  • 빅데이터 플랫폼(Hadoop)

이러한 데이터 유형들의 주요 차이점과 활용 시 고려사항은 다음과 같습니다:

  1. 처리 복잡도:

    • 정형 데이터: 낮음
    • 반정형 데이터: 중간
    • 비정형 데이터: 높음
  2. 검색 용이성:

    • 정형 데이터: 매우 쉬움
    • 반정형 데이터: 비교적 쉬움
    • 비정형 데이터: 어려움
  3. 확장성:

    • 정형 데이터: 제한적
    • 반정형 데이터: 유연함
    • 비정형 데이터: 매우 유연함
  4. 데이터 품질 관리:

    • 정형 데이터: 쉬움
    • 반정형 데이터: 중간
    • 비정형 데이터: 어려움

이러한 특성을 고려하여 적절한 데이터 유형과 저장소를 선택하는 것이 중요합니다.

0개의 댓글