Ridge Architecture d'exécution
Cette page mappe le runtime partagé par Ridge DB et Ridge Admin. Il est dérivé du courant ridged, ridge_pgwire, ridge_sql, ridge, et ridge-admin implémentations plutôt qu'à partir d'un modèle de base de données générique.
La carte interactive fournit des composants consultables, un traçage d'itinéraire dirigé, des vues guidées pour le chemin de requête principal, des informations à distance SSH, durabilité et sécurité, dark/light thèmes, navigation au clavier et SVG ou exportation raster.
Carte du système
Browser
│ HTTP on loopback
▼
Ridge Admin security gate
│ authenticated API + workspace
▼
Ridge Admin services ──► four-connection pgwire pool
│
├── local pgwire ─────────────────────┐
│ │
└── verified SSH direct-tcpip ────────┤
▼
ridged pgwire runtime
│
▼
Ridge SQL session
│
▼
Ridge core / MVCC
│
▼
B+Trees + WAL + rows
Le chemin principal est volontairement étroit. Le navigateur ne reçoit jamais de socket de base de données ou SSH accréditation. Les profils locaux et distants convergent sur le même pgwire, SQL, transactions et contrats de stockage.
Composants d'exécution
| Composant | Responsabilité | Implémentation canonique |
|---|---|---|
| Interface utilisateur du navigateur | Explorateur d'objets, SQL espaces de travail, édition de données, opérations | grove/apps/ridge-admin/static/ |
| HTTP porte de sécurité | Échange de lancement unique, cookie de session, CSRF, vérifications d'hôte et d'origine | grove/apps/ridge-admin/src/main.sd, src/lib.sd |
| Services administratifs | Profils, métadonnées, SQL exécution, édition, export, diagnostic | grove/apps/ridge-admin/src/main.sd |
| Pgwire piscine | Quatre connexions détenues, locations d'espaces de travail, transactions, annulation | grove/apps/ridge-admin/src/lib.sd, grove/libs/pg |
| SSH transport | Vérification de l'hôte connu, authentification, direct-tcpip, reconnexion et annulation des canaux |
grove/libs/ssh, grove/apps/ridge-admin/src/main.sd |
ridged fil pg |
Écouteur de bouclage, TLS/password authentification, fragments de réacteur, files d'attente, annulation, coordination du stockage | grove/libs/ridge_pgwire |
| Ridge SQL | Analyse, classification, planification, exécution préparée, résultats et limites de travail | grove/libs/ridge_sql |
| Ridge cœur | Catalogue, schémas, MVCC, transactions, index, conflits, vide, sauvegarde et restauration | grove/libs/ridge |
| Stockage durable | Récursif B+Trees, CRC-32 logique WAL, codec row/schema génération 2 | grove/libs/btree_store, grove/libs/wal, grove/libs/rowcodec |
Flux de requête principal
- Ridge Admin lie son serveur HTTP à
127.0.0.1et donne au navigateur un jeton de fragment unique. - Le navigateur échange le fragment contre un HTTP-uniquement cookie de session et reçoit un jeton CSRF par session.
- Le répartiteur HTTP valide la taille de la demande, l'itinéraire, la méthode, l'hôte, l'origine, séance, CSRF et le type de contenu avant d'appeler un service.
- Un espace de travail SQL loue une connexion détenue à partir du pool de quatre connexions.
- Les profils locaux se connectent à
ridgedlors du bouclage. Les profils distants mettent le même protocole client via un canal SSHdirect-tcpipvérifié sans ouvrir un écouteur de transfert. - Un fragment de réacteur
ridgedvalide le démarrage, TLS/authentication, le protocole cadres, instructions préparées, état du portail, pression de sortie et métadonnées d'annulation. - Le coordinateur de stockage achemine la requête limitée vers un Ridge SQL séance.
- Ridge SQL analyse et planifie une instruction prise en charge, applique result/work limites et s’exécute à travers les Ridge noyau.
- Ridge le noyau s'applique MVCC visibilité, verrouillage, contraintes, index, WAL publication, B+Tree modifications, sommes de contrôle et fsync selon les besoins.
- Les résultats sont renvoyés via pgwire. Ridge Admin convertit le protocole limité frames to JSON or CSV and returns them to the browser.
Une écriture interrompue n'est jamais rejouée automatiquement. Ridge Admin marque un résultat ambigu comme incertain et nécessite une vérification par l'opérateur.
Modèle de concurrence
Le ridged persistant nécessite au moins deux ouvriers Seed. Il divise une partie de l'ensemble de travail en fragments de réacteur non bloquants et conserve la capacité pour les travaux de stockage. Chaque fragment possède son écouteur, sa dalle de connexion, son état de protocole, ses plans préparés, sa contre-pression de sortie, son jeton d'annulation et un lecteur d'instantanés en lecture seule. Les canaux délimités connectent les fragments au coordinateur de stockage.
Le coordinateur préserve la propriété des transactions, le regroupement des validations, le drainage des arrêts et le routage des annulations. Les lectures peuvent utiliser des instantanés indépendants ; les écritures durables passent toujours Ridge règles de détection et de publication des conflits.
Ridge Admin utilise spawn structuré pour les connexions HTTP limitées et un gestionnaire SSH détenu. L’état du serveur est propriétaire du pool, des baux de l’espace de travail, de l’annulation des requêtes actives, de l’état de reconnexion et du nettoyage déterministe.
Dépendances externes
| Dépendance | Utilisation de l'exécution | Limite |
|---|---|---|
| OpenSSL 3 | Serveur natif ridged Contexte et connexion TLS I/O |
Backend natif explicite lié à libssl et libcrypto |
| Runtime Seed hébergé | Sockets, réacteur d'événements, signaux, planificateur de tâches, entropie, heure, fichiers, verrous et fsync | Exécution spécifique à la plate-forme ABI |
| Système de fichiers du système d'exploitation | Fichiers de base de données, WAL, catalogue, index, instantanés, sauvegardes, journaux, magasin de profils | Racines absolues contrôlées par l'opérateur ou l'utilisateur |
| Navigateur | Présentation, état d'affichage éphémère, brouillons locaux | Non fiable par rapport à l'autorité du backend |
| SSH serveur et agent | Identité de l'hôte, authentification, transport chiffré | Vérifié avant le trafic de la base de données |
Ridge ne dépend pas d'un PostgreSQL serveur. PostgreSQL la compatibilité est limitée au sous-ensemble de câbles documenté côté client.
Limites de sécurité
Navigateur vers Ridge Admin
- L'écouteur est uniquement en boucle.
- Le secret de lancement est contenu dans le fragment URL et non dans un paramètre de requête.
- L'échange unique produit un HTTP-uniquement, cookie de session SameSite.
- Les mutations nécessitent une origine de bouclage exacte et un jeton CSRF par session.
- Les combinaisons hôte, type de contenu, taille header/body et route/method sont validé avant expédition.
- CSP, sans magasin,
nosniff, et le comportement restrictif des référents réduit le navigateur exposition.
Ridge Admin vers la base de données
- Le backend possède tous les sockets, transactions, secrets et nettoyages.
- Les profils ne conservent pas les mots de passe de base de données, les mots de passe SSH ou les clés phrases secrètes.
- Les informations d'identification conservées pour l'annulation ou une reconnexion sont limitées et remis à zéro à partir de la mémoire du processus.
- Un espace de travail reste épinglé à son état de transaction et de connexion.
- Les déconnexions ne provoquent pas la relecture des requêtes.
SSH limite
- La vérification stricte de l'hôte connu est la valeur par défaut ; l'acceptation-nouveau explicite est un politique de premier contact, pas un contournement de changement d’hôte.
- Natif
direct-tcpiples canaux atteignent le bouclage distantridgedpoint final. - Aucun écouteur de transfert TCP local n’est ouvert.
- L’annulation de requête utilise un canal SSH vérifié distinct.
ridged limite
- Le service se lie uniquement à
127.0.0.1. - TLS et l'authentification par mot de passe sont configurés par l'opérateur ; un texte clair La contestation du mot de passe n'est acceptée que dans TLS.
- Le serveur actuel expose un database/user configuré plus un rôle en lecture seule, pas un PostgreSQL catalogue de rôles.
- Messages, instructions préparées, portails, files d'attente, tampons de résultats et le nombre de connexions a vérifié les limites.
- Les formes SQL et de protocole non prises en charge échouent explicitement.
Limite de stockage
- Les racines de base de données et de sauvegarde sont absolues et contrôlées par l’opérateur.
- Les noms et les chemins rejettent la traversée ; La restauration refuse une cible existante.
- WAL les images et les fichiers de sauvegarde sont additionnés.
- L’accusé de réception de l’engagement suit la limite de durabilité documentée.
- La récupération rejoue l'état engagé de manière idempotente et reconstruit les index et têtes.
- L'édition directe de fichiers contourne les invariants et n'est pas prise en charge.
Confinement des échecs
| Échec | Comportement de confinement |
|---|---|
| Malformé HTTP ou corps surdimensionné | Erreur HTTP saisie avant l'envoi du service |
| Trame pgwire invalide ou protocole non pris en charge | Erreur protocol/SQLSTATE délimitée et nettoyage de la connexion |
| Saturation ou délai d'attente de la file d'attente | Rejet explicite ; pas de croissance illimitée de la file d'attente |
| Annulation du client | Acheminé vers le propriétaire shard/session avant publication si possible |
| Interruption du réseau pendant l'écriture | Résultat incertain ; pas de relecture automatique |
| Conflit de transactions | Conflit déterministe sans publication partielle |
| Crash du processus | Relecture logique WAL validée ; les travaux inédits restent invisibles |
| Corrompu WAL ou sauvegarde | Checksum/integrity échec au lieu d’une acceptation silencieuse |
| Restaurer la collision ou la traversée | La restauration hors ligne rejette la cible |
Non-buts architecturaux
Cette carte n'implique pas un multi-utilisateur distant Ridge Admin service, général PostgreSQL administration, réplication, clustering, partitionnement, écouteur de base de données publique, SCRAM, identités de certificat, complet PostgreSQL catalogues, ou sans restriction driver/ORM compatibilité.
Provenance du diagramme
L'artefact interactif a été produit avec Archify 2.12 en mode Architecture en utilisant la présentation statique Classique et la porte de composition Showcase. Sa source typée est seed/docs/diagrams/ridge-runtime.architecture.json.
La carte s'appuie sur des preuves issues de l'inspection du référentiel, mais elle n'intègre pas intentionnellement les chemins de référentiel privés en tant que preuves sources cliquables. Les fichiers sources répertoriés ci-dessus restent les ancres de la révision.