MarkLogic ACID 和可扩展性

MarkLogic ACID and scalability

我是 NoSQL 和 MarkLogic 的新手。 我的理解是 MarkLogic 具有多文档 ACID 的近线性可扩展性。

在 READ 的情况下,MarkLogic 如何通过无共享架构实现近乎线性的可扩展性?

在针对数十个 nodes/forests 的更新的情况下,我猜锁定将是一个巨大的开销。

MarkLogic是如何处理以上问题的?

我刚才写了a blog post on isolation and how this works

要点是我们在 MVCC 时间戳进行无锁读取,并且我们在更新事务期间以类似于关系 DBMS 系统的方式锁定记录。对于跨分区事务,我们使用两阶段提交。

锁本身不会带来巨大的开销,但与任何 DBMS 一样,如果您正在执行大量非独立的大型并发更新,则可能 运行 陷入锁定问题。我们对此进行了监控和死锁 detection/resolution。

如果您正在进行大型更新并希望在同一域上序列化并发事务以避免死锁,您还可以使用谓词锁 (see the blog post) 来缓解这种情况。