Exportación de Historial Completo
Esta página describe las prácticas recomendadas para usar Galexie y crear un data lake con el historial completo de los metadatos del ledger.
¿Por qué Exportar el Historial Completo?
Exportar el historial completo de los metadatos del ledger de Stellar proporciona un data lake completo de todo lo que ha ocurrido on-chain. Esto facilita y agiliza la recuperación de datos en cualquier punto de la historia de la red.
Esto permite:
- Analítica - ejecutar análisis de tendencias históricas con
stellar-etl
- RPC de Historial Completo - backend del data lake que suministra metadatos del ledger a instancias RPC para habilitar el acceso a datos del historial completo
- Datos en Tiempo Real - acceso a datos en tiempo real sobre el acceso completo a datos históricos
Costos y Requisitos de Almacenamiento
Las estimaciones están basadas en los costos de GCP Compute Engine y Google Cloud Storage
- Costo Total ~= $1,100 USD
- Costos de Cómputo ~= $500 USD
- Costos de Operaciones Clase A de GCS (escrituras) ~= $600 USD
- Tamaño Total de Almacenamiento ~= 3 TB
Estrategia de Exportación
La mejor forma de exportar el historial completo con Galexie es ejecutando múltiples instancias individuales de Galexie en paralelo. Como referencia, se estima que se tarda aproximadamente 150 días en exportar el historial completo usando una sola instancia de Galexie. Ejecutar en paralelo con 40-50 instancias de Galexie toma aproximadamente 4-5 días.
- Asegúrate de haber configurado un sistema de almacenamiento y contar con el hardware adecuado según lo definido en los Requisitos Previos de Galexie
- Determina cuántas instancias paralelas de Galexie quieres ejecutar
- Recuerda pasar rangos de ledger no solapados a cada una de tus instancias de Galexie
Nota que los ledgers anteriores en la historia son más pequeños y se exportan más rápido que los ledgers más recientes. Esta diferencia de desempeño se hace evidente alrededor del ledger 30,000,000. Debido a esta diferencia de desempeño, generalmente es mejor asignar más instancias de Galexie para los ledgers más recientes.
Cómo se Ve Esto en la Práctica
Supongamos que hay 50,000,000 de ledgers que Galexie necesita exportar.
- Para 50 instancias, la división podría ser:
- 15 instancias para procesar desde genesis hasta 29,999,999
- 35 instancias para procesar de 30,000,000 a 50,000,000
Cada instancia seguirá las mismas instrucciones de Ejecutar Galexie
galexie append --start <start_ledger> --end <end_ledger>
Donde se ejecutaría tu primera instancia
galexie append --start 2 --end 1999999
La segunda se ejecutaría
galexie append --start 2000000 --end 3999999
y así sucesivamente
Métodos para ejecutar múltiples instancias de Galexie
Existen diferentes formas de iniciar múltiples instancias de Galexie que pueden variar según tu proveedor de la nube o hardware local.
GCP Batch
Dentro de GCP puedes usar Batch, que acepta un archivo JSON o YAML de job
que puede parametrizar los rangos de inicio y fin del ledger para cada instancia de Galexie
Ejemplo de archivo YAML para job de GCP Batch
job:
taskGroups:
- taskSpec:
computeResource:
cpuMilli: 2000
memoryMib: 8000
maxRetryCount: 1
container:
imageUri: "stellar/stellar-galexie:23.0.0"
entrypoint: "galexie"
commands: ["append", "--start", "${START}", "--end", "#{END}"]
tasks:
# It is possible to use the GCP batch index instead of manually naming each task
- name: "galexie-1"
environments:
START: "2"
END: "1999999"
- name: "galexie-2"
environments:
START: "2000000"
END: "3999999"
...
requireHostsFile: true
requireTaskHostsFile: true
allocationPolicy:
instances:
- policy:
machineType: "e2-standard-2"
disks:
- newDisk:
type: "pd-standard"
sizeGb: 100
mountPoint: "/mnt/shared"
Instancias de cómputo en GCP
Puedes iniciar manualmente múltiples instancias individuales de cómputo
Ejemplo de instancia de cómputo en GCP
#container-declaration-0.yaml
spec:
restartPolicy: Always
containers:
- name: galexie
image: stellar/stellar-galexie:23.0.0
command:
- galexie
args:
- append
- --start
- "2"
- --end
- "1999999"
securityContext:
privileged: true
Luego crea la instancia ejecutando el siguiente comando gcloud
gcloud compute instances create "galexie-0" \
--zone=us-central1-a \
--machine-type=e2-standard-2 \
--image-family=cos-stable \
--image-project=cos-cloud \
--boot-disk-size=100GB \
--boot-disk-type=pd-standard \
--boot-disk-device-name="galexie-0" \
--tags=http-server,https-server \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--service-account=<service-account> \
--metadata-from-file=gce-container-declaration="container-declaration-0.yaml"
Repite el proceso para tantas instancias paralelas de Galexie como desees
Instancias locales de Galexie
Puedes ejecutar múltiples instancias de Galexie localmente con un ejecutable de Galexie desarrollado localmente
./galexie append --start 2 --end 1999999 & \
./galexie append --start 2000000 --end 3999999 & \
./galexie append --start 4000000 --end 5999999 &
...