# Bases de données

> Créez une base Postgres, Redis, MySQL ou MongoDB, connectez-vous-y et lancez des requêtes. Postgres a aussi les snapshots et les branches.

Source: https://gheima.ma/fr/docs/databases

Gheima gère pour vous Postgres, Redis, MySQL et MongoDB. Chaque base de données a ses propres identifiants, chiffrés au repos.

1. Créer — Choisissez Postgres, Redis, MySQL ou MongoDB.
2. Provisionnement — L’hôte affiche « Provisionnement… » jusqu’à ce qu’elle soit prête.
3. Onglet Connexion — Révélez l’hôte, le port, l’utilisateur et le mot de passe.
4. Votre app — Collez une chaîne de connexion prête à l’emploi.

### Créer une base de données

1. **Nouvelle base** — Sur la page Bases de données, cliquez sur « Nouvelle base de données ».
2. **Nommez-la et choisissez un moteur** — Choisissez Postgres, Redis, MySQL ou MongoDB. Une base de données est une ressource autonome du compte. Liez-la plus tard à un service pour y injecter ses variables de connexion.
3. **Attendez le provisionnement** — L’hôte affiche « Provisionnement… » jusqu’à ce que la base soit prête.

### Se connecter

Ouvrez l’onglet Connexion et cliquez sur « Afficher les détails de connexion » (action enregistrée dans votre journal d’audit). Vous voyez l’hôte, le port, l’utilisateur et le mot de passe, ainsi que des extraits prêts à l’emploi pour un fichier .env, Node.js et la CLI (psql, mysql, mongosh, redis-cli).

### Préfixe de clé (Redis)

Un Redis managé n’a pas de base à nommer. Les comptes partagent une même instance Redis, séparés par une ACL limitée à votre propre préfixe, affiché sous « Préfixe de clé » sur la page de la base. Toute clé écrite par votre application doit commencer par ce préfixe. Une clé sans préfixe est refusée avec NOPERM à l’exécution et non à la connexion, ce qui ressemble à un bug de permissions dans votre code. La plupart des clients peuvent ajouter le préfixe pour vous : définissez-le une fois à la construction du client plutôt qu’à chaque appel.

```
const redis = new Redis(process.env.REDIS_URL, {
  keyPrefix: 'u_abc123:', // la valeur affichée sur la page de la base
});
```

ioredis applique le préfixe à chaque commande. Si votre client ne le permet pas, préfixez les clés vous-même.

> Note: Si votre application écrit des clés que vous ne contrôlez pas, comme le fait BullMQ, utilisez plutôt une file managée. Elle est provisionnée avec les permissions de canaux dont BullMQ a besoin.

### Console de requêtes

L’onglet Données ouvre une console pour les quatre moteurs. Postgres et MySQL ont aussi une grille Explorer sur vos tables. Exécutez des instructions avec le bouton Exécuter (⌘/Ctrl+Entrée), formatez le SQL et exportez les résultats en CSV ou JSON.

```sql
SELECT * FROM your_table LIMIT 100;
```

Pour MongoDB, passez une requête JSON ; pour Redis, une commande comme GET your:key.

### Réinitialiser les identifiants

Utilisez « Régénérer le mot de passe » sur la page Bases de données, ou « Réinitialiser le mot de passe » dans Paramètres, pour renouveler le mot de passe. Les connexions existantes sont coupées. Les services en cours d’exécution liés à la base sont redéployés avec les nouveaux identifiants. Tout autre client doit se reconnecter avec le nouveau mot de passe.

### Snapshots et branches (Postgres)

- Instantanés : faites une sauvegarde à la demande avec « Créer un instantané » et restaurez-la plus tard.
- Branches : copiez le schéma et les données d’une base dans une branche isolée, par exemple pr-123, puis réinitialisez-la ou supprimez-la.

> Note: Les snapshots et les branches sont pris en charge pour les bases Postgres.

### Extensions (Postgres)

Ouvrez les Paramètres d’une base Postgres pour activer des extensions sélectionnées en un clic. pgvector ajoute le type de colonne vector pour les embeddings et la recherche par similarité.

```sql
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
INSERT INTO items (embedding) VALUES ('[1,2,3]');
```

Après activation de pgvector, créez une colonne vector et interrogez par distance.

### Ports par défaut

### Sauvegardes planifiées & rétention (Postgres)

Dans Paramètres, définissez un planning cron pour prendre des instantanés automatiques d’une base Postgres. La rétention ne garde que les N instantanés les plus récents et supprime les instantanés automatiques plus anciens, entrée et sauvegarde stockée comprises. Tout instantané, manuel ou automatique, se restaure sur place en un clic.

### Pool de connexions (Postgres)

Révélez les détails de connexion d’une base Postgres pour obtenir aussi une chaîne de connexion mutualisée passant par PgBouncer (pooling transactionnel). Utilisez l’URL mutualisée pour les apps ouvrant de nombreuses connexions courtes (serverless, forte concurrence) ; l’URL directe pour les sessions nécessitant des requêtes préparées ou LISTEN/NOTIFY.

- `Postgres`: 5432
- `MySQL`: 3306
- `MongoDB`: 27017
- `Redis`: 6379

Une base peut appartenir à un projet ou être autonome. Une branche est elle-même une base complète que vous pouvez connecter, réinitialiser ou supprimer indépendamment de sa source.

> Result: Votre app dispose d’une base managée à laquelle elle se connecte, qu’elle interroge, sauvegarde et branche, sans que vous gériez le serveur.

---

All docs: https://gheima.ma/fr/docs.md
