我知道nodeJs架构基于单个Thread,它是事件驱动的模型。实际上直接在nodeJs App上我们不必关心同一个变量的并发写入和读取(告诉我,如果我错了)。但我现在想知道与nodeJs App交换的数据库行(MySQL)上的并发访问。那么如何在我的应用程序上实现一致性状态。 PS:一些代码示例会很好。谢谢
如何使用MySQL作为数据库从nodeJs服务器上的多个用户实现安全的读写操作(例如,基本递增值)以避免不一致状态?
数据库一致性完全是关于RDBMS如何实现Atomicity, Consistency, Isolation, and Duration (ACID).这与node.js程序中的并发性不同。
如果要增加数据库表中某行的值,可以将此查询用于数据库。
UPDATE statistics SET counter = counter + 1 WHERE item = 'someItemId';
您需要从node.js MySQL API中的相应方法调用发出查询。
即使许多不同的node.js(或Java,或php,或其他)程序在数据库上同时运行这种查询,结果仍然是一致的。 RDBMS隐式地将这种查询包装在transaction中,确保它一旦启动就运行完成。这就是RDBMS的一致性。
ACID的详细解释远远超出Stack Overflow答案的范围。