English 中文(简体)
What is a good option for a Non-Blocking "Database" (Using a TCP Socket Server)
原标题:

In short I m creating a socket server so I can add multiplayer support to my Flash game (Using Actionscript 3.0 Binary Socket on the Client-End).

I decided to go with Python since I m the sole developer of the game/server and this will be my first non-blocking socket server. I was going to use Twisted but I deiced that I would use Python s asyncore (Asynchronous socket handler).

If I m not mistaken connecting to a traditional database is a Blocking process. Since I m trying to make this a non-blocking server I m curious as to what solutions might be available to save permanent game related data?

最佳回答

I suggest you use any DB you like (sqlite comes with Python and will probably serve you well!): just have a dedicated thread that accesses said DB, taking requests from a Queue (and using another Queue, passed in as part of the request, to return results if needed). Threads aren t so bad if you have a small number, and they never share access to any structure or system that isn t read-only, communicating only by queues (which are intrinsically thread-safe).

问题回答

Blocking (in traditional database terms, it s "locking") is inevitable if you want any form of consistency in your data.

Consistency as in "it is impossible for two gamers with distinct scores to both be declared as the winner".

Reducing the locking to a minimum is precisely one of those things in database design that turn it into an art form you (perhaps alas) only get to master after having screwed up so many times.





相关问题
what is wrong with this mysql code

$db_user="root"; $db_host="localhost"; $db_password="root"; $db_name = "fayer"; $conn = mysqli_connect($db_host,$db_user,$db_password,$db_name) or die ("couldn t connect to server"); // perform query ...

Users asking for denormalized database

I am in the early stages of developing a database-driven system and the largest part of the system revolves around an inheritance type of relationship. There is a parent entity with about 10 columns ...

Easiest way to deal with sample data in Java web apps?

I m writing a Java web app in my free time to learn more about development. I m using the Stripes framework and eventually intend to use hibernate and MySQL For the moment, whilst creating the pages ...

join across databases with nhibernate

I am trying to join two tables that reside in two different databases. Every time, I try to join I get the following error: An association from the table xxx refers to an unmapped class. If the ...

How can I know if such value exists in database? (ADO.NET)

For example, I have a table, and there is a column named Tags . I want to know if value programming exists in this column. How can I do this in ADO.NET? I did this: OleDbCommand cmd = new ...

Convert date to string upon saving a doctrine record

I m trying to migrate one of my PHP projects to Doctrine. I ve never used it before so there are a few things I don t understand. In my current code, I have a class similar to this: class ...

热门标签