ocixDB-RQL

RQL - Reactive Query Language

@knw @ver-003 @date-2025-10-21 @twerse

**Version :** 0.0.2

**Date :** 2025-10-21

**Tags :** `@RQL` `@Query` `@Reactive` `@Stream` `@Language` `@orix-rql`

🎯 Vue d'ensemble

**RQL (Reactive Query Language)** est le langage de requête natif d'OrixDB, combinant requêtes RSON, SQL et flux RSVT temps réel.

**Bibliothèques clés :** orix-rql, orix-optimizer, orix-join

> **Extension future :** **FractalQuery (FQ)** est une extension expérimentale de RQL optimisée pour les dimensions fractales auto-générées (voir [10-Orix-Fractal-Dimensions.md](./10-Orix-Fractal-Dimensions.md)). RQL reste le langage standard ; FQ ajoute des opérateurs spécifiques pour navigation multi-dimensionnelle.

📚 Bibliothèques Utilisées

BibliothèqueFonctionLignes
**orix-rql**Reactive Query Language - Langage de requête mixte SQL+Graph+Spatial~290
**orix-optimizer**Optimiseur de requêtes~303
**orix-join**Opérateurs de jointure~300
**orix-parser**Parser SQL/RQL~500
**orix-preparser**Convertisseurs de formats~300

📖 Syntaxe

### Requête Temporelle

select * from @dim(time > now()-5m)

### Requête Spatiale

select * from @seg(SEG6.montreal.2025) 
where distance(coordinates, point(45.5, -73.6)) < 1000

### Requête Réactive (Abonnement)

subscribe to users 
where changes.field = 'status'
emit on_change

⚙️ API Rust

use orix_rql::RqlQuery;

let query = RqlQuery::parse(r#"
    select name, age from users
    where age > 30
    order by age desc
    limit 10
"#)?;

let results = orix.execute_rql(query)?;

🔄 Intégration avec twe-query

### Router Universel

// twe-query : point d'entrée unique pour tous les formats
use twe_query::TweQuery;

let query_engine = TweQuery::new()
    .with_cache_enabled(true)
    .with_benchmark(true);

// Auto-détection et routage
let result = query_engine.execute("SELECT * FROM users")?;  // SQL → RQL
let result = query_engine.execute("@seg(SEG6.montreal)")?;  // RQL direct

### CLI twe-query

# Exécution directe
twe-query "SELECT * FROM users WHERE age > 30"    # SQL → RQL → Orix
twe-query "@seg(SEG6.montreal) => select(buildings)"  # RQL direct
twe-query data.geojson                             # GeoJSON → RSVT → Orix³

# Avec cache et métriques
twe-query --cache --stats query.sql

### Performance

Opérationtwe-queryRQL DirectGain
**Détection format**<1µsN/AAuto
**Cache hit**10ms100ms10×
**SQL → RQL**200ms/1000N/AConversion

📚 Prérequis

- [01-Orix-Architecture.md](./01-Orix-Architecture.md)

- [../05-PARSERS/05-twe-query.md](../05-PARSERS/05-twe-query.md)

**Dernière mise à jour :** 2025-10-21

**Maintenu par :** Équipe Twerse Core

**Version ORIX :** 0.0.2

← index