Currently rewriting the whole static terrain-grid-structure. The World is just a small container, containing an x number of currently-visible top-level terrain, loaded from the database. When the player moves, new terrain is added, and either loaded from the database or newly created and added to the database for future reference. The database API is written such that it does not matter whether it's from a database or coming from a server.
The terrain is all linked together through vectors of "neighbour" pointers, so the terrain ID needs to be deductible from its relative position in the world. It's possible to determine it like (1000 * y) + x, but that implies a maximum nr of x of 1000, which is not infinite, by far. So x and y relative to terrain 0 needs to be stored, giving a max x of int64 and a max y of int64. As each of those top-terrains contains a fairly large piece of land, that should be enough.
.. or is it?
Calculation:
int64 has a range of -9,223,372,036,854,775,808 through positive 9223372036854775807. One piece of terrain is 343 x 343 X 343 m, although I intend to make them larger to allow for mountains higher than 343 m (2401 m should be high enough), or allow vertical stacking of terrain where necessary.
This means the world can be 3163616608641188101 km wide, 3163616608641188101801 km long, and 3163616608641188101801 km high, or 21147452563 AU. This is enough to cover the entire GALAXY in terrain. Really. It might (MIGHT?) be overkill, but when I say infinite, I want to be ready.