Database backends/fr

From Minetest


Un backend de base de données est une interface entre le serveur Minetest et la base de données. Il est chargé d'organiser, d'écrire (généralement sur le disque) et de lire les données concernant la carte. Ainsi, pour changer le format dans lequel est enregistré la map, il suffit de modifier le backend de base de données.

Minetest supporte plusieurs backends de base de données. Cette page fournit une comparaison des quatre backends (en fait 5, mais le backend dummy est généralement inutile).

Le backend de base de donnée est spécifié par le réglage backend dans le world.mt.

Si vous voulez changer le backend d'un monde (en convertissant le format de la carte), utilisez minetestserver --migrate <nom du nouveau backend> --world <chemin d'accès au dossier du monde>.

Tableau de comparaison

Backend Rapidité Fiabilité Compatibilité avec les compilations
SQLite3

Acceptable

Acceptable (la BDD peut être corrompue si vous l'accédez alors qu'elle est ouverte par Minetest)

Excellente (supporté par n'importe quelle version de Minetest)

LevelDB

Bonne

Bonne

Supporté par la plupart des versions

Redis

Excellente (la majorité des données est tout le temps consevée dans la RAM, attention aux cartes volumineuses)

Bonne

Mauvaise (nécessite un serveur Redis en fonctionnement permanent)

PostgreSQL

Excellente (les données les plus souvent consultées sont en mémoire, les autres accessibles rapidement)

Excellente

Mauvaise (nécessite un serveur PostgreSQL en fonctionnement permanent)

Dummy

Excellente (toutes les données sont conservées dans la RAM)

N/A (rien n'est stocké sur le disque)

N/A (rien n'est stocké sur le disque)

La colonne Compatibilité avec les compilations n'est utile pour vous que si vous souhaitez redistribuer votre monde.

SQLite3

SQLite3 est le backend par defaut de tous les mondes Minetest, il est supporté par la totalité des versions de Minetest, et est par conséquent le format de base de donnée standard qui est utilisé pour redistribuer les mondes.

LevelDB

LevelDB est le backend recommandé pour les serveurs, en raison de sa fiabilité améliorée et sa capacité d'utiliser plus de 4Go d'espace disque. Vous devrez l'installer en plus.

Redis

Le support Redis fut ajouté à Minetest en avril 2014, il est principalement utile pour les serveurs car il permet à plusieurs mondes d'être stockés dans une même instance Redis. Vous devrez l'installer en plus (bibliothèque libhiredis).

Des informations pour mettre en place un serveur Redis peuvent être trouvées ici : http://redis.io/topics/quickstart

On notera que le backend Redis peut être utilisé pour permettre à des programmes de s'interposer entre le système de fichiers et le serveur Minetest de manière transparente pour ce dernier (en communiquant avec le serveur Minetest avec un protocole Redis, et en inscrivant sur le disque les données dans un format standard). Ces programmes peuvent ainsi lire et traiter en temps réel les modifications dans la base de données. C'est ainsi que fonctionne, notamment, le mapper MTSatellite.

Réglages du world.mt pour Redis

redis_address -- L'adresse du serveur Redis (nom de domaine ou IP).

redis_port -- Le port du serveur Redis. Optionnel, par défaut 6379

redis_hash -- Hash dans lequel sont stockés les MapBlocks. Si vous voulez plusieurs mondes dans une seule instance Redis, il doit être différent pour chaque monde. Si vous n'en avez pas besoin, vous pouvez mettre IGNORED.

PostgreSQL

Le support Postgresql fut ajouté à Minetest en mai 2016, il est principalement utile pour les serveurs car il permet à plusieurs mondes d'être stockés dans un même service PostgreSQL au sein de plusieurs bases de données.

PostgreSQL offre une excellente alternative à Redis. Il ne stocke pas toutes les données en mémoire, seules les données fréquentes y sont et le stockage des données PostgreSQL est extrêmement robuste. De plus vous pourrez interfacer facilement un site web sur votre base de données.

Bien que les versions anciennes de PostgreSQL soient supportées, il est recommandé d'utiliser une version 9.5 au minimum.

Pour avoir de meilleures performances du backend PostgreSQL avec vos serveurs Minetest, assurez vous de configurer le fichier postgresql.conf de PostgreSQL avec un minimum de 512MB pour son shared_buffer dans un maximum de 50% de la mémoire disponible sur votre machine.

Réglages du world.mt pour PostgreSQL

pgsql_connection -- Chaîne de connexion au serveur PostgreSQL | host=<db_host> user=<db_user> password=<db_password> dbname=<db_name>

Dummy

Un backend de base de données dummy (littéralement "mannequin") a été créé, qui enregistre tous les MapBlocks dans la RAM sans les inscrire sur le disque (ils ne seront pas conservés après l'arrêt du serveur) et qui sera sans doute parfaitement inutile pour vous. Il peut être utilisé par les développeurs pour effectuer des tests.