Compétence experte SurrealDB 3
Architecture, développement et opérations de niveau expert pour SurrealDB 3 avec GitHub Copilot.
Quand Copilot doit utiliser cette compétence
Activation automatique lorsque l'utilisateur :
- Écrit ou pose des questions sur les requêtes SurrealQL
- Travaille avec des fichiers
.surql - Conçoit des schémas de base de données pour SurrealDB
- Configure le déploiement de SurrealDB ou Docker
- Utilise les SDK SurrealDB (JavaScript, Python, Go, Rust, Java, Kotlin, .NET, C, PHP, Swift, Ruby)
- Travaille avec des relations de graphe (RELATE, traversée)
- Implémente la recherche vectorielle ou les modèles RAG
- Configure la sécurité, les permissions ou le contrôle d'accès
- Crée des extensions WASM Surrealism
- Migre des données vers SurrealDB depuis d'autres bases de données
- Connecte SurrealDB à des hôtes MCP, n8n, des frameworks d'IA ou des éditeurs personnalisés
Référence des règles
Cette compétence contient 18 fichiers de règles détaillés. Lisez le fichier de règle pertinent lorsque la demande de l'utilisateur correspond à son domaine :
| Fichier de règle | Quand le charger | Domaine |
|---|---|---|
| surrealql.md | Écrire ou déboguer des requêtes SurrealQL | Référence complète du langage SurrealQL |
| data-modeling.md | Concevoir des schémas, choisir des types de champs, des identifiants d'enregistrement | Modèles de conception de schémas multi-modèles |
| graph-queries.md | RELATE, traversée de graphes, expressions de chemin | Modèles de relations et de traversée de graphes |
| vector-search.md | Index HNSW, recherche de similarité, intégrations | Recherche vectorielle et pipelines RAG |
| security.md | Permissions, authentification, JWT, contrôle d'accès | Sécurité au niveau des lignes et flux d'authentification |
| deployment.md | Installation, configuration, exécution de SurrealDB | Moteurs de stockage, Docker, Kubernetes |
| performance.md | Requêtes lentes, stratégie d'index, EXPLAIN | Réglage des performances et optimisation |
| sdks.md | Utilisation de SurrealDB depuis le code applicatif | Modèles JavaScript, Python, Go, Rust, Java, Kotlin, .NET, C, PHP, Swift, Ruby |
| surrealism.md | Écrire des extensions WASM | Développement d'extensions Rust vers WASM |
| surrealml.md | Travailler à proximité de SurrealML | Aperçu de la limite .surml et avertissement de dépendance native |
| surrealmcp.md | Connecter des hôtes d'IA | Catalogue d'outils MCP et déploiement |
| editor-tooling.md | Prise en charge de l'éditeur / IDE | LSP, tree-sitter, CodeMirror, extensions d'éditeur |
| langchain.md | RAG LangChain | API Python pour vector store |
| ecosystem-integrations.md | Pointeurs n8n / framework | n8n, documentation des frameworks d'IA, limite Spectron, compétences d'agent |
| surrealist.md | Utiliser l'IDE/GUI Surrealist | Fonctionnalités de l'IDE et concepteur de schéma |
| surreal-sync.md | Migrer depuis d'autres bases de données | Synchronisation CDC depuis Postgres, Mongo, etc. |
| surrealfs.md | Opérations de système de fichiers d'agent IA | Système de fichiers virtuel basé sur SurrealDB |
| surrealkit.md | Synchronisation de schéma, déploiements, seeds et tests déclaratifs | Gestion de schéma par état désiré pour les applications SurrealDB |
Référence rapide
Essentiels de SurrealQL
-- Créer des enregistrements
CREATE person:alice SET name = 'Alice', age = 30;
-- Relations de graphe
RELATE person:alice->follows->person:bob SET since = time::now();
-- Traverser le graphe
SELECT ->follows->person.name AS following FROM person:alice;
-- Recherche vectorielle (HNSW)
DEFINE INDEX idx_embed ON document FIELDS embedding HNSW DIMENSION 1536 DIST COSINE;
SELECT * FROM document WHERE embedding <|10,40|> $query_vector;
-- Permissions au niveau des lignes
DEFINE TABLE post SCHEMALESS PERMISSIONS
FOR select WHERE published = true OR user = $auth.id
FOR create, update WHERE user = $auth.id;
-- Requêtes en temps réel
LIVE SELECT * FROM person WHERE age > 25;
Concepts clés
- Identifiants d'enregistrement :
table:id(par ex.,person:alice) -- citoyens de première classe, pas besoin de JOIN - Multi-modèle : Document + Graphe + Vecteur + Séries temporelles + Géospatial dans une seule base de données
- Opérateurs de graphe :
->(sortant),<-(entrant),<->(bidirectionnel) - Opérateur KNN :
<|K,EF|>où K = voisins, EF = paramètre de recherche (PAS une métrique de distance) - Moteurs de stockage : mémoire, RocksDB, SurrealKV (voyage dans le temps), TiKV (distribué)
- Extensions WASM : Nouveauté v3 -- écrivez en Rust, compilez en WASM, enregistrez avec DEFINE MODULE
Scripts
# Vérification de l'état de santé
uv run scripts/doctor.py
# Introspection de schéma
uv run scripts/schema.py introspect
# Vérifier les mises à jour en amont
uv run scripts/check_upstream.py
Notes de sécurité
- Les exemples utilisent
root/rootuniquement pour le développement local. Utilisez des identifiants limités en production. - Les scripts se connectent uniquement aux points de terminaison spécifiés par l'utilisateur. Aucun appel réseau tiers.
- Les noms de table sont validés par rapport à
[a-zA-Z_][a-zA-Z0-9_]*avant l'interpolation de requête. - Préférez les installations via gestionnaire de paquets ou conteneur plutôt que les installateurs par script shell distant.