Jump to content
  • Advertisement
Sign in to follow this  
rzcodeman

fast data access for MMOGs

This topic is 4871 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Wordware publications ,programming multiplayer games is a good book for MMOG developers. in chapter 2 the author discuss about MySql . anubody used MySql for that purpose?

Share this post


Link to post
Share on other sites
Advertisement
Yupp. We used MySQL as the backend for an MMORPG that shipped across Asia and recently launched in the US. MySQL is pretty efficient, deals okay with the size of data we packed it with (that's to say, we didn't keep mesh, texture or audio data, but kept a lot of the back-end player information in it). Data was cached and unpdated every time the player left a scene, so it's not like every logical update involved running of the SQL Server.

Best of all, it's free! :) You don't really want to look at the costs of the bigger databases from people like IBM, and Access is... somewhat insufficient.. :D

Allan

Share this post


Link to post
Share on other sites
We use MySQL in production; we're happy. We also have interfaces to other databases for customer choice, but chose MySQL for our own use.

Share this post


Link to post
Share on other sites
I believe DAOC only uses MySQL for certain low performance things, and uses flat files for the main stuff.

I have a question about MySQL though... when doing game development I have used this in my mini mmorpg with good results. I have also talked with others who have used it successfully even in commercial engines.

However, in business programming, this seems to be the complete opposite. People seem to always stick with SQL Server, and the other big guys... in fact the only free DB that I see gets any respect is Postgres.... You aren't even allowed to mention MySQL on #sql in efnet... the people in there are all business developers and I have spoke with them about it.. apparently there is a lot of data integrity issues with MySQL...

Which makes me wonder, why haven't I heard anything about these serious issues with MySQL before in the game development world? Have any of you guys ever run into these problems? From what I heard they are pretty serious... one guy i talked to has to run a repair table script every minute to keep his data in tact.... I understand that MySQL provides speed over features, which for games, speed is much more important then having stored procedures (although they are in MySQL now, just an example [grin])... but with such serious data integrity issues, how could it be used so much?

Share this post


Link to post
Share on other sites
Quote:
Original post by graveyard filla
but with such serious data integrity issues, how could it be used so much?

Have you noted the cost of the Microsoft or Oracle RDBMS packages?

Share this post


Link to post
Share on other sites
With MS or Oracle you're basically pre-paying for the ability to call up tech support. If you're a big enough customer you might even get them to ship a developer to you if you have problems. With MySQL you're pretty much on your own.

MS and Oracle are also "safe" choices. Nobody gets fired for going with them even if there are problems.

MySQL also doesn't come with as many other tools "out of the box". i.e. although there's a rough equivalent to Query Analyzer for MySQL you have to go find it.

Share this post


Link to post
Share on other sites
Quote:
apparently there is a lot of data integrity issues with MySQL...


There WERE issues with older versions -- those have been fixed for quite a while now, AFAICT. (Assuming you go with the right kind of table storage)

Also, MySQL allows you to re-play the rollforward logs, so that you can have a database checkpoint, and put the roll-forward logs on a separate physical device, so that if you lose your table space, you can restore the backup, and roll forward the logs, and have an up-to-date database. PostgreSQL actually doesn't allow you to do this yet (although I hear they're working on it), which makes it much less suitable for online use.

Now, nobody should be putting MySQL, or Oracle, or anything else that hits the disk in the middle of their simulation loop. If you need data from a database (or disk, or some remote machine), you should be prepared to keep simulating without the data, and then do whatever you need to do once an ascynchronous request for the data has completed. Any other design would cause significant possible lag issues. To do asynchronous communication with MySQL, you have to either build your own wrapper library that talks to their synchronous client library, or you have to write your own client library that talks the TCP wire protocol, in an asynchronous way. (We did the latter.)

Share this post


Link to post
Share on other sites
In the 4 major projects I've worked on, 2 used MySQL and 2 use Postgres.

In my personal opinion I prefer Postgres, as I've found MySQL to not be as realiable.

It's all down to resources and what your databases need to handle though.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!