【发布时间】:2012-07-24 03:57:36
【问题描述】:
我说的不是真钱交易
我正在做的项目是一个玩家互相交换东西的游戏。这基本上是一个交易过程,玩家 A 给玩家 B 10 块钱来换取 30 头奶牛,你懂的。
但由于它是交互式的,并且同时有很多玩家,在一个类似聊天室的环境中,所有交易都是随机的,我想知道是否可以用node.js 做这样的事情,但我发现了一些问题。
我来自数据库背景,处理事务和rollback 和commit 的性质对于维护数据库的健康状态是必要的。但是,如果我们谈论的是 node.js 加上 mongoDB(或任何其他 noSQL DB),那肯定是一种完全不同的心态,但我只是不明白它如何处理只有两个各方应该参与而不诉诸某种形式的锁定,但这肯定不是node 的目的。
我还没有找到任何东西,但这并不让我感到惊讶,因为node.js 太新了。
更新 我知道交易的机制——尤其是银行风格的交易,但这不是一回事。我可能没有说清楚,但问题是玩家 B 正在向买家社区出售东西。
这意味着尽管玩家 A 在客户端发起了购买指令,但也有可能大约在同一时间,玩家 C D 或 E 也点击购买同一头牛。
现在在正常事务中,至少第一个获得记录级表锁的人至少会阻止其他方在该时间点继续进行。
但是节点的使用性质,特别是它的速度、并发处理和用于显示实时更新数据库的用途意味着我可以很容易地想象最慢的人(我们说的是毫秒)获胜。
例如,玩家 A 在玩家 C 的同时发起购买。玩家 A 交易完成,Groats 被支付给玩家 B,而奶牛在数据库中被分配给玩家 A。一毫秒后,Cow 被分配给玩家 C。
我希望这能更好地解释这个问题。
【问题讨论】:
标签: node.js transactions nosql