Database backends/fr
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.