วิธีการรัน indexer node

SubQuery TeamLess than 1 minute

วิธีการรัน indexer node

คู่มือวิดีโอ


บทนำ

การรัน indexer node เป็นอีกตัวเลือกหนึ่งนอกเหนือจากการใช้ Docker หรือการโฮสต์โปรเจ็กต์ของคุณที่ SubQuery Projects open in new window ซึ่งต้องใช้เวลาและความพยายามมากขึ้น แต่จะช่วยเพิ่มความเข้าใจเกี่ยวกับวิธีการทำงานของ SubQuery เบื้องหลังให้กับคุณมากยิ่งขึ้น

Postgres

การรัน indexer node บนโครงสร้างพื้นฐานของคุณจะต้องมีการตั้งค่าฐานข้อมูล Postgres คุณสามารถติดตั้ง Postgres ได้ คุณสามารถติดตั้ง Postgres ได้ ที่นี่open in new window และตรวจดูให้แน่ใจว่าเป็นเวอร์ชัน 12 ขึ้นไป

ติดตั้ง subql/node

จากนั้นให้ใช้คำสั่งต่อไปนี้เพื่อรันโหนด SubQuery:

npm install -g @subql/node

คำสั่ง -g หมายถึงการติดตั้งแบบ global ซึ่งหมายถึงตำแหน่งจะเป็น /usr/local/lib/node_modules บน OSX

เมื่อติดตั้งแล้ว คุณสามารถตรวจสอบเวอร์ชันได้โดยการรัน:

> subql-node --version
0.19.1

การตั้งค่า DB

จากนั้น คุณต้องตั้งค่า environmental variables ต่อไปนี้:

export DB_USER=postgres
export DB_PASS=postgres
export DB_DATABASE=postgres
export DB_HOST=localhost
export DB_PORT=5432

แน่นอนว่าหากคุณมีค่าที่ต่างออกไปสำหรับตัวแปรด้านบน โปรดปรับตามนั้น โปรดคำนึงไว้ว่าคำสั่ง env จะแสดงผล environment variables ที่ต้ังไว้ในขณะนี้ และนี่เป็นกระบวนการที่จะตั้งค่าเหล่านี้แค่ชั่วคราว กล่าวคือ ตัวแปรเหล่านี้จะใช้ได้ในเฉพาะช่วง session ของ terminal นั้นเท่านั้น หากต้องการตั้งค่าถาวร ต้องเก็บการตั้งค่าไว้ใน ~/.bash_profile แทน

การทำ Index โปรเจ็กต์

ในการเริ่มทำการ index โปรเจ็กต์ ให้ไปที่โฟลเดอร์โปรเจ็กต์ของคุณและรันคำสั่งต่อไปนี้:

subql-node -f .

หากคุณไม่มีโปรเจ็กต์ในการทำให้รันคำสั่ง git clone https://github.com/subquery/subql-helloworld คุณจะเห็น indexer node เริ่มทำงานและเริ่มการ index บล็อก

การตรวจสอบ Postgres

หากคุณไปที่ Postgres คุณจะเห็นตารางที่สร้างขึ้นสองตาราง public.subqueries และ subquery_1.starter_entities

public.subqueries มี 1 แถวเท่านั้นที่ indexer จะตรวจสอบเมื่อเริ่มต้นใช้งานในการ "เข้าใจในสถานะปัจจุบัน" เพื่อให้รู้ว่าจะดำเนินการต่อจากที่ใด ตาราง starter_entities เก็บ index ต่างๆไว้ หากต้องการดูข้อมูล ให้เรียกใช้ select (*) from subquery_1.starter_entities