Mirajv1.0
FR

2. Installation

2.1 Prérequis#

MIRAJ est distribué sous forme de binaires prêts à l'emploi pour Windows 64 bits (éditions Entreprise et Express), sans dépendance externe à installer. Choisissez l'archive correspondant à l'édition souhaitée (voir 1.3) : elle contient miraj-server.exe, miraj-cli.exe et, pour l'usage embarqué depuis une application Delphi, C++ ou tout langage capable de charger une DLL C, miraj.dll.

Une bibliothèque 32 bits (miraj.dll compilée pour des applications Win32) est disponible séparément pour les applications qui en ont besoin ; l'exécutable 64 bits par défaut ne peut pas être chargé par un processus 32 bits.

Aucune installation au sens d'un programme d'installation n'est nécessaire : copiez les exécutables où vous le souhaitez et lancez-les. Le dossier depuis lequel miraj-server ou miraj-cli est lancé n'a pas d'importance : c'est le dossier de données (--root) qui détermine où vivent vos bases.

Pour compiler MIRAJ vous-même (autres plateformes, débogage, contribution), voir 2.7.

2.2 Démarrer miraj-server#

miraj-server.exe --root D:\donnees --log

Cette commande ouvre (ou crée s'il n'existe pas) le dossier de données D:\donnees, puis se met à l'écoute sur 127.0.0.1:7007. Le compte root local, sans mot de passe, est créé automatiquement à la première ouverture du dossier.

Options de la ligne de commande#

Toutes les options acceptent un nom insensible à la casse (--Root et --root sont équivalents). miraj-server --help affiche la liste complète.

OptionValeur par défautEffet
--root <dossier>dataDossier de données à ouvrir (créé s'il n'existe pas).
--config <fichier.xml><dossier>/miraj_config.xmlFichier de configuration à utiliser à la place de celui du dossier de données.
--bind <adresse>127.0.0.1Adresse d'écoute du serveur.
--port <port>7007Port TCP d'écoute (--port 0 laisse le système choisir un port libre).
--logdésactivéTient à jour <dossier>/miraj/server.log (erreurs SQL, bugs, incidents du serveur ; les requêtes réussies n'y figurent pas).
--lang <code>enLangue des messages d'erreur des sessions : en, fr, zh, hi, es, ar, pt, ru, de, ja.
--result-buffer <Mo>64Mémoire gardée par connexion pour un client lent à lire son résultat.
--write-timeout <secondes>60Attente maximale d'un client qui ne lit plus son résultat, avant déconnexion (net_write_timeout).
--connect-timeout <secondes>10Délai maximal pour achever la poignée de main d'un client (connect_timeout).
--idle-timeout <secondes>28800 (8 h)Délai maximal entre deux commandes d'un client déjà connecté (wait_timeout).
--lock-wait-timeout <secondes>50Attente maximale d'un verrou de table explicite (LOCK TABLES) avant l'erreur 1205.
--deferred-update ON|OFFONMise à jour différée des UPDATE d'une ligne désignée par sa clé : réévalués au COMMIT plutôt que de prendre la ligne (voir 9. Transactions et concurrence).
--concurrency mvocc|pessimisticmvoccModèle de concurrence : contrôle multiversion optimiste (aucune attente sur les lignes) ou verrous de ligne classiques. Option temporaire, le temps de comparer les deux modèles.
--key-dir <dossier>profil du compte qui lance le serveurDossier des clés du coffre chiffré des comptes, tenu hors du dossier de données (voir 11. Administration du serveur).
--reset-accounts—Recrée le coffre des comptes avec le seul root local, sans mot de passe (utilisé seul, avec --root et éventuellement --key-dir).
--secure-file-priv <dossier>vide (LOAD_FILE désactivé)Seul dossier lisible par LOAD_FILE, pour les comptes ayant le privilège FILE.
--lob-threshold <octets>8192Taille à partir de laquelle une valeur BLOB quitte la table pour le magasin séparé de la table.
--lob-cache <Mo>128Taille du cache de lecture des BLOB externalisés.
--event-scheduler ON|OFF|DISABLEDOFFÉtat du planificateur d'événements au démarrage (DISABLED interdit de l'activer ensuite).
--parallel-threads <n>un par cœurFils que toutes les requêtes du serveur peuvent occuper en tout (édition Entreprise/Cluster ; sans effet en Express).
--save-policy relaxed|statement|periodicrelaxedPolitique de durabilité des écritures (voir 11. Administration du serveur).
--save-interval <millisecondes>5000Intervalle du vidage périodique du journal (save-policy relaxed ou periodic).
--slow-query-logdésactivéActive le journal des requêtes lentes.
--slow-query-log-file <fichier><dossier>/miraj/slow.logFichier du journal des requêtes lentes (l'active aussi).
--long-query-time <secondes>10Durée au-delà de laquelle une instruction est une requête lente.
--max-statement-time <secondes>0 (sans limite)Durée au-delà de laquelle une instruction est abandonnée automatiquement.
--tls-cert <fichier.pem> / --tls-key <fichier.pem>aucunCertificat et clé privée TLS ; le serveur propose alors le chiffrement à la connexion. Ces deux options vont ensemble.
--require-tlsdésactivéRefuse les clients qui ne se connectent pas en TLS (suppose --tls-cert/--tls-key).
--cluster-config <cluster.toml>fichier cluster.toml à côté de l'exécutableFichier de configuration du nœud, édition Cluster uniquement.
--help, -h, /?—Affiche l'usage et quitte.

Chaque option de la ligne de commande peut aussi être fixée durablement dans miraj_config.xml (voir 2.4) ; en cas de conflit, la ligne de commande l'emporte.

2.3 Installer et utiliser miraj-cli#

miraj-cli n'a besoin d'aucune installation particulière : c'est un exécutable autonome qui ouvre directement un dossier de données, sans passer par un serveur réseau.

miraj-cli.exe --root D:\donnees
MIRAJ 1.0.0 Entreprise - tapez \help pour l'aide, \q pour quitter.
miraj>

Options de la ligne de commande#

OptionEffet
--root <dossier>Dossier de données à ouvrir (data par défaut).
--config <fichier.xml>Fichier de configuration à utiliser à la place de celui du dossier de données.
-d <base>Sélectionne une base au démarrage (équivalent à USE <base>).
-e "<SQL>"Exécute l'instruction donnée puis quitte, sans lancer le mode interactif.
--lang <code>Langue des messages d'erreur : en, fr, zh, hi, es, ar, pt, ru, de, ja.
--jsonAffiche les résultats au format JSON plutôt qu'en tableau.
--timingAffiche le temps d'exécution de chaque instruction.
--no-historyNe lit ni n'écrit l'historique des instructions saisies.
<fichier.sql>Exécute le fichier donné puis quitte.

Voir 13. miraj-cli pour la référence complète des commandes du mode interactif (\d, \l, \history, source, etc.).

2.4 Fichier de configuration#

À l'image d'un fichier de configuration classique d'un serveur SQL, MIRAJ lit un fichier XML au démarrage :

  • <dossier de données>/miraj_config.xml — vos réglages, lu au démarrage. S'il n'existe pas encore, MIRAJ en crée un squelette commenté.
  • <dossier de données>/miraj_default.xml — régénéré à chaque démarrage, liste toutes les variables reconnues avec leur valeur par défaut. C'est un document de référence uniquement : il n'est jamais relu par le serveur.

Ordre de priorité, du plus faible au plus fort : valeur par défaut du moteur, puis miraj_config.xml, puis argument de la ligne de commande.

2.5 Organisation du dossier de données#

Le dossier de données (--root) est l'unité d'administration d'un serveur ou d'une console MIRAJ : tout ce qui appartient à une installation y réside.

D:\donnees\
├── miraj_config.xml         (vos réglages)
├── miraj_default.xml        (référence, régénéré à chaque démarrage)
├── miraj\
│   ├── accounts.mra         (coffre chiffré des comptes)
│   ├── server.log           (avec --log : erreurs, bugs, incidents)
│   └── slow.log             (avec --slow-query-log)
└── ma_base\                 (une base = un sous-dossier)
    ├── journal.mrl          (journal d'écriture de la base)
    ├── clients.mrj          (une table = un fichier .mrj)
    └── clients.bmrj         (BLOB externalisés de la table, si présents)
  • Une base = un sous-dossier du dossier de données.
  • Une table = un fichier .mrj dans le sous-dossier de sa base, au format interne MIRA v2.
  • Les valeurs BLOB d'une table dont la taille dépasse --lob-threshold sont conservées dans un magasin séparé, <table>.bmrj, à côté du fichier .mrj.
  • Chaque base a son propre journal d'écriture, journal.mrl, rejoué à l'ouverture si le dernier arrêt n'a pas été propre.
  • Le coffre des comptes (accounts.mra) est commun au dossier de données ; il est chiffré, et sa clé est rangée par défaut hors du dossier de données (voir ci-dessous et 11. Administration du serveur).

2.6 Sécurité par défaut#

  • Écoute locale uniquement. Sans --bind, miraj-server n'écoute que sur 127.0.0.1 : aucune machine distante ne peut s'y connecter tant que vous n'avez pas explicitement choisi une autre adresse d'écoute.
  • Compte administrateur créé au premier lancement. À la création du dossier de données, un compte root local, sans mot de passe, est créé automatiquement ; c'est le seul type de compte habilité à gérer les autres comptes. Donnez-lui un mot de passe dès que possible :
    ALTER USER root@localhost IDENTIFIED BY 'un-mot-de-passe-solide';
  • Clés du coffre des comptes rangées hors du dossier de données, par défaut dans le profil du compte qui exécute le serveur (--key-dir pour choisir un autre emplacement).

Le détail de la gestion des comptes, des privilèges, du chiffrement en transit (TLS) et de la supervision est traité dans 11. Administration du serveur et 10. Comptes et privilèges.

2.7 Compiler depuis les sources#

Cette section s'adresse aux utilisateurs avancés qui veulent compiler MIRAJ eux-mêmes (autre plateforme, débogage, intégration continue).

Prérequis#

  • rustup ; la chaîne de compilation exacte (1.98.1) est installée automatiquement grâce au fichier rust-toolchain.toml du dépôt.
  • Sous Windows, si cargo n'est pas dans le PATH :
    $env:Path = "$env:USERPROFILE\.cargo\bin;$env:Path"

Compiler l'édition Entreprise (multi-cœur)#

cargo build --workspace --release

Compiler l'édition Express (gratuite, mono-fil)#

Les éditions sont choisies par la fonctionnalité Cargo parallel, active par défaut :

cargo build --workspace --release --no-default-features

Vérifier la compilation#

cargo test --workspace
cargo test --workspace --no-default-features
cargo clippy --workspace --all-targets

Démarrer les binaires compilés#

target/release/miraj-server --root D:\donnees --lang fr
target/release/miraj-cli --help

L'édition Cluster se compile avec la fonctionnalité Cargo cluster (cargo build --workspace --release --features cluster) ; voir 12. Cluster et réplication.