Database:
All server related data should be saved in MySQL tables.
As said before, MySQL is one of the best solutions for saving and managing data.
Using another type of file storage like XML or json files will make a lot harder to alternate data in the future.
Just keep in mind that static data, like items, skills or NPCs, should be loaded at the start of the server once.
Known EDW bad practice:
For simplicity reasons character ids are not used as keys in the database.
We use the player name to link information to specific player.
Object ids change each time the player enters the game or an id is requested.
Also since we do not constantly run queries, there is no actual performance downside.
Player deletions:
A player is never deleted, his name and related references are renamed to old name + unix timestamp.
This enables us to undelete the character at any given later time.
Also the space required for player data is very small considering the current hard drive space capacities.
"Since unique ids are represented by a long value do not worry for running out of ids."