我不是在谈论真金白银交易是否有可能使用node.js和noSQL db进行事务处理?
我工作的这个项目是一个游戏,玩家之间相互交易的东西。这基本上是一个交易过程,玩家A给了玩家B 10粒去交换30头奶牛,你明白了。
但是因为它是互动的,并且有很多玩家同时在类似聊天室的环境中进行随机交易,我想知道是否有可能通过node.js
来做这样的事情,但我看到了问题。
我来自数据库背景,其中处理交易和rollback
和commit
的性质是必要的,以维护数据库的健康状态。但如果我们谈论node.js
加mongoDB
(或任何其他的noSQL DB),这肯定是一个完全不同的思路,但我不明白它是如何处理交易的,因为只有两方应该参与而不诉诸某种形式的锁定,但肯定不是什么node
。
我还没有找到任何东西,但这并不令我感到意外,因为node.js
太新颖了。
UPDATE我意识到交易的机制 - 特别是银行风格的交易,但这不是同一回事。我可能没有说清楚,但问题是,玩家B正在向买家群体推销某些东西。
这意味着虽然玩家A在客户端发起购买指令,但也有可能大约在同一时间玩家C D或E也点击购买相同的牛。
现在在正常的交易中,预计至少第一个获得记录级别表的人至少阻止其他方在该时间点继续进行。
然而,节点的使用性质,特别是其速度,并发处理和显示实时更新数据库的使用意味着我可以轻易想象,最慢的人(我们正在说毫秒)获胜。
例如玩家A在与玩家C同时发起购买。玩家交易完成并且将银币支付给玩家B,并且将牛分配给数据库上的玩家A.一毫秒后牛被分配给玩家C.
我希望能更好地解释这个问题。
这可能很有意思,但我们已经采取了另一种方式来推进项目,因为发布该问题后对此主题知之甚少。 – T9b 2012-12-30 13:46:17
有道理 - 那么,如果你想查看它,我昨晚完成了第一个水线的发布:http://github.com/mikermcneil/waterline 它设置为使用dirtydb,一个内存数据库。我的下一步是创建一个mongodb适配器,然后创建mySQL(mySQL适配器将使用mySQL的内置事务) – mikermcneil 2012-12-30 23:46:25