2023/12 4

TimescaleDB는 무엇인가?

이 글에서는 PostgreSQL 기반의 오픈 소스 시계열 데이터베이스인 TimescaleDB와 그 핵심 기능인 하이퍼테이블에 대해 알아보겠습니다. TimescaleDB TimescaleDB는 관계형 데이터베이스의 강력한 기능과 시계열 데이터를 효율적으로 처리하는 능력을 결합한 데이터베이스입니다. PostgreSQL의 확장으로, 기존 SQL 지식을 활용하여 시계열 데이터를 쉽게 처리할 수 있습니다. 높은 쓰기 성능, 효율적인 데이터 압축, 강력한 쿼리 기능이 특징입니다. 하이퍼테이블 하이퍼테이블은 TimescaleDB의 핵심 개념으로, 일반적인 PostgreSQL 테이블처럼 보이지만 내부적으로 여러 개의 데이터 파티션(청크라고 함)으로 나뉩니다. 이 구조는 시계열 데이터의 대량 삽입과 복잡한 쿼리를 효율적..

Database. 2023.12.29

TimescaleDB vs InfluxDB 비교하기

시계열 데이터베이스는 시간에 따라 변하는 데이터를 저장하기 위해 설계되었습니다. 이것은 시간이 지남에 따라 수집된 모든 종류의 데이터일 수 있습니다. 예를 들어, 어떤 시스템에서 수집한 메트릭들이 이에 해당합니다. 우리는 다양한 종류의 시계열 데이터베이스를 가지고 있는데, 어떤 것을 사용해야 할까요? 이 글에서는 TimescaleDB와 InfluxDB, 두 주요 옵션 사이의 주요 차이점을 살펴볼 것입니다. InfluxDB InfluxDB는 InfluxData에 의해 만들어졌습니다. 이것은 Go 언어로 작성된 맞춤형, 오픈 소스, NoSQL 시계열 데이터베이스입니다. 이 데이터 저장소는 InfluxQL이라고 하는 SQL과 유사한 언어를 제공하여 개발자들이 자신들의 애플리케이션에 쉽게 통합할 수 있습니다. ..

Database. 2023.12.29

Kafka Consumer DLT(Dead Letter Topic) 전략

분산 시스템과 메시지 큐를 다루는 과정에서 메시지 처리 실패는 흔한 일입니다. 이러한 실패를 효과적으로 관리하기 위해 Dead Letter Topic(DLT)과 재시도 전략이 필수적입니다. 해당 포스팅에서는 DLT의 개념을 설명하고, Kafka를 사용하는 구체적인 예시를 통해 재시도 전략을 설계 및 구현하는 방법을 알아보겠습니다. Dead Letter Topic(DLT)이란? DLT는 메시지 처리에 실패했을 때 해당 메시지를 저장하는 Kafka 토픽입니다. 재시도 과정에서 여전히 실패하는 메시지를 위한 '마지막 피난처'로 사용됩니다. DLT의 주요 목적은 다음과 같습니다. 처리 실패 메시지의 안전한 저장 실패 원인 분석 및 디버깅 용이성 향상 재시도 전략의 필요성 메시지 처리 중 잠깐의 네트워크 지연이나..

Kafka 2023.12.11

하루 n억 건 모니터링 데이터를 적재하는 Telemetry 서비스 만들기

문제 인식 회사에서 운영하고 있는 Telemetry 서비스는 1분 마다 각 장비의 모니터링 메시지를 받아서 파싱 및 저장하는 역할을 수행하고 있습니다. 해당 서비스는 원래 각 메시지를 개별적으로 처리하고, 이를 데이터베이스에 건별로 삽입하는 방식을 사용했습니다. 이 접근법은 단순하고 직관적이지만, 데이터 양이 급격하게 증가하면서 서비스 구조 변경이 필요했습니다. 그래서 대용량 데이터를 처리하기 위해 다음과 같이 3가지 개선 전략을 적용했습니다. 개선 전략 1: Kafka Batch Listener 도입 처리 효율성을 높이기 위해 Kafka Batch Listener를 도입했습니다. 전통적인 Kafka Listener가 메시지를 개별적으로 처리하는 것과 달리, Batch Listener는 여러 메시지를 한..