Difference between revisions of "Database backends"

From Minetest Wiki
Jump to navigation Jump to search
(Remove some misconceptions about sqlite3)
Line 15: Line 15:
 
|-
 
|-
 
| SQLite3
 
| SQLite3
| style="background-color: #FFB;" |
+
| style="background-color: #9F9;" |
'''Acceptable'''
+
'''Good'''
 
| style="background-color: #FFB;" |  
 
| style="background-color: #FFB;" |  
'''Acceptable''' ''(db can corrupt if accessed while open)''
+
'''Acceptable''' ''(problems can arise with concurrent accesses)''
 
| style="background-color: #9F9;" |
 
| style="background-color: #9F9;" |
'''Very good''' ''(supported by any Minetest version)''
+
'''Very good''' ''(always supported)''
 
|-
 
|-
 
| LevelDB
 
| LevelDB
Line 32: Line 32:
 
| Redis
 
| Redis
 
| style="background-color: #9EF;" |
 
| style="background-color: #9EF;" |
'''Very good''' ''(most data is always kept in RAM)''
+
'''Very good''' ''(data kept in RAM)''
 
| style="background-color: #9F9;" |
 
| style="background-color: #9F9;" |
 
'''Good'''
 
'''Good'''
 
| style="background-color: #FAA;" |
 
| style="background-color: #FAA;" |
'''Bad''' ''(needs a running Redis server)''
+
'''Inconvenient''' ''(redis server required)''
 
|-
 
|-
 
| Dummy
 
| Dummy
 
| style="background-color: #9EF;" |
 
| style="background-color: #9EF;" |
'''Very good''' ''(all data is always kept in RAM)''
+
'''Blazing fast'''
 
|  |
 
|  |
 
'''N/A''' ''(nothing is saved to disk)''
 
'''N/A''' ''(nothing is saved to disk)''
Line 56: Line 56:
 
=== LevelDB ===
 
=== LevelDB ===
  
LevelDB is mostly used on servers because of its improved reliability and the ability to use more than 4 GB of space. You need to install it additionally.
+
LevelDB is mostly used on servers because of its improved reliability and possibly speed. You need to install it additionally.
  
 
=== Redis ===
 
=== Redis ===

Revision as of 19:27, 5 November 2016

Minetest supports several database backends. This page provides a comparison of all 3 (actually 4, but the dummy backend generally isn't useful) backends.

The database backend is set using the backend setting in world.mt.

If you want to migrate a world to a new backend, use minetestserver --migrate <name of new backend> --world <path to your world directory>.

Comparison table

Backend Speed Reliability Compatibility with builds
SQLite3

Good

Acceptable (problems can arise with concurrent accesses)

Very good (always supported)

LevelDB

Good

Good

Mostly supported

Redis

Very good (data kept in RAM)

Good

Inconvenient (redis server required)

Dummy

Blazing fast

N/A (nothing is saved to disk)

N/A (nothing is saved to disk)

The Compatibility with builds column is only relevant if you want to distribute the worlds.

SQLite3

SQLite3 is the default backend for all Minetest worlds, it is supported by every Minetest build and is therefore the standard database format that is used to distribute worlds.

LevelDB

LevelDB is mostly used on servers because of its improved reliability and possibly speed. You need to install it additionally.

Redis

Redis support was added to Minetest in April 2014, redis is mainly useful for servers as it allows multiple worlds to be stored in one redis instance. You need to install it additionally (libhiredis library).

Information about setting up a redis server can be found here: http://redis.io/topics/quickstart

world.mt settings for Redis

redis_address -- The IP or hostname of the redis server.

redis_port -- The port of the redis server. Optional, default: 6379

redis_hash -- Hash where the MapBlocks are stored in, if you want multiple worlds in one redis instance this needs to be different for each world. If you don't need any hash, you can write IGNORED.

Dummy

A dummy database backend, which stores all MapBlocks in RAM without saving them and will most likely not be of any use for you.