Menjalankan SubQuery Secara Lokal
Menjalankan SubQuery Secara Lokal
Panduan ini bekerja melalui cara menjalankan node SubQuery lokal pada infrastruktur Anda, yang mencakup pengindeks dan layanan kueri. Tidak ingin khawatir menjalankan infrastruktur SubQuery Anda sendiri? SubQuery menyediakan Layanan Terkelola kepada komunitas secara gratis. Ikuti panduan penerbitan kami untuk melihat bagaimana Anda dapat mengunggah proyek Anda ke Proyek SubQuery.
Gunakan Docker
Solusi alternatif adalah dengan menjalankan Docker Container, yang ditentukan oleh file docker-compose.yml
. Untuk proyek baru yang baru saja diinisialisasi, Anda tidak perlu mengubah apa pun di sini.
Di bawah direktori proyek jalankan perintah berikut:
docker-compose pull && docker-compose up
::: Mungkin perlu beberapa waktu untuk mengunduh paket yang diperlukan (@subql/node
, @subql/query
, dan Postgres) untuk pertama kalinya tetapi segera Anda akan melihat Node subkueri. :::
Menjalankan Pengindeks (subql/node)
Persyaratan:
- Basis data Postgres (versi 12 atau lebih tinggi). Sementara Node SubQuery mengindeks blockchain, data yang diekstraksi disimpan dalam instance database eksternal.
Node SubQuery adalah implementasi yang mengekstrak data blockchain berbasis substrat per proyek SubQuery dan menyimpannya ke dalam database Postgres.
If you are running your project locally using subql-node
or subql-node-<network>
, make sure you enable the pg_extension btree_gist
You can run the following SQL query:
CREATE EXTENSION IF NOT EXISTS btree_gist;
Instalasi
Please note that we **DO NOT** encourage the use of `yarn global` due to its poor dependency management which may lead to an errors down the line. :::
Setelah terinstal, Anda dapat memulai node dengan perintah berikut:
Key Commands
The following commands will assist you to complete the configuration of a SubQuery node and begin indexing. Untuk mengetahui lebih lanjut, Anda selalu dapat menjalankan --help
.
Arahkan ke jalur proyek lokal
Connect to database
export DB_USER=postgres
export DB_PASS=postgres
export DB_DATABASE=postgres
export DB_HOST=localhost
export DB_PORT=5432
subql-node -f your-project-path
Bergantung pada konfigurasi database Postgres Anda (misalnya kata sandi database yang berbeda), harap pastikan juga bahwa pengindeks (subql/node
) dan layanan kueri (subql/query
) dapat membuat koneksi ke sana.
Tentukan file konfigurasi
This will point the query node to a manifest file which can be in YAML or JSON format.
Change the block fetching batch size
subql-node -f your-project-path --batch-size 200
Result:
[IndexerManager] fetch block [203, 402]
[IndexerManager] fetch block [403, 602]
Saat pengindeks pertama kali mengindeks rantai, mengambil blok tunggal akan secara signifikan menurunkan kinerja. Meningkatkan ukuran batch untuk menyesuaikan jumlah blok yang diambil akan mengurangi waktu pemrosesan secara keseluruhan. Ukuran batch default saat ini adalah 100.
Berjalan dalam mode lokal
For debugging purposes, users can run the node in local mode. Beralih ke model lokal akan membuat tabel Postgres dalam skema default publik
.
Jika mode lokal tidak digunakan, skema Postgres baru dengan subquery_
awal dan tabel proyek yang sesuai akan dibuat.
Mengcek kesehatan Node
Ada 2 endpoint yang dapat Anda gunakan untuk memeriksa dan memantau kesehatan node SubQuery yang sedang berjalan.
- Titik akhir pemeriksaan kesehatan yang mengembalikan respons 200 sederhana.
- Endpoint metadata yang mencakup analisis tambahan dari node SubQuery yang sedang berjalan.
Tambahkan ini ke URL dasar node SubQuery Anda. Misalnya http://localhost:3000/meta
akan kembali:
{
"currentProcessingHeight": 1000699,
"currentProcessingTimestamp": 1631517883547,
"targetHeight": 6807295,
"bestHeight": 6807298,
"indexerNodeVersion": "0.19.1",
"lastProcessedHeight": 1000699,
"lastProcessedTimestamp": 1631517883555,
"uptime": 41.151789063,
"polkadotSdkVersion": "5.4.1",
"apiConnected": true,
"injectedApiConnected": true,
"usingDictionary": false,
"chain": "Polkadot",
"specName": "polkadot",
"genesisHash": "0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
"blockTime": 6000
}
http://localhost:3000/health
akan mengembalikan HTTP 200 jika berhasil.
Kesalahan 500 akan dikembalikan jika pengindeks tidak sehat. Hal ini sering terlihat ketika node sedang booting.
{
"status": 500,
"error": "Pengindeks tidak sehat"
}
Jika URL yang digunakan salah, kesalahan 404 tidak ditemukan akan ditampilkan.
{
"statusCode": 404,
"message": "Cannot GET /healthy",
"error": "Not Found"
}
Debug proyek Anda
Gunakan inspektur simpul untuk menjalankan perintah berikut.
node --inspect-brk <path to subql-node> -f <path to subQuery project>
Sebagai contoh:
node --inspect-brk /usr/local/bin/subql-node -f ~/Code/subQuery/projects/subql-helloworld/
Debugger listening on ws://127.0.0.1:9229/56156753-c07d-4bbe-af2d-2c7ff4bcc5ad
Untuk bantuan, klik link berikut: https://nodejs.org/en/docs/inspector
Debugger Terpasang.
Kemudian buka alat pengembang Chrome, buka Sumber > Filesystem dan tambahkan proyek Anda ke ruang kerja dan mulai debugging. Untuk informasi lebih lanjut, periksa Cara men-debug proyek SubQuery.
Menjalankan Layanan Kueri (subql/query)
Instalasi
# NPM
npm install -g @subql/query
::: Harap dicatat bahwa kami JANGAN mendorong penggunaan global benang
karena manajemen ketergantungannya yang buruk yang dapat menyebabkan kesalahan di masa mendatang. :::
Menjalankan layanan Kueri
export DB_HOST=localhost
subql-query --name <project_name> --playground
Pastikan nama proyek sama dengan nama proyek saat Anda menginisialisasi proyek. Juga, periksa variabel lingkungan sudah benar.
Setelah menjalankan layanan subql-query dengan sukses, buka browser Anda dan buka http://localhost:3000
. Anda akan melihat taman bermain GraphQL ditampilkan di Explorer dan skema yang siap untuk kueri.