(原文 : https://aptos.dev/indexer/legacy/custom-data-model)

✈︎ Github

✈︎ Githubサイドバー(今のところ426行目)

✈︎ アプリページ

<aside> ⚠️ 従来のインデクサー

これは従来のインデクサーに関するドキュメントです。最新のインデクサースタックを使用してカスタムプロセッサを作成する方法についてはカスタムプロセッサーを御覧下さい。

</aside>

独自のデータモデルを定義する

Aptos台帳データ用のカスタムインデクサーを開発する場合は、この方法を使用します。

<aside> 💡 カスタムインデクサーを使用する場合

現在、Aptos提供のインデックスサービス(上記参照)は、以下のコアMoveモジュールをサポートしています。:

(他のMoveモジュールおよびコントラクト用の)インデックス付きデータベースが必要な場合は、カスタムインデクサーを開発する必要があります。

</aside>

カスタムインデクサーの作成は以下の手順を使います。インデックス作成のブロック図を参照してください、このドキュメントの冒頭にあります。

  1. DieselのようなORMを使用して、新しいテーブルスキーマを定義します。このドキュメントでは、Dieselを使用してカスタムインデックス作成の手順(図内の「ビジネスロジック」およびデータクエリ)を解説します。
  2. 新しいテーブル(図内「ビジネスロジック」)に基づいて新しいデータモデルを作成します。
  3. 新しいトランザクションプロセッサを作成するか、任意で既存のプロセッサに追加します。この図では、このステップは、新しいビジネスロジックに従って台帳データベースを処理し、インデックス付きデータベースに書き込むことに該当します。
  4. 新しいプロセッサを統合します。既存のプロセッサを再利用する場合はこのオプションが選択出来ます。

以下の詳細な説明では、インデックス作成例とコイン残高のクエリが使用されます。これはcoin_processorで確認できます。

1. 新しいテーブルスキーマを定義する

この例ではPostgreSQL とDieselをORMとして使用します。アップグレードのたびにデータベースをリセットすることなく下位互換性のある変更を確実に行うため、Diesel移行を使用してスキーマを管理します。そのため、他の作業を行う前にまず新しいディーゼル移行を生成することが非常に重要なのです。

git clone <https://github.com/aptos-labs/aptos-core.git> を実行してAptos-coreリポジトリを複製し、aptos-core/tree/main/crates/indexerディレクトリにcdします。その後、以下の様に進めます。