I’ve wrote a somewhat technical explanation here Pull head out of your A** Development Leaders - #4 by vincie.net
But it comes down to this:
You can’t have a central database that is able to concurrently handle 500.000+, users (I believe new world is already passing the million mark even) for a game. You know how many net events a MMO has? Each action that a player does generates a net event. Moving. Typing. Questing. Inventory. Missions. Etc. Etc.
All of the above has to be stored in the database eventually (not everything all the time, but basically a shit ton of data transactions per second).
Now for your solution to work ideally, you need a central database. Since well you want to be able to play with your character on >any< server. All this server would do is process the net code. Do all the logic processing and then write that to said DB again.
That’s not realistic and there is no database engine to my knowledge that can scale this well and still perform well (and do share some solid data if you do know one because I would like to get my hands on one).
The above is very likely the reason AGS went with smaller databases, per server. (I imagine they’re using a Amazon RDS instance per server but likely even multiple).
“OK but just make a cluster and put it behind a load balancer”
Again, limits. Even hardware load balancers go only so far with concurrency or the amount of connections. And even then you would still have the problem or needing a DB engine that can handle this amount of concurrent data. There is simple no thing that scales that much.
Now. Let’s imagine for a second amazon does actually make this change. Amazon finds a new DB engine or creates one that can handle hundreds thousands, no, millions of concurrent read / writes. And they now have to do a migration.
They now would have to migrate and merge the data of $amount-of-current-servers and while doing that the servers can’t run. That’s going to be already at this moment gigabytes of data.
Yes. Quite trivial… Not.
Now to be clear I’m not making fun of you but it’s a bit more then “trivial” work and has reasons as to why its not the current behaviour.
"but why can’t they just transfer my characters data from this local server to another server when I login? ".
That’s likely what they’re making right now it seems and the exact reason why you cant transfer a character from a server right now (assumption). That said such a process would still take a couple of minutes as you would have to copy data / load it in. Obviously out some failsafe in so people can’t login while the transfer is being done etc.
Again, not trivial.
Source: I am a large scale infrastructure architect and engineer. All of the observations here and assumptions are based on behavior I spotted on the servers so far and the workings deduced from looking at the status pages and how the login flow goes.