mongoDB - Time-Series Collection 와 Aggregation Pipeline
·
Storage/MongoDB
[ Time-Series Collection ] 1. 개요MongoDB 5.0부터 도입된 시계열 전용 컬렉션 타입입니다. “같은 시계열(센서·채널 등)에 속하는 여러 측정값을‘버킷(bucket)’이라는 큰 문서에 압축·열 지향 포맷으로 묶어서 보관해쓰기·저장·조회 효율을 극대화한 컬렉션” 입니다. 필수 필드timeField : 시간 값(ISODate)metaField : 동일 시계열을 구분하는 태그(ID·채널·센서 등, 선택)추가 옵션granularity : 데이터 입력 주기 힌트("seconds", "minutes", "hours")TTL·샤딩도 그대로 사용 가능 2. 간단한 구조 살펴보기예시 시나리오 : YouTube 라이브 채널에서 1초마다 “동시시청자(viewers)” 수치를 수집1) 컬렉션 생성..
Kafka Connect - 7장 Rest API 활용하여 관리
·
DataPipeline/Kafka
기본적으로 REST API는 8083 포트에서 사용할 수 있으며 보안되지 않습니다. ( 인증 기능 추가 가능 )REST API는 모든 요청 본문이 콘텐츠 유형 application/json 을 사용할 것으로 예상하며모든 응답도 해당 콘텐츠 유형을 사용하여 보냅니다. 목차 커넥터 생성 및 삭제하기커넥터 구성커넥터의 수명 주기 제어커넥터 오프셋 나열문제 디버깅 커넥터 생성 및 삭제클러스터의 버전을 확인$ curl localhost:8083{ "version": "3.5.0", "commit": "c97b88d5db4de28d", "kafka_cluster_id": "PSCn87RpRoqhfjAs9KYtuw"} 사용할 수 있는 커넥터 플러그인 확인기본적으로 여기에는 Kafka Connect 클러스터에 설..
Kafka Connect - 4장 효과적인 데이터 파이프라인 설계
·
DataPipeline/Kafka
데이터 변환데이터 파이프라인을 통해 데이터가 흐를 때 두가지 패턴을 사용한다.ETL: 저장 공간이 제한된 시스템ELT: 오랫동안 데이터가 원본을 유지하여 다른 목적으로 재사용 용이 카프카 커넥트는 이동중에 데이터를 변환할 수 있는 트랜스포메이션이 있으며 이는 ETL에 적합하다.아래는 민감한 개인정보를 숨김 처리하는 카프카커넥트 예시이다. 시스템간 데이터 맵핑데이터파이프라인을 구축할 때 서로 시스템간의 데이터를 맵핑을 꼼꼼히 따져봐야하며이를 위해 카프카커넥트 태스크와 카프카의 파티션 사이의 상호작용을 고려해야 한다. 단일 태스크와 단일 파티션은 순서를 보장한다. 중복을 방지하기 위해 각각의 데이터를 읽는 복수의 태스크 개별 소스 커넥터는 어느 파티션으로 보낼지 직접 선택하거나 이미 정의된 파티셔닝 전략을..
Elasticsearch 바이블 - 6장 클러스터 운영
·
DataPipeline/Elasticsearch
[ 클러스터 설정 API ]클러스터 설정 조회GET /_cluster/settings 클러스터 설정 업데이트- persistent : 클러스터를 재시작해도 유지되는 영구 설정- transient : 클러스터 재시작시 초기화되는 임시 설정- 설정 적용 우선 순위는 transient > persistent > config/elasticsearch.yml - persistent 설정은 모든 마스터 후보 노드의 path.data 경로 내 파일로 지정된다.PUT /_cluster/settings{ "persistent": { "설정_키": "설정_값" }, "transient": { "설정_키": "설정_값" }} [ _cat API를 통한 클러스터 관리와 모니터링 ]GET _cat/health클러..
Elasticsearch 바이블 - 4장 검색 및 집계 API
·
DataPipeline/Elasticsearch
[ 문서 API ]색인 API문서 단건을 색인한다.PUT /my_index/_doc/1{ "title": "Elasticsearch Guide", "author": "John Doe", "published_date": "2023-01-01"}# 라우팅지정PUT /my_index/_doc/2?routing=myid2 조회 API문서 단건을 조회한다. GET /my_index/_doc/1>>>{ "_index": "my_index", "_id": "1", "_version": 1, "_seq_no": 0, "_primary_term": 1, "found": true, "_source": { "title": "Elasticsearch Guide" }}# 필드 필터링 : _source_..
SideProject - 카프카 시스템 구성 (아자르 비즈니스 메트릭 참조)
·
사이드프로젝트
[ 프로젝트 목적 아키텍처 ]이 프로젝트는 카프카(Kafka) 기반의 분산 메시징 시스템을 구축하고 운영하고 있는,아자르(Azar) 비즈니스 메트릭을 생성하는 프로세스를 흉내내어본 것입니다. Git 참조 : https://github.com/ehdrn3020/kafka_system_with_azarAzar 참조 : https://hyperconnect.github.io/2022/10/14/grafana-with-ksqlDB.htmlAWS 환경에서 Kafka 클러스터 구성Zookeeper를 통한 분산 코디네이션Schema Registry를 활용한 데이터 스키마 관리Kafka Connect를 활용한 데이터 파이프라인 구성ElasticSearch(OpenSearch)를 통한 데이터 저장 및 검색아키텍처는 3대..
Elasticsearch 바이블 - 3장 인덱스 설계
·
DataPipeline/Elasticsearch
[ 인덱스 설정 ]GET [index_name]/_settings인덱스 설정은 인덱스명 뒤에 _settings를 넣어 GET 메서드로 호출한다. 예제PUT /my_index{ "settings": { "number_of_shards": 2, "number_of_replicas": 2 }}>>> { "acknowledged": true, "shards_acknowledged": true, "index": "my_index"}GET my_index>>>{ "my_index": { "aliases": {}, "mappings": {}, "settings": { "index": { "routing": { "alloc..
Python - bisect 예제
·
Programming/Python
[ bisect 모듈 ]bisect 모듈은 이진 탐색을 쉽게 쓸 수 있게 해주는 파이썬 표준 라이브러리"정렬된 리스트"에 값을 효율적으로 삽입하거나 위치를 찾을 때 유용 [ 사용 함수 ]함수의미반환값bisect_left(a, x)좌측 삽입 위치 탐색x를 a에 넣을 때 왼쪽 인덱스bisect_right(a, x)우측 삽입 위치 탐색x를 a에 넣을 때 오른쪽 인덱스insort_left(a, x)bisect_left 위치에 삽입리스트 a가 정렬된 상태 유지insort_right(a, x)bisect_right 위치에 삽입동일 [ 예제 ]정렬 리스트에 중복을 허용하며 요소 삽입import bisectscores = [15, 22, 22, 30]bisect.insort(scores, 22) # ins..
wave35
아그거뭐였지?