银行业的 noSQL ACID 和一致性

dbJ*_*ohn 6 schema nosql

我们正在构建一个实时银行平台和应用程序。

我们主要关注的是跨多个数据库服务器的数据的安全性和一致性。我们需要事务,我们不能承受断电和丢失数据的风险(我说的是 MongoDB)。我们的次要关注是架构 - 为我们的应用程序租户用户提供的功能。

我们还想避开大型数据库上的模式更新地狱。我们租户的自定义架构是可选的,但非常可取。

我们是非常重的 AJAX 前端,我们的后端是完整的 nodejs。我们做了很多 JSON 数据处理。

我们应该使用 MySQL 吗?对于我们的案例,是否有任何 noSQL 解决方案(也许是 CouchDB?)?

感谢您抽出宝贵时间回答这个问题!

Dav*_*ett 8

据我所知,没有承诺 ACID 交易的“nosql”数据库,因此对于银行业务而言,它们不是初学者。引用一致性支持通常也不在其关键特性集中。

mySQL 在使用 innodb 表时声明 ACID 事务,但我相信有一些注意事项可能会导致显示阻塞(其他表类型的任何混合,包括有时用于复杂逻辑中的中间结果的内存表,都会破坏 ACID例如合规性)。

如果您正在查看这些选项是因为它们是免费的,那么请考虑提供 ACID 事务的 postgres,甚至包括进行架构更改的事务。但请考虑您的支持 SLA:如果这是一个需要高可用性的系统(并且“实时”和“银行”这两个词表明它是),那么我建议您签订支持合同,以防出现超出您理解范围或无法修复的问题. 这将是相当昂贵的,一旦你谈到那种钱,你至少也可以考虑商业数据库服务器。

最后一点与任何特定数据库无关:确保为完整的 ACID 行为选择了正确的选项。许多系统默认设置弯曲隔离部分,因为保证完全隔离通常需要序列化,这会显着影响并发操作的性能。无论您选择什么 DBMS,请确保您了解其隔离/序列化选项(如“SET TRANSACTION ISOLATION LEVEL”和 MSSQL 中的相关指令)以及它们如何相互交互。