메인 콘텐츠로 건너뛰기

Documentation Index

Fetch the complete documentation index at: https://docs.chainstream.io/llms.txt

Use this file to discover all available pages before exploring further.

개요

ChainStream GraphQL의 모든 Chain Group은 어떤 기본 테이블을 조회할지 제어하는 선택 파라미터 두 개를 받습니다. 사용 사례에 따라 신선도, 쿼리 속도, 데이터 완전성을 맞출 수 있습니다.

Dataset 파라미터

dataset 파라미터는 조회 데이터의 시간 범위를 제어합니다. 실시간 테이블, 아카이브 테이블, 또는 둘 다를 칠지 결정합니다.
설명일반적인 사용
combined실시간·아카이브 데이터 모두 조회 (기본값) — 보통 최근 약 7–10일전체 범위가 필요한 범용 쿼리
realtime최근 데이터만(대략 지난 24시간)모니터링 대시보드, 최신 거래, 실시간 알림
archive보존 기간(~7–10일) 내 역사 데이터만역사 분석, 백필, 트렌드 조사

사용법

query {
  Solana(dataset: realtime) {
    DEXTrades(limit: {count: 10}, orderBy: {descending: Block_Time}) {
      Block { Time }
      Trade { Buy { Currency { MintAddress } Amount PriceInUSD } }
    }
  }
}
query {
  EVM(network: eth, dataset: archive) {
    Transfers(
      where: { Block: { Time: { after: "2026-01-01T00:00:00Z", before: "2026-02-01T00:00:00Z" } } }
      limit: {count: 100}
    ) {
      Block { Time }
      Transfer { Currency { MintAddress } Amount AmountInUSD }
    }
  }
}

역사 데이터 백필

데이터 파이프라인을 만들거나 다운타임 복구 시 dataset: archive와 시간 범위 필터로 역사 데이터를 백필할 수 있습니다.
  1. 마지막으로 처리한 타임스탬프 또는 블록 높이를 기록합니다.
  2. 마지막 체크포인트부터 현재까지 where 필터와 함께 dataset: archive로 쿼리합니다.
  3. 백필된 데이터를 처리합니다.
  4. 지속 모니터링에는 dataset: realtime으로 전환합니다.
query BackfillTrades {
  Solana(dataset: archive) {
    DEXTrades(
      where: {
        Block: {
          Time: {
            after: "2026-04-01T00:00:00Z"
            before: "2026-04-02T00:00:00Z"
          }
        }
      }
      limit: {count: 10000}
      orderBy: {ascending: Block_Time}
    ) {
      Block { Time Slot }
      Transaction { Hash }
      Trade {
        Buy { Currency { MintAddress } Amount PriceInUSD }
        Sell { Currency { MintAddress } Amount }
      }
    }
  }
}

Dataset 미지원 테이블

일부 Cube는 dataset 값과 관계없이 항상 같은 테이블을 조회합니다. 예:
  • DWS Cube: TokenHolders, WalletTokenPnL, DEXPools — 현재 상태 스냅샷
  • 특수 테이블: TransactionBalances, PredictionTrades, PredictionManagements, PredictionSettlements
이 Cube들에서는 dataset이 조용히 무시됩니다.

Aggregates 파라미터

aggregates 파라미터는 원시 상세 테이블(DWD) 대신 사전 집계 materialized view(DWM 레이어)를 쓸지 결정합니다. 사전 집계 테이블에는 보통 분 단위로 미리 계산된 rollup이 들어 있어 훨씬 빠르게 조회할 수 있습니다.
설명일반적인 사용
yes가능하면 사전 집계 테이블 사용 (기본 동작)대부분의 분석 쿼리
no원시 상세 테이블만 사용이벤트 단위 세분도가 필요할 때
only사전 집계 테이블만 사용최대 속도, 선택 가능한 필드는 제한적

사용법

query {
  EVM(network: eth, aggregates: only) {
    Pairs(
      where: { Token: { Address: { is: "0xdac17f958d2ee523a2206206994597c13d831ec7" } } }
      limit: {count: 100}
      orderBy: {descending: Block_Time}
    ) {
      Interval { Time }
      Price { Ohlc { Open High Low Close } }
      Volume { Usd }
    }
  }
}

모드별 선택 가이드

시나리오권장이유
OHLC 차트 작성aggregates: only사전 계산 캔들 데이터, 가장 빠른 응답
시간에 따른 거래량 추이aggregates: yes사전 집계 거래량 통계 활용
개별 거래 분석aggregates: norollup에 없는 이벤트 단위 상세 필요
고유 트레이더 수 집계aggregates: yes사전 계산된 고유 카운트 활용 가능

두 파라미터 함께 쓰기

datasetaggregates를 동시에 사용할 수 있습니다.
query {
  Trading(dataset: realtime, aggregates: yes) {
    Tokens(
      where: { Token: { Address: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } } }
      limit: {count: 60}
      orderBy: {descending: Block_Time}
    ) {
      Interval { Time }
      Volume { Usd BuyVolumeUSD SellVolumeUSD }
      Stats { TradeCount UniqueBuyers UniqueSellers }
    }
  }
}
이 쿼리는 실시간 데이터와 사전 집계 테이블을 함께 사용해, 최근 약 60분간의 크로스체인 토큰 거래 통계를 최대한 빠르게 가져옵니다.

성능 고려 사항

대시보드에는 realtime

dataset: realtime은 더 작은 테이블 파티션을 조회해 모니터링 용도에서 응답이 빨라집니다.

분석에는 aggregates

aggregates: yes 또는 only는 원시 이벤트 테이블 풀스캔보다 수 배 빠른 사전 계산 rollup을 사용합니다.
OHLC나 거래량 쿼리를 최대한 빠르게 하려면 dataset: realtimeaggregates: only를 함께 쓰세요. 가장 작고 최적화된 데이터 슬라이스를 겨냥합니다.

관련 문서

스키마 개요

dataset과 aggregates가 전체 쿼리 구조에서 어떻게 맞는지 확인합니다.

데이터 Cube

dataset 전환이 지원되는 Cube를 확인합니다.