데이터 스트림
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
데이터 스트림은 튜플의 시퀀스와 양의 실수 시간 간격의 시퀀스로 정의되며, 다양한 데이터 집합을 포함한다. 데이터 스트림은 속성, 타임스탬프, 주체 ID, 원시 데이터, 처리된 데이터 등의 구성 요소를 갖는다. 사기 탐지, 인공 지능, 사용자 프로파일링, 비즈니스 인텔리전스, 타겟팅, CRM 강화 등 다양한 분야에서 활용되며, CDP, CRM, DMP 등의 시스템과 통합되어 외부 데이터로 사용자 프로필을 풍부하게 한다. 또한, CMS, DSP와 같은 시스템과 통합되기도 한다. 데이터 스트림은 사용자 에이전트, URL, 지리적 위치, IP 주소 등의 정보와 데이터 포인트, 세그먼트, 하이브리드 데이터, URL과 같은 다양한 데이터 형식을 포함한다. 개인 정보 보호를 위해 개인 식별 정보(PII)와 비 개인 식별 정보(non-PII)를 구분하며, C, C++, Java, .NET Framework, Node.js, JavaScript 등의 프로그래밍 언어에서도 표준 스트림을 지원한다. 함수형 언어에서는 지연 평가를 사용하여 무한 크기의 재귀적인 데이터 구조를 스트림으로 구현하며, 이러한 스트림은 객체 지향 언어에서는 스트림 클래스로 구현되기도 한다.
더 읽어볼만한 페이지
- 빅 데이터 - 예측 분석
예측 분석은 통계학, 기계 학습 등의 분석 기법을 활용하여 과거 및 현재 데이터를 토대로 미래의 사건이나 결과를 예측하는 방법론으로, 다양한 분야에서 의사 결정 지원 및 위험 관리 등에 활용되지만, 인간 행동의 복잡성으로 인한 예측 불가능성에 대한 비판도 존재한다. - 빅 데이터 - 데이터 분석
데이터 분석은 원시 데이터를 수집하여 의사 결정을 돕는 유용한 정보로 변환하는 과정으로, 데이터 수집, 처리, 정제, 탐색적 분석, 모델링, 데이터 제품 개발, 결과 소통 등의 단계를 거치며, 효과적인 분석을 위해 사실과 의견을 구별하고 편향을 극복하는 것이 중요하다. - 컴퓨터 용어 - 중앙 처리 장치
중앙 처리 장치(CPU)는 컴퓨터 시스템의 핵심 부품으로, 프로그램 명령어를 해석하고 실행하여 데이터를 처리하는 장치이다. - 컴퓨터 용어 - 운영체제 서비스 관리
데이터 스트림 | |
---|---|
데이터 스트림 개요 | |
유형 | 데이터 |
성격 | 연속적 |
구조 | 순서화됨 |
접근 방식 | 실시간 또는 준 실시간 |
크기 | 잠재적으로 무한함 |
데이터 스트림 특성 | |
정의 | 시간 순서대로 연속적으로 도착하는 데이터 요소의 흐름 |
가정 | 스트림의 크기가 너무 커서 저장하거나 오프라인으로 처리할 수 없음 |
처리 방식 | 스트림을 쿼리하는 동안 데이터를 즉석에서 처리해야 함 |
특징 | 빠른 속도, 시시각각 변화, 잠재적으로 무한한 길이 |
스트림 컴퓨팅 (데이터 스트림 처리) | |
정의 | 지속적으로 도착하는 데이터 스트림에 대해 쿼리를 실행하는 컴퓨팅 패러다임 |
목표 | 스트림의 모든 요소에 대해 한 번만 데이터를 스캔하여 쿼리 결과 업데이트 |
처리 방식 | 스트림을 쿼리하는 동안 즉석에서 처리 스트림의 모든 요소에 대해 한 번만 데이터를 스캔하여 쿼리 결과 업데이트 |
필요성 | 웹 로그 분석, 센서 네트워크, 금융 시장, 네트워크 모니터링 등과 같은 애플리케이션에서 필요 |
활용 분야 | |
예시 | 금융 제조업 센서 네트워크 인터넷 |
2. 정의
데이터 스트림은 튜플의 시퀀스와 양의 실수 시간 간격의 시퀀스로 구성된 순서쌍으로 공식 정의된다.
2. 1. 구성 요소
데이터 스트림은 선택된 데이터 형식에 따라 다양한 데이터 집합을 포함한다.- '''속성''' – 데이터 스트림의 각 속성은 특정 유형의 데이터를 나타낸다.[3] 예를 들어 세그먼트/데이터 포인트 ID, 타임스탬프, 지리 데이터 등이 있다.
- '''타임스탬프''' 속성은 이벤트가 언제 발생했는지 식별하는 데 도움이 된다.
- '''주체 ID'''는 쿠키에서 추출된 알고리즘으로 인코딩된 ID이다.
- '''원시 데이터'''는 알고리즘이나 사람에 의해 처리되지 않고 데이터 제공자로부터 직접 얻은 정보를 포함한다.
- '''처리된 데이터'''는 향후 작업을 위해 어떤 방식으로든 수정, 유효성 검사 또는 정리된 데이터이다.[4]
3. 활용 분야
데이터 스트림은 다음과 같은 다양한 분야에서 활용된다.
활용 분야 | 설명 |
---|---|
사기 탐지 및 점수 매기기 | 원시 데이터를 활용하여 사기를 방지하고, 메시지 수신자가 봇이 아닌지 확인한다.[5] |
인공 지능 | 머신 러닝 알고리즘 구축에 필요한 훈련 및 테스트 세트로 활용된다. |
사용자 프로파일링 및 개인화 | 사용자 프로필을 맞춤화하고, 성별, 위치별 등으로 세분화하는 데 사용된다.[6] |
비즈니스 인텔리전스 | 비즈니스 인텔리전스 시스템의 정보 소스로 활용되며, 사용자 프로필을 풍부하게 만드는 데 사용된다.[5] |
타겟팅 | 온라인 캠페인을 개선하고, 타겟 고객에게 도달하는 데 사용된다.[7] |
CRM 강화 | 고객 관계 관리 (CRM) 시스템과 통합되어 사용자 프로필의 격차를 해소한다.[7] |
3. 1. 사기 탐지 및 점수 매기기
원시 데이터는 사기 방지 알고리즘(사기 탐지를 위한 데이터 분석 기술)의 소스 데이터로 사용된다. 예를 들어, 타임스탬프, 쿠키 발생 또는 데이터 포인트 분석은 사기를 탐지하거나 메시지 수신자가 봇이 아닌지 확인하기 위해 점수 시스템 내에서 사용된다(소위 비인간 트래픽[5]).3. 2. 인공 지능
원시 데이터는 인공 지능 및 머신 러닝 알고리즘 구축 과정에서 훈련 세트 및 테스트 세트로 활용된다.[6]3. 3. 사용자 프로파일링 및 개인화
원시 데이터는 사용자 프로필을 맞춤화하고[6], 성별 또는 위치별 (데이터 포인트) 세분화를 위해 사용된다.3. 4. 비즈니스 인텔리전스
원시 데이터는 비즈니스 인텔리전스(BI) 시스템의 정보 소스로 활용되며, 구매 경로 또는 지리 데이터와 같은 사용자에 대한 자세한 정보로 사용자 프로필을 풍부하게 하는 데 사용된다.[5] 이 정보는 비즈니스 분석 및 예측 연구에 사용된다.3. 5. 타겟팅
데이터 과학자에 의해 처리된 데이터는 온라인 캠페인을 개선하고, 타겟 고객에게 도달하는 데 사용된다.[7]3. 6. CRM 강화
원시 데이터는 고객 관계 관리(CRM) 시스템과 통합된다. CRM 통합을 통해 인구 통계 데이터, 관심사 또는 구매 의향으로 사용자 프로필의 격차를 채울 수 있다.[7]4. 통합
데이터 스트림은 온라인 캠페인에서 각 사용자 세그먼트(예: 자동차 산업에 관심 있는 사람)를 선택하고 활용하는 데 사용된다. 이 세그먼트는 데이터 스트림에서 더 많은 사용자 특성으로 풍부해진 다음 수요 측 플랫폼(DSP)로 전송된다.[8]
4. 1. 시스템 통합
데이터 스트림은 고객 데이터 플랫폼(CDP), 고객 관계 관리(CRM), 데이터 관리 플랫폼(DMP) 등의 시스템과 통합되어 외부 데이터로 사용자 프로필을 풍부하게 한다. 외부 소스를 사용하여 기존 사용자에 대한 지식을 확장할 수 있다.[8]4. 2. 비즈니스 인텔리전스 시스템 통합
데이터 스트림은 비즈니스 인텔리전스 시스템을 풍부하게 하고, 분석 및 결론의 정확도를 높이는 데 사용된다.[8]4. 3. 콘텐츠 관리 시스템(CMS) 통합
콘텐츠 관리 시스템(CMS) 통합의 경우, 데이터 스트림은 사용자를 식별하고 사용자가 처음 방문하더라도 방문을 개인화하는 데 사용된다.[8] 데이터 분석을 통해 웹사이트의 실제 콘텐츠가 사용자에게 맞춰진다.4. 4. 프로그래밍 광고 생태계 통합
데이터 스트림은 수요 측 플랫폼(DSP)과 통합되어, 광고주와 같은 당사자들이 사용자의 ID를 교환하고 기존 프로필과 연결할 수 있도록 한다.[8]5. 데이터 소스
데이터 스트림에서는 사용자 에이전트를 통해 사용자가 어떤 장치를 사용했는지 확인할 수 있다. 사용된 장치에서는 이벤트가 발생한 방문한 웹사이트의 실제 URL, 지리적 위치, IP 등의 정보가 공유된다.
5. 1. 사용자 에이전트
사용자 에이전트를 통해 사용자가 어떤 장치를 사용했는지 확인할 수 있다.- '''모바일''' – 사용자가 모바일 브라우저를 사용하여 탐색하는 경우 좁은 화면 해상도와 모바일 앱 버전을 사용한다.
- '''데스크톱''' – 사용자가 데스크톱 브라우저 또는 앱 버전을 사용하는 경우이다.
사용된 장치에서 다음 정보가 공유된다.
- 이벤트가 발생한 방문한 웹사이트의 실제 URL
- 사용자 에이전트
- 지리적 위치
- 인터넷 프로토콜(IP)
5. 2. 공유 정보
다음은 사용된 장치에서 공유되는 정보이다.6. 데이터 형식
데이터 스트림은 다양한 데이터 형식으로 제공된다. 주요 데이터 형식은 다음과 같다.
- '''데이터 포인트'''
- '''세그먼트'''
- '''하이브리드 데이터'''[10]
- '''URL'''
6. 1. 데이터 포인트
데이터 포인트는 웹사이트에서 사용자가 수행한 특정 작업에 대한 정보를 수집하는 태그이다. 데이터 포인트는 두 가지 유형으로 존재하며, 해당 값은 적절한 오디언스를 생성하는 데 사용된다.[9]- 특정 이벤트가 발생했을 때 정보를 담고 있는 '이벤트' (예: 링크 클릭 또는 광고 표시)
- 숫자 또는 영숫자 값을 가진 '속성'
6. 2. 세그먼트
세그먼트는 AND, OR 또는 NOT 연산자를 사용하여 특정 데이터 포인트를 기반으로 구축된 논리적 명령문이다.[9]6. 3. 하이브리드 데이터
하이브리드 데이터는 데이터 포인트 및 세그먼트 데이터 형식 모두에서 가져온 원시 데이터이다.[10]6. 4. URL
방문한 특정 URL에 대한 정보의 집합이다.[9]7. 개인 정보 보호 (GDPR)
웹사이트에서 수집된 정보는 사용자 행동을 기반으로 하며, 개인 정보와 비 개인 정보를 모두 포함한다. 데이터 스트림에서 사용할 수 있는 사용자 데이터에는 개인 식별 정보 (PII)와 비 개인 식별 정보 (non-PII) 두 가지 유형이 있다.
7. 1. 개인 식별 정보 (PII)
개인을 명확하게 식별하거나 데이터 식별 방법을 결합하여 식별할 수 있는 정보이다. PII의 예로는 보험 ID, 이메일 주소, 전화번호, IP 주소, 위치 정보, 생체 인식 데이터가 있다.[11]7. 2. 비 개인 식별 정보 (Non-PII)
비 개인 식별 정보(non-PII)는 개인을 식별하거나 위치를 추적하는 데 사용할 수 없는 정보이다. 쿠키 또는 장치 ID는 비 개인 식별 정보의 예이다.8. 표준 스트림 (프로그래밍)
운영 체제(예: 유닉스)는 표준적인 입력 소스와 출력 대상에 대해 표준 스트림이라는 특별한 스트림을 제공한다.[1]
키보드로부터의 입력, 디스플레이로의 출력도 표준 스트림에 의해 추상화되어, 개별 프로그램에서는 장치 하드웨어를 의식할 필요가 없다. C 언어에서는 표준 입력 `stdin`, 표준 출력 `stdout`, 표준 에러 출력 `stderr`이 정의되어 있으며, C++(C++)에서는 `cin`, `cout`, `cerr`, `clog` 등이 정의되어 있다.[1]
8. 1. C 언어
C 언어에서는 유닉스에서 유래한 표준 스트림으로 표준 입력 `stdin`, 표준 출력 `stdout`, 표준 에러 출력 `stderr`이 정의되어 있다.[1] 이들은 모두 파일 스트림으로 추상화되어 있으며, 파일 포인터 `FILE*`의 하나로 취급할 수 있다.[1] 표준 C 라이브러리의 헤더 파일 `8. 2. C++
C++(C++)에서는 표준 C++ 라이브러리의 `#include
int main()
{
std::cout << "Hello, World!" << std::endl;
return 0;
}
8. 2. 1. 입출력 스트림
C++는 강력한 형식 지정 언어이지만, 표준 입출력 스트림은 다중 정의를 통해 전혀 형식을 의식하지 않고 입출력을 수행할 수 있다. 특정 연산자를 다중 정의한 사용자 정의 형식(클래스 또는 구조체)도 사용할 수 있어 매우 유연한 입출력이 가능하다. 또한 입출력 조작자(매니퓰레이터)를 도입하여 세밀한 제어가 가능해졌다.이러한 기능 덕분에, 형식 소거(type erasure)나 형식 승격(type promotion)을 동반하는 가변 인자를 사용한 `printf` 함수에서 발생하기 쉬웠던 형식 불일치나 제어자의 과부족으로 인한 버그 발생 가능성이 매우 낮아졌다. 하지만, 반면에 매니퓰레이터 사양 등 기억해야 할 것이 늘어났고, 기술량도 `printf`에 비해 훨씬 늘어났기 때문에 이를 기피하는 프로그래머도 많다.
8. 2. 2. 문자열 스트림
표준 헤더 중 하나인 `8. 3. JavaScript
JavaScript는 스트림 API[14]를 가진다(WHATWG에 의해 제정되고 있다).8. 4. Node.js
Node.js는 스트림을 다루는 모듈을 가지고 있다.[1]8. 5. Java
Java영어는 스트림 API를 가지고 있다.8. 6. .NET Framework
.NET Framework에서도 입출력을 스트림으로 일반화했으며, 저수준의 `Read`, `Write` 메서드만 지원한다. 대표적인 클래스는 다음과 같다.- `System.IO.Stream`: 일반적인 스트림의 인터페이스를 제공하는 추상 클래스.
- `System.IO.FileStream`: 파일 입출력 기능을 제공하는 스트림.
- `System.IO.MemoryStream`: 메모리 버퍼의 입출력 기능을 제공하는 스트림.
- `System.Net.Sockets.NetworkStream`: 네트워크의 입출력 기능을 제공하는 스트림.
위의 스트림을 읽고 쓰기 위한 별도의 클래스들이 존재하며, 일반적으로 이들을 사용하여 입출력 처리를 수행한다.
- `System.IO.BinaryWriter` / `System.IO.BinaryReader`: 스트림에 대해 바이너리 형식으로 읽고 쓰는 기능을 제공하는 클래스.
- `System.IO.TextWriter` / `System.IO.TextReader`: 스트림에 대해 텍스트 형식으로 읽고 쓰는 기능을 제공하는 클래스.
- `System.IO.BufferedStream`: 기존 스트림에 버퍼링 기능을 추가하기 위한 스트림.
9. 함수형 언어
함수형 프로그래밍 언어에서는 주로 무한한 크기(길이, 요소 수)의 재귀적인 데이터 구조를 가리킨다. 지연 평가를 사용하여 구현되므로 "지연 스트림"이라고도 불린다. 무한한 데이터를 다루기 위해서는 그중 일부를 잘라내는 함수가 필요하며, 스트림을 이루는 데이터도 재귀 함수에 의해 생성되므로 객체 지향의 함수형 언어에서는 이것들을 묶어 스트림 클래스로 구현하는 경우도 있다. 함수가 출력하는 스트림 자체는 연결 리스트로 구현되는 경우가 많다.
지연 평가는 필요할 때 필요한 만큼 함수를 평가하고 불필요해지면 함수의 평가를 정상적으로 중단할 수 있다. 이는 재귀 호출을 중단하는 조건(정지 조건)의 판정을 전혀 수행하지 않는 재귀 함수나 재귀적인 값의 정의를 가능하게 한다. 예를 들어 팩토리얼을 구하는 함수는 1부터 순서대로 재귀적으로 곱셈하여 그 결과를 반환하도록 정의할 수 있다. 상한 등을 설정할 필요는 없으며, 대신 "결과를 n개 구하여 리스트로 만든다" 함수나 "결과를 x개 버린다" 함수 등을 통해 호출한다. 조건 판정을 하지 않는다는 것은, 지연 평가를 하지 않는 언어에서는 무한 루프에 빠진다는 것을 의미한다. 그러나 그러한 언어에서도 무한한 요소 수를 가진 데이터를 다룰 수 있도록 하기 위해 스트림에 관해서만 지연 평가를 도입하고 있다.
무한히 재귀하는 함수나 값에서 일부를 추출하는 메커니즘은 교묘하게 되어 있다. "결과를 n회 구한다" 함수를 repeat, 재귀 함수를 rec로 하여 그 경과를 살펴보면 다음과 같다.
- repeat가 rec를 1번만 호출한다.
- rec는 재귀하기 직전 상태에서 일단 결과를 반환한다.
- repeat는 결과와 함께 rec를 1회분만 평가된 함수(섕크. 클로저의 일종)로 받아 리스트에 연결한다.
- rec를 호출한 횟수가 n이 아니면 rec를 섕크 상태에서 포스(강제 평가)한다.
- 2부터 4를 반복한다.
- rec의 결과를 반환한다.
섕크는 함수를 평가한 중간 과정으로 간주할 수 있다. rec를 팩토리얼 함수 fact로 하여 3회 평가하는 경우의 섕크 상태를 (개념적으로) 나타내면 다음과 같다.
fact 함수는
fact i = i * (fact i+1)
로 정의하면 된다.- repeat 3 (fact 1)
- repeat 3 (1 * fact 1+1)
- repeat 3 (1 * 2 * fact 2+1)
- repeat 3 (1 * 2 * 3 * fact 3+1)
- ---> 6
괄호 안 전체가 섕크라고 할 수 있다. 또한, 포스는 "괄호 안과 함수를 하나의 함수로 호출하는 것"이라고 할 수 있다.
지연 평가가 표준인 언어에서는 모든 재귀적인 정의가 스트림처럼 기능하기 때문에, 특별히 스트림이라고 부르지 않는다. 그러나 Haskell에서는 모나드가 도입되기 전에는 참조 투명한 입출력을 실현하기 위한 데이터 구조를 스트림이라고 불렀다.
참조
[1]
웹사이트
Federal Standard 1037C data stream
http://www.its.bldrd[...]
2007-04-04
[2]
웹사이트
Data Stream
https://www.techoped[...]
2019-04-24
[3]
웹사이트
Attribute
http://www.businessd[...]
2019-04-24
[4]
웹사이트
What constitutes data processing?
https://ec.europa.eu[...]
2019-04-24
[5]
웹사이트
Non-Human Traffic [NHT]
https://theonlineadv[...]
2019-04-24
[6]
웹사이트
BEHAVIORAL PROFILING AND PERSONALIZATION: CUSTOMER EXPERIENCE FIRST
https://www.selligen[...]
2019-04-24
[7]
웹사이트
What is Targeting – Meaning
https://sendpulse.co[...]
2019-04-24
[8]
웹사이트
What is Data Stream and how to use it
http://www.onaudienc[...]
2019-04-24
[9]
웹사이트
The 6 types of user segmentation and what they mean for your product
https://uxdesign.cc/[...]
2018-06-12
[10]
웹사이트
What is hybrid data management
https://www.ibm.com/[...]
2019-04-24
[11]
웹사이트
What is personally identifiable information (PII)? How to protect it under GDPR
https://www.csoonlin[...]
2019-04-24
[12]
웹사이트
ストリームとは - IT用語辞典 e-Words
http://e-words.jp/w/[...]
[13]
문서
ただしxargsコマンドで-Pオプションを指定し[[並列処理]]させた場合の実行コマンドの標準出力は[[バッファリング]]が働かず混合が生じる。
[14]
URL
https://triple-underscore.github.io/Streams-ja.html
[15]
웹인용
Data Stream
https://www.techoped[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com