본문으로 건너뛰기

Archival Store and Service (Beta)

⚙️Early-Stage Feature

This content describes an alpha/beta feature or service. These early stage features and services are in active development, so details are likely to change.

This feature or service is currently available in

  • Testnet
  • Mainnet

아카이브 스토어와 아카이브 서비스는 Full node나 인덱서 데이터베이스가 일반적으로 보관하는 범위를 넘어서는 Sui 과거 데이터에 접근하기 위한 확장 가능하고 일관된 기반을 제공한다. 이는 gRPCGraphQL API를 통해 풍부한 개발자 경험을 지원하는 동시에 스토리지 및 운영을 관리 용이하게 유지한다.

노트

GraphQL RPC는 GraphQL RPC 및 범용 인덱서(General-purpose Indexer) 베타 출시 이후 아카이브 서비스와 통합될 것이다. 그때까지 GraphQL RPC 베타는 Sui 재단에서 호스팅하는 서비스로만 제공되며, Sui 재단이 운영하는 아카이브 스토어(Bigtable)에 직접 연결된다.

정보

Overview

  • 아카이브 스토어: 체크포인트로 인덱싱된 Sui 데이터를 보관하는 장기 스토리지 시스템 (Bigtable 등)이다.
  • 아카이브 서비스: 이 스토어에 대한 접근을 노출하여 과거 데이터의 포인트 조회를 가능하게 하는 gRPC API (LedgerService) 계층이다.

이들은 full node가 더 이상 저장하지 않는 오래된 transactions, object 버전 및 checkpoint에 개발자와 데이터 제공자가 접근할 수 있게 한다.

When and why to use

목적과 사용 패턴은 다르지만, 개발자와 RPC/데이터 제공자 모두 아카이브 스토어와 서비스를 사용하여 이점을 얻는다.

Developers

  • Transaction 기록, object 계보, 이전 앱 상태와 같은 UI 기능을 렌더링하기 위해 과거 데이터에 접근한다.
  • 인프라 오버헤드를 피하기 위해 장기 데이터를 호스팅 아카이브 서비스에 의존한다.
  • Full node 또는 인덱서 데이터베이스가 불충분한 보관 기간을 반환하는 경우 앱이 아카이브 데이터를 쿼리할 수 있도록 fallback 메커니즘을 구현한다.

RPC and data providers

  • 개발자에게 과거 데이터 접근을 제공하여 차별화된 인프라 서비스를 운영한다.
  • 아카이브 서비스를 사용하여 GraphQL 또는 gRPC 기반 API의 보관 기간을 연장한다.
  • 자체 아카이브 스토어와 서비스 (Bigtable 사용) 또는 맞춤형 백엔드를 실행하여 운영 독립성을 유지한다.

Accessing the Archival Service

Developers

참여하는 모든 제공자가 호스팅하는 아카이브 서비스에 접근한다. Sui 재단은 Bigtable 기반 스토어에서 공공재 형태의 서비스를 제공한다. 이 서비스에는 엄격한 속도 제한이 있다:

  • Testnet: archive.testnet.sui.io
  • Mainnet: archive.mainnet.sui.io

RPC and data providers

아카이브 스토어와 아카이브 서비스를 직접 운영한다:

  • 아카이브 서비스 바이너리를 배포한다.
  • Bigtable과 같은 스토어를 유지 관리한다.
  • 수집 메커니즘을 사용하여 체크포인트로 스토어를 채운다.

자세한 내용은 populating the Archival Storerunning the Archival Service를 참고한다.

Populating the Archival Store

인덱서 파이프라인을 실행하여 아카이브 스토어를 최신 상태로 유지한다. Sui 재단은 Bigtable용 수집 메커니즘을 제공한다:

  • 도구: sui-kv-store
  • 다음 스크립트를 실행하여 Bigtable 클러스터를 초기화한다:
$ ./crates/sui-kvstore/src/bigtable/init.sh <name_of_bigtable_cluster>
  • 다음 명령으로 수집 데몬을 실행한다:
$ cargo run --bin sui-kvstore <name_of_your_bigtable_cluster> ingestion <mainnet|testnet>

다른 스토리지 백엔드를 사용하는 경우:

  • custom indexing framework를 사용하여 호환되는 인덱서를 구축한다.
  • gRPC API'sLedgerService 엔드포인트와 호환되는 구조로 데이터를 생성하도록 보장한다.

Running the Archival Service

아카이브 서비스는 gRPC API's LedgerService를 구현한다. 모든 구현은 이 인터페이스를 지원해야 한다.

  • Bigtable용 참조 구현: sui-kv-rpc.
  • 서비스를 독립적으로 배포하거나 다른 인프라와 함께 배치한다.

Integration points

gRPC APIs

  • Full node의 gRPC가 보관 기간 관련 오류를 반환할 때 앱이 아카이브 서비스를 직접 쿼리할 수 있다. 이 접근 방식은 앱이나 Full node가 과거 데이터를 직접 보관할 필요 없이 정상적인 폴백(graceful fallback)을 제공한다.
  • Full node에서 gRPC LedgerService APIs에 접근하는 것과 동일한 방식으로 아카이브 서비스에 접근한다. Full node URL을 아카이브 서비스 엔드포인트로 교체한다.

GraphQL RPC

  • GraphQL RPC는 향후 베타 출시 이후 예정된 통합을 통해 과거 조회를 아카이브 서비스에 위임할 것이다. 이는 제한된 보관 기간을 가진 범용 인덱서 데이터베이스의 비용 효율적인 설정을 가능하게 할 것이다.