CodeChain-io / CodeChain-io/codechain-indexer

Remove O(m) DB queries

Ouverte
#316 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
TypeScript
Étoiles
21
Forks
15
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

When querying UTXOs using Asset type, aggregating UTXOs by account, and creating a snapshot, the Indexer scans all the UTXOs that have a specific account or a specific asset type.

When a user opens a CodeChain web wallet, wallet requests the total amount of assets that the user has to the Indexer. Indexer sends a query that scans all the UTXOs that the user has. If the number of UTXOs that the user has is `m`, the upper bound of the query is `O(m)`.

### How to solve

Make APIs return sub results that read k rows in the DB. The Web wallet or Hub should request the maximum `[n/k]` number of API calls to get all the results. The upper bound of each query is O(k*log m). Then there won't be a single slow query that consumes all the resources(CPU, Memory, disk I/O) in the DB.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par localiser les points d’entrée de l’Indexer pour les requêtes Asset-type UTXO, l’agrégation des comptes, la création de snapshots et les APIs utilisées par le portefeuille web ou le Hub. Examinez la manière dont ces requêtes parcourent actuellement les résultats et déterminez les changements nécessaires au niveau de l’API et du consommateur afin que les résultats soient récupérés par lots bornés ; le travail est terminé lorsqu’aucune requête unique ne parcourt les m UTXOs.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
typescript
Domaine
api, databases, performance
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.