什么是非阻塞“数据库”(使用TCP套接字服务器)的好选择

时间:2009-11-15 22:32:22

标签: python database sockets

简而言之,我正在创建一个套接字服务器,因此我可以为我的Flash游戏添加多人游戏支持(在客户端使用Actionscript 3.0二进制套接字)。

我决定使用Python,因为我是游戏/服务器的唯一开发者,这将是我的第一个非阻塞套接字服务器。我打算使用Twisted,但我表示我会使用Python的asyncore(异步套接字处理程序)。

如果我没弄错,连接到传统数据库是一个阻塞过程。由于我正在努力使其成为一个非阻塞服务器,我很好奇可以使用哪些解决方案来保存永久游戏相关数据?

2 个答案:

答案 0 :(得分:6)

我建议你使用你喜欢的任何数据库(sqlite附带Python,并且可能会很好地为你服务!):只需要一个访问所述数据库的专用线程,接收来自Queue的请求(和使用另一个Queue,作为请求的一部分传入,以便在需要时返回结果)。如果你的数字很小,那么线程并不是那么糟糕,它们永远不会共享任何非只读的结构或系统的访问权限,只能通过队列进行通信(本质上是线程安全的)。

答案 1 :(得分:1)

如果您希望数据具有任何形式的一致性,则阻塞(在传统数据库术语中,它是“锁定”)是不可避免的。

一致性如同“两位具有不同分数的玩家都不可能被宣布为获胜者”。

将锁定降低到最低限度正是数据库设计中的一个因素,它将它变成一种艺术形式,你(也许是唉)只是在搞砸了很多次之后才能掌握。