apache / ignite

Apache Ignite
https://ignite.apache.org/
Apache License 2.0
4.82k stars 1.9k forks source link

Question: Why is MVCC Being Removed? Are There Unknown Bugs? #11538

Open liupan664021 opened 2 months ago

liupan664021 commented 2 months ago

Hi,

I’ve recently been looking to use the TRANSACTIONAL_SNAPSHOTatomicity mode in Ignite for achieving consistency across key reads, which is dependent on MVCC. I’ve noticed that since version 2.12, MVCC has been deprecated, and it was fully removed in version 2.16.

I have built parts of my project on version 2.15 and I am mainly interested in an embedded memory database scenario that involves using KV, SQL, and Index interfaces for production use. Are there any unforeseen bugs or risks that I should be aware of when using these features in a production environment? Could someone provide insights into the reasons behind the removal of MVCC and any associated risks?

Thanks.

sk0x50 commented 2 months ago

Hi @liupan664021 ,

The main issue with the current MVCC implementation is that it is based on using a single node (the coordinator node of the cluster) for transaction ordering and 2PC protocol for distributed commits. IMHO, this approach is slow and is not scalable by design.

Also, It seems that there are not enough contributors/maintainers willing to support, develop, and improve the feature.

You can find additional details here:

Thanks, S.

liupan664021 commented 1 month ago

Thanks so much for the explanation. @sk0x50

The MVCC feature is quite important for non-KV APIs, including SQL, Index, etc. Is this on Ignite’s roadmap? For example, will version 3.x of Ignite have better MVCC features?

Thanks.