Persistance et traitement
Centers
Les Centers sont les nœuds de traitement, de cache et de persistance du maillage applicatif.
Rôle dans le maillage
La source de vérité des données à fort volume, haute vélocité et grande variété
C'est dans les Centers que les événements entrants deviennent un état structuré, que la logique métier s'applique au plus près des données, et que les résultats traités sont publiés vers les applications, les Gateways, d'autres Centers ou les systèmes aval.
Répondre aux problèmes de données difficiles
Les Centers 3forge ajoutent des fonctions qui répondent aux problèmes de données que les ingénieurs rencontrent régulièrement.
- Analytique de flux en temps réel
- Réplication, sharding et répartition de charge web sans code supplémentaire
- Insertions en flux dans les tables historiques avec cohérence immédiate
- Mises à jour éparses sur tables historiques
- Conflation avancée
- Schémas auto-découverts
- Appels de procédures distantes
- Outils de test et de couverture de code
- Planificateur de requêtes
- Requêtes multi-threadées
- Changements de schéma historique sans rechargement des données
Ces fonctionnalités reposent sur trois fonctions architecturales :
Base SQL en colonnes, cache en mémoire
Chaque source à laquelle un Center se connecte se résout en une image vivante et unique de l'activité, conservée en mémoire et interrogée en SQL. Les applications cessent d'interpréter des flux et lisent directement un état.
En colonnes et en mémoire : la vue qu'un desk demande est déjà calculée au moment où la question arrive, au lieu d'être assemblée après coup.
Un seul dialecte SQL couvre les deux stockages : une requête n'a jamais besoin de savoir si les lignes qu'elle cherche sont encore en mémoire ou déjà sur disque.
> 2 millions
Débit de la base temps réel, op/s
< 100 µs
Latence de la base temps réel
Base SQL historique en colonnes, à l'échelle du pétaoctet
Si les meilleures performances de requête s'obtiennent avec les bases temps réel, 3forge propose également des tables historiques en colonnes capables de contenir des milliers de milliards de lignes. Persistées sur disque et compatibles avec le partitionnement, elles sont conçues pour stocker de grands volumes à haute vitesse avec une restitution rapide, le tout avec la même syntaxe SQL que les tables temps réel.
Les données des tables historiques peuvent être interrogées et chargées dans une table temps réel, où l'ensemble des optimisations de requête devient accessible, jointures avec d'autres tables comprises.
- Grands nombres de colonnes et types de données lourds tels que les champs blob
- Gestion des schémas. Ajouter, supprimer ou modifier des colonnes sans impacter les partitions historiques. Les colonnes de partition sont immuables, la conception du schéma demande donc une planification soignée. La HDB fait correspondre les anciennes partitions aux nouveaux schémas de façon transparente, préservant l'intégrité de l'historique
- Opérations au niveau ligne. Les clauses UPDATE et DELETE sont prises en charge tout en préservant l'optimisation des partitions. Les changements importants au sein d'une partition sont ré-optimisés automatiquement, et l'indexation par tri améliore encore les performances des requêtes
Le système adapte dynamiquement les types de stockage lors de l'optimisation, partition par partition, pour l'efficacité disque et la vitesse de requête en fonction de l'usage réel des données. Chaque colonne peut être configurée pour des performances optimales :
> 10 000 milliards
Capacité de la base historique, lignes
> 1 000
Colonnes de la base historique
Que représentent 10 000 milliards de lignes ?
Le flux consolidé des transactions et cotations actions sur les marchés américains, le SIP, transporte environ 2,5 milliards de messages par jour de bourse. Si une ligne correspond à un message SIP consolidé, transactions et cotations comprises, 10 000 milliards de lignes représenteraient 4 000 jours de bourse, soit environ 16 ans.
Les données du marché des options sont bien plus denses, autour de 200 milliards de mises à jour de cotation par jour sur OPRA en période active. Même à ce rythme, 10 000 milliards de mises à jour représentent environ 2,5 mois de trafic de cotations d'options.
Moteur de traitement d'événements complexes
3forge propose des tables temps réel et des fonctions natives à la base qui permettent d'exécuter la logique métier à la volée en fonction des mises à jour de données. Des déclencheurs natifs à la base peuvent agréger, filtrer, joindre, enrichir et transformer l'information à mesure que les tables sources changent, et une logique sur mesure peut s'exécuter en réponse aux insertions, mises à jour et suppressions.
Exemples de modèles
Les Centers à l'œuvre
Conserver les données est la partie facile. Voici comment un Center reste rapide quand le volume grimpe, comment les données du jour deviennent historique sans interruption, et comment la logique métier s'exécute dans la base plutôt qu'à côté.
Optimisations pour les fortes charges
Les Centers 3forge s'appuient sur plusieurs approches avancées pour concilier le besoin de vitesse dans la transmission des données avec les contraintes techniques qui ralentiraient sinon le flux.
Traitement par deltas
Plutôt que de retraiter ou retransmettre l'ensemble du jeu de données à chaque mise à jour, les Centers ne traitent que les changements. Les performances et l'efficacité des systèmes temps réel s'en trouvent nettement améliorées.
Synthèse
Les Centers peuvent calculer et stocker des métriques de synthèse, régulières ou par deltas, incluant moyennes, sommes, comptages, minimums et maximums, pour comprimer les volumes, permettre l'analyse de tendance et alimenter des analyses temporelles comme les moyennes mobiles.
Conflation
Lors de la réplication entre les niveaux de l'architecture, les Centers peuvent être configurés pour envoyer chaque mise à jour, ou seulement la dernière à un intervalle convenu. Écarter les valeurs intermédiaires réduit fortement la charge des consommateurs en aval.
Décoration
Les Centers permettent la décoration automatisée des données via des déclencheurs événementiels invoqués lors des opérations, autorisant enrichissement, validation et propagation dynamiques en réponse aux changements au niveau des tables.
Archiver les données temps réel
Les mises à jour en flux passent des tables temps réel à la base historique selon des approches événementielles, par lots ou par minuterie, pour que les enregistrements historiques restent à jour sans interrompre l'exploitation.
Rien n'est exporté, mis en attente ni rechargé. Les ticks du jour deviennent l'historique de l'an passé sans quitter la base, c'est pourquoi une seule requête peut lire à la fois le présent et le passé.
Traitement d'événements complexes
La plateforme fournit six types de déclencheurs, qui forment tout le vocabulaire du moteur d'événements :
- Agrégation pour créer et mettre à jour des tables d'agrégats
- Projection pour les tables filtrées
- Jointure pour créer des tables jointes
- Décoration pour enrichir les données à partir d'une autre table
- Relay pour envoyer des messages via le Relay 3forge
- AmiScript pour exécuter des scripts sur mesure lors de toute insertion, mise à jour ou suppression
Les déclencheurs se déclarent en SQL : la logique événementielle vit avec les données plutôt que dans un service séparé qu'il faudrait déployer, versionner et maintenir synchronisé.
-- Un déclencheur de script
CREATE TRIGGER <trigger_name> OFTYPE AMISCRIPT ON
<table_name> [PRIORITY priority] USE...
-- Un déclencheur d'agrégation
CREATE TRIGGER <trigger_name> OFTYPE AGGREGATE ON
<source_table>,<target_table> USE...
-- Un déclencheur de projection
CREATE TRIGGER <trigger_name> OFTYPE PROJECTION ON
<source_tables>,<target_table> USE...
Les déclencheurs à l'œuvre
Une grille de P&L en temps réel n'est pas un calcul mais une chaîne de calculs, chaque déclencheur remplissant un rôle à mesure que les données changent :
- 3forge joint la drop-copy des exécutions aux données instrument pour les normaliser
- 3forge filtre les exécutions sur les symboles demandés et agrège les éléments intrajournaliers
- 3forge stocke les données de marché entrantes pour les symboles et les taux de change, filtre pour ne garder que les prix utiles et projette vers une table dédiée
- 3forge combine le début de journée avec le P&L intrajournalier et projette vers la grille
- 3forge décore les données de la grille avec les prix et taux de change mis à jour
La couche de distribution
Les Centers détiennent l'état. Les Gateways le distribuent.
À mesure que le maillage s'étend sur plusieurs Centers, les consommateurs ont besoin d'un accès stable, sans avoir à connaître sa topologie physique.