Arc – DuckDB 분석 기능을 갖춘 고처리량 시계열 데이터 웨어하우스
요약
Arc는 원격 측정 데이터를 위한 오픈 소스 SQL 네이티브 시계열 데이터베이스입니다. 초당 34M개 이상의 레코드를 수집하며, 표준 Parquet 형식으로 데이터를 저장하고 과거/최신 데이터를 함께 쿼리할 수 있습니다. 사용 편의성을 위해 웹 콘솔(Launchpad)과 CLI 도구(arcli)를 제공합니다.
핵심 포인트
- 원격 측정 데이터에 특화된 SQL 네이티브 시계열 DB입니다.
- 초당 34M개 이상의 레코드를 처리할 수 있습니다.
- Parquet 형식으로 데이터를 저장하여 효율적입니다.
- 웹 콘솔(Launchpad)과 CLI 도구(arcli)를 제공합니다.
Arc
필요한 원격 측정(telemetry) 데이터를 위한 오픈 소스, SQL 네이티브 시계열 데이터베이스입니다. Arc는 초당 34M개 이상의 레코드를 수집하고, 사용자가 직접 관리하는 인프라에 표준 Parquet 형식으로 데이터를 저장하며, 최근 및 과거 데이터를 함께 쿼리할 수 있도록 합니다. InfluxDB Line Protocol 및 Telegraf와 호환됩니다. 단일 바이너리입니다. AGPL-3.0 라이선스입니다.
UI를 선호하시나요? Arc Launchpad는 사용자가 실행하는 Arc 인스턴스를 위한 자체 호스팅 웹 콘솔입니다. SQL 콘솔, 스키마 탐색기, 로그, 토큰, 보존 기간(retention), 알림, 연속 쿼리(continuous queries), MQTT 수집에 대한 모니터링 및 관리 기능을 제공합니다. Docker Compose를 사용하여 Arc와 함께 배포할 수 있습니다. 문서.
터미널을 선호하시나요? arcli는 Arc용 명령줄 도구입니다. 이름 지정 연결, 테이블이 있는 SQL 쿼리, JSON, CSV 또는 Arrow 출력, 라인 프로토콜 및 MessagePack 쓰기, 대량 가져오기(bulk imports), 그리고 토큰, 보존 기간, 연속 쿼리, 백업 및 압축(compaction)을 위한 관리 기능을 제공합니다.
brew install basekick-labs/tap/arcli또는 deb, rpm, Arch 및 Docker를 사용하세요. 문서.
원격 측정 데이터는 수집하기는 쉽지만 보관하기는 비쌉니다
기계, 서비스, 차량 및 장치들은 데이터를 지속적으로 생성합니다. 운영상의 문제는 최신 판독값을 수집하는 것뿐만 아니라, 디버깅, 분석, 규정 준수 및 아직 아무도 질문하지 않은 다음 질문을 위해 전체 해상도의 이력을 유지하는 것입니다.
시계열 데이터베이스를 평가하는 팀들은 보통 동일한 상충 관계에 직면합니다:
- 리텐션 클리프(Retention cliffs): 저장 비용이 너무 빠르게 증가하여 오래된 데이터가 다운샘플링되거나, 내보내지거나, 삭제됩니다.
- 핫/콜드 경로 분리(Split hot and cold paths): 최근 데이터는 한 시스템에서 쿼리가 가능하지만, 과거 데이터는 웨어하우스나 오브젝트 스토리지에 보관됩니다.
- 운영 오버헤드(Operational overhead): 간단한 워크로드가 PostgreSQL 확장 스택이나 다중 서비스 클러스터로 변모합니다.
- 마이그레이션 마찰(Migration friction): 기존 에이전트, 대시보드, Line Protocol 라이터 때문에 데이터베이스를 변경하는 것이 위험해집니다.
- 벤더 종속성(Vendor lock-in): 독점적인 스토리지 방식은 데이터를 다른 곳에서 사용하거나 나중에 떠나는 것을 어렵게 만듭니다.
Arc는 데이터를 보존하고, 전체 이력을 쿼리하며, 작은 배포로 시작하려는 팀을 위해 구축되었습니다. 고처리량 수집(ingestion), 자동 Parquet 스토리지 및 압축(compaction), 분석용 SQL, 리텐션 정책, 그리고 연속 쿼리를 하나의 바이너리에 결합했습니다.
항공우주 원격 측정(aerospace telemetry)에 맞춰졌지만, 기계가 데이터를 생산하는 것을 멈추지 않는 곳이라면 어디든 유용합니다.
Arc란 무엇이며 (무엇이 아닌지)
Arc는 완전한 시계열 분석 데이터베이스입니다. 수집 파이프라인(ingestion pipeline), Parquet 스토리지 엔진, 압축 시스템, SQL 쿼리 계층, 리텐션 정책 관리자, 연속 쿼리 스케줄러, 그리고 원격 측정 통합 기능까지 모두 하나의 바이너리에 담겨 있습니다. 이는 쿼리 엔진으로 DuckDB를 사용하며, Arc는 내구성 있는 수집 및 분석 서비스를 실행하는 데 필요한 요소들(자동 Parquet 플러싱을 통한 고처리량 쓰기, 백그라운드 압축, 예약 컴퓨팅, 데이터 라이프사이클 관리, 인증, 백업 및 복원, 엔터프라이즈 클러스터링)을 추가합니다.
Arc는 래퍼(wrapper)가 아닙니다. 사용자가 직접 수집, 압축 또는 리텐션 정책을 가져오는 것이 아닙니다. Arc가 전체 스택을 제공합니다.
팀들이 Arc를 평가하는 이유
- 보존 기간과 비용 사이에서 선택할 필요 없이 전체 해상도(full-resolution) 기록을 유지합니다.
- 윈도우 함수, CTE(Common Table Expressions), 조인(joins), 분석 집계(analytical aggregations)를 사용하여 표준 SQL을 사용합니다.
- 파일 소유권 확보: Arc는 데이터를 로컬 디스크, S3, Azure 또는 모든 S3 호환 스토리지(SeaweedFS, R2, MinIO 등)의 오픈 Apache Parquet 형식으로 저장합니다.
- 작게 시작: 엔터프라이즈 클러스터링을 추가하기 전에 노트북, 엣지 박스 또는 서버에서 단일 바이너리를 실행해 보세요.
- 점진적 마이그레이션: InfluxDB Line Protocol 및 Telegraf와 호환되는 수집(ingestion) 기능을 사용하여 이중 쓰기(dual-write)하고 검증한 후 전환합니다.
Arc가 적합하지 않을 수 있는 경우
- 워크로드가 주로 트랜잭션 관계형 데이터이며 이미 PostgreSQL에 편안하게 맞는 경우, TimescaleDB를 평가하는 것부터 시작하세요.
- Prometheus의 성숙한 메트릭 전용 대체재가 필요하고 PromQL에 의존하는 경우, VictoriaMetrics를 평가하세요.
- 조직에서 AGPL-3.0 소프트웨어 승인이 어려운 경우, Arc Enterprise의 상업적 라이선스를 사용하거나 Apache 라이선스가 적용된 대안을 선택하세요.
- 가장 크고 확립된 커뮤니티와 가장 낮은 도입 위험이 필요한 경우, Arc는 TimescaleDB, VictoriaMetrics, QuestDB보다 더 새롭습니다.
-- 텔레메트리: 전체 기간에 걸친 시간별 센서 요약
SELECT
device_id,
...
표준 SQL. 윈도우 함수, CTE, 조인, 집계. 독점 쿼리 언어는 없습니다.
이미 가지고 있는 워크로드를 시작점으로 삼으세요
Arc는 InfluxDB Line Protocol을 직접 수용하므로, 기존 Telegraf 입력은 컬렉션 레이어를 변경하지 않고도 Arc에 데이터를 쓸 수 있습니다. 위험도가 낮은 마이그레이션은 보통 다음과 같이 진행됩니다:
- 소량의 데이터만 Arc로 보내거나 두 시스템 모두에 이중 쓰기(dual-write)를 합니다.
- 겹치는 시간 범위에 걸쳐 데이터와 쿼리 결과를 비교합니다.
- 대시보드나 워크로드 하나씩 이동시킵니다.
- 전체 보존 주기가 지난 후에만 기존 데이터베이스를 폐기합니다.
InfluxDB 마이그레이션 가이드(https://basekick.net/migrate/influxdb)를 참고하거나 Arc와 TimescaleDB, InfluxDB, ClickHouse, Elasticsearch를 비교해 보세요.
실시간 데모 (Live Demo)
Arc가 작동하는 모습을 확인하세요: https://basekick.net/demos
성능 (Performance)
Apple MacBook Pro M3 Max(14코어, 36GB RAM, 1TB NVMe)에서 벤치마킹되었습니다.
테스트 구성: 동시 작업자 12개, 배치당 1000개 레코드, 컬럼형 데이터.
수집 (Ingestion) (2026년 8월)
| 프로토콜 | 처리량 (Throughput) | p50 지연 시간 (p50 Latency) | p99 지연 시간 (p99 Latency) |
|---|---|---|---|
| MessagePack Columnar | 34.0M rec/s | 0.29ms | 1.40ms |
| ... | |||
| 모든 행은 60초 동안 지속적으로 실행하여 측정되었습니다. MessagePack Columnar 항목의 경우, 60초 동안 2,043,451,000개의 레코드가 수집되었으며, 이는 메모리 버퍼로 스트리밍된 행이 아닙니다. 모든 레코드는 HTTP를 통해 수신되어 디코드되고, 시간 순으로 정렬되며, 노트북에서 중앙값 지연 시간 0.29ms로 쿼리가 가능한 Parquet 파일로 영구 저장되었습니다. |
이러한 수치는 26.09.1 버전에서 제공됩니다: 이제 수집 과정에서 더 이상 Parquet을 딕셔너리 인코딩하지 않으며(압축 시 파일을 다시 인코딩함), msgpack columnar 경로는 페이로드를 직접 타입별 컬럼 배열로 디코드하여 값당 할당을 제거했습니다. 자세한 내용은 26.09.1 릴리스 노트를 참고하세요.
압축 (Compaction)
자동 백그라운드 압축(compaction)은 작은 Parquet 파일을 최적화된 더 큰 파일로 병합합니다:
| 지표 (Metric) | 이전 (Before) | 이후 (After) | 감소율 (Reduction) |
|---|---|---|---|
| 파일 수 (Files) | 43 | 1 | 97.7% |
| 크기 (Size) | 372 MB | 36 MB | 90.4% |
장점:
- 더 나은 압축 및 인코딩을 통한 10배의 저장 공간 감소
- 더 빠른 쿼리: 파일 43개를 스캔하는 대신 1개 파일을 스캔
- 낮은 클라우드 비용: 저장 공간 감소, API 호출 감소
쿼리 (Query) (2026년 5월)
Arc는 동일한 쿼리 엔진에서 세 가지 와이어 포맷을 지원합니다. 분석 클라이언트(Grafana, pyarrow, polars) 중 Arrow 의존성을 사용할 수 있는 경우 Arrow IPC가 처리량 측면의 리더입니다. 이는 엔진 내부 컬럼 버퍼로부터 제로 카피 방식으로 데이터를 가져올 수 있게 합니다. JSON보다 더 작은 바이트 크기와 빠른 디코딩을 원하지만 Arrow를 지원하지 않는 클라이언트를 위한 선택은 MessagePack(컬럼 기반, 26.09.1 버전부터 안정화)입니다. MessagePack은 JSON과 동일한 엔벨로프 형태를 가지며 타임스탬프와 바이너리 컬럼에 대한 네이티브 이진 타입을 지원합니다. JSON은 사용 편의성 호환성을 위해 기본값으로 유지됩니다.
벤치마크: 393.7M 행의 cpu 측정, 쿼리당 5회 반복, M3 Max. 지연 시간(Latency)은 밀리초 단위의 p50 값입니다. 다섯 개의 SELECT-LIMIT 행은 동일한 세션에서 연속적으로 측정되었으므로 세 컬럼 모두 공정한 비교가 가능합니다. DuckDB에 의해 제한되는 행들(Time Bucket, Date Trunc, GROUP BY)은 쿼리 실행 시간에 지배되며 와이어 포맷 전반에 걸쳐 수렴하는 경향을 보입니다.
| Query | JSON (ms) | MessagePack (ms) | Arrow IPC (ms) | msgpack vs JSON | Arrow vs JSON |
|---|---|---|---|---|---|
| COUNT(*) — 393.7M rows | 1.03 | 1.03 | 0.86 | 1.00x | 1.20x |
| ... | |||||
| LIMIT 1M에서 최고의 처리량 (1M 행 페이로드, 단일 연결): |
- Arrow IPC: 9.49M rows/sec (105.4ms)
- MessagePack: 7.49M rows/sec (133.6ms)
- JSON: 2.99M rows/sec (334.2ms)
- COUNT(*): ~382B 행/초 상당 (1.03ms에 393.7M 행 — 파케이(parquet) 푸터 읽기, 행 스캔 아님)
테이블에 대한 참고 사항: 와이어 형식(wire-format) 속도 향상은 인코딩이 요청당 총 시간(wall time)을 지배하는 응답 중심 쿼리(≥100k 행)에서 나타납니다. 집계 작업(Time Bucket, Date Trunc, GROUP BY)의 경우 응답은 매우 작습니다(몇 개의 행). 이 때 DuckDB 실행 시간이 전체 시간의 99% 이상을 차지하며, 세 가지 형식 모두 수렴합니다. Arrow IPC 방식의 승리는 컬럼 버퍼에 대한 memcpy에서 비롯됩니다. MessagePack 엔드포인트는 각 셀을 타입이 지정된 컬럼형 인코더를 통해 순회(행 단위가 아닌 컬럼별로 한 번의 타입 스위치)하며, Arrow IPC의 처리량의 약 78% 수준에 도달하면서도 Arrow 의존성 없이 모든 msgpack 클라이언트에서 디코드할 수 있습니다.
MessagePack 엔드포인트는 26.09.1 버전부터 **안정적(stable)**입니다. 그 응답 형태와 타입 어휘는 골든 테스트(golden test)에 의해 고정된 공개 계약이므로, 클라이언트는 여기에 바인딩할 수 있습니다. 이는 Arrow를 직접 사용하지 않는 클라이언트에게 가장 좋은 범용 형식입니다. 컬럼형이고, 타입이 지정되어 있으며, Arrow 엔드포인트가 지원하지 않는 SHOW 구문도 허용합니다. 와이어 형식 계약에 대한 자세한 내용은 26.09.1 릴리스 노트를 참조하십시오.
단일 바이너리. 의존성 없음.
Arc는 하나의 정적으로 링크된 실행 파일로 배포됩니다. JVM도, Python 환경도, 관리해야 할 PostgreSQL 클러스터도, 지켜봐야 할 ZooKeeper 앙상블도 필요하지 않습니다. 노트북, 공장 엣지 박스, 온프레미스 서버 또는 Kubernetes 클러스터에서 실행할 수 있습니다. 동일한 바이너리, 동일한 설정 인터페이스입니다.
- 에어갭 준비 완료(Air-gap ready): 런타임 시 외부 서비스가 필요하지 않습니다. 라이선스 서버나 클라우드 의존성이 없습니다.
- 엣지부터 클라우드까지: 전술적 엣지, 주권형 클라우드 또는 온프레미스 환경에 배포할 수 있습니다.
- 최소한의 발자국(Minimal footprint): 하나의 프로세스로 작동합니다. 메모리 사용량은 플릿 크기(fleet size)가 아닌 활성 워크로드에 비례합니다.
빠른 시작 (Quick Start)
# 빌드
make build
...
설치 (Installation)
Docker
# Docker Hub
docker run -d \
-p 8000:8000 \
...
다중 아키텍처 이미지(linux/amd64 + linux/arm64)는 모든 릴리스에서 두 레지스트리에 게시됩니다.
macOS (Homebrew)
brew install basekick-labs/tap/arc
Apple Silicon의 경우 DuckDB는 정적으로 링크되므로 런타임 의존성이 없습니다. (만약 arc 브라우저 캐스크와 혼동되는 것을 방지하려면 먼저 brew install --formula arc를 사용하십시오.)
Debian/Ubuntu
wget https://github.com/basekick-labs/arc/releases/download/v26.09.3/arc_26.09.3_amd64.deb
sudo dpkg -i arc_26.09.3_amd64.deb
sudo systemctl enable arc && sudo systemctl start arc
RHEL/Fedora
wget https://github.com/basekick-labs/arc/releases/download/v26.09.3/arc-26.09.3-1.x86_64.rpm
sudo rpm -i arc-26.09.3-1.x86_64.rpm
sudo systemctl enable arc && sudo systemctl start arc
Arch Linux
Omarchy와 같은 Arch Linux 및 Arch 기반 배포판에서 작동합니다 (x86_64 및 aarch64).
wget https://github.com/basekick-labs/arc/releases/download/v26.09.3/arc-26.09.3-1-x86_64.pkg.tar.zst
sudo pacman -U arc-26.09.3-1-x86_64.pkg.tar.zst
sudo systemctl enable arc && sudo systemctl start arc
Kubernetes (Helm)
helm install arc https://github.com/basekick-labs/arc/releases/download/v26.09.3/arc-26.09.3.tgz
소스에서 빌드하기
# 전제 조건: Go 1.26+
# 클론 및 빌드
...
FIPS 140-3 빌드
미국 국방/연방 기관 및 기타 규제 환경을 위해, Arc는 선택적 arc-fips 빌드를 제공합니다. 이는 동일한 소스 코드와 버전을 사용하며 CMVP 인증 Go 암호화 모듈(Go Cryptographic Module)에 맞춰 컴파일되고 FIPS 전용 모드에서 실행됩니다. 표준 버전 대신 -fips 아티팩트를 선택하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기