From 6c4ce33db8bee299c7139e1f59ffd7dd4816fcdb Mon Sep 17 00:00:00 2001 From: Massimo Luraschi Date: Thu, 20 Jan 2022 08:37:30 +0000 Subject: [PATCH] GitBook: [#12] No subject --- .gitbook/assets/Squid Architecture diagram.png | Bin 0 -> 45894 bytes key-concepts/architecture.md | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 .gitbook/assets/Squid Architecture diagram.png diff --git a/.gitbook/assets/Squid Architecture diagram.png b/.gitbook/assets/Squid Architecture diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..bd45ca049fc26021374d71b598fff4099775f1d6 GIT binary patch literal 45894 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 literal 0 HcmV?d00001 diff --git a/key-concepts/architecture.md b/key-concepts/architecture.md index 0f45bd9c..caabc038 100644 --- a/key-concepts/architecture.md +++ b/key-concepts/architecture.md @@ -14,6 +14,8 @@ A Squid query node consists of the following core parts: * PostgreSQL (Data Storage) * GraphQL Server +![Squid and Squid Archive are the main components](<../.gitbook/assets/Squid Architecture diagram.png>) + The Squid project takes as an input a high-level GraphQL-like schema modeling the blockchain data ("entities") to be indexed. The mappings describe the event handlers telling the indexer how the blockchain events affect the schema entities. Once the schema and the mappings are set up, the [Squid Archive](architecture.md#squid-archive) prepares the database and starts the continuous scan of the blockchain, processing the events through the mappings and updating the entities in the database.