OTServs are open source MMORPGs with a huge community. Mostly all of them have a serious problem: if the server crashes, people can clone items. This is a dirty trick that can be executed because the state of a player is saved to the SQL database when the player logs out. This means the the database is not always in valid state. If 5 different players logged out with the same item, the item would be saved five times on the DB! So a crash would effectively clone the items. The OTServ core is several years old and the main branches still don't provide a solution. As online games, they consist of a world of dynamic data that changes at a very fast pace. There are thousands of online players and millions of registered players. The data is stored in MySQL. There are tables such as players, player_items, player_skills, player_storage and so on, some with millions of rows. I believe the problem could be that overhead brought by SQL makes it impossible to save all the data at the same pace it happens - hundreds of updates per player per second.Why OTServs have that problem, what's the impact of the use of SQL databases on the issue and how could it be solved?
Why OTServs have an item cloning problem if the server crashes?
sql;database design;mysql;scalability;nosql