Re: How to manage the Multi-Version Concurrency Control (MVCC) in Fabric on time-critical applications


David Enyeart
 

Range queries use a variant of a sorted B-tree and the underlying data files will be in system cache, therefore it will be extremely performant to get the lowest/highest key in a range.


Dave Enyeart

"Mr.Phuwanai Thummavet" ---10/23/2019 05:58:13 AM---I understand your point. In the case of the auction system, nevertheless, how can I get the best cur

From: "Mr.Phuwanai Thummavet" <mr.thummavet@...>
To: Yacov Manevich <YACOVM@...>
Cc: fabric@...
Date: 10/23/2019 05:58 AM
Subject: [EXTERNAL] Re: [Hyperledger Fabric] How to manage the Multi-Version Concurrency Control (MVCC) in Fabric on time-critical applications
Sent by: fabric@...





I understand your point. In the case of the auction system, nevertheless, how can I get the best current price when I do transaction queries. Maybe I have to use the range-based queries to seek the best price every time there is a query? I think that would affect system performance if there are a lot of queries. I also concern about querying time in the case that the system gets massive adoption.

On Wed, Oct 23, 2019 at 4:21 PM Yacov Manevich <YACOVM@...> wrote:
    you don't have to write to the same key.

    You can have each voter / bidder commit to his vote / bid by writing to a separate key that corresponds to its identity, and in the end have all the voters / bidders reveal their votes / bids, and this will not create any MVCC conflicts.



    From:        
    "Mr.Phuwanai Thummavet" <mr.thummavet@...>
    To:        
    fabric@...
    Date:        
    10/23/2019 12:16 PM
    Subject:        
    [EXTERNAL] [Hyperledger Fabric] How to manage the Multi-Version Concurrency Control (MVCC) in Fabric on time-critical applications
    Sent by:        
    fabric@...




    Hi everyone,

    I know that the multi-version concurrency control (MVCC) is used to address double-spending problems in Fabric. However, the MVCC might become one of the most obstacles when designing time-critical applications such as auction and voting systems. On a voting system, for example, two voters commit to voting for the same candidate in the same block-time frame. This results in an invalid transaction for the 2nd voter according to the MVCC.

    My solution to such an issue was to use an off-chain messaging queue system to gather and categorize certain transaction requests from clients. Then, the batches of the categorized transactions were sent to a chaincode to invoke.

    Here are my questions:
    1.        Was my solution suitable for the above example? 
    2.        Does anyone have better solutions?
    3.        Is Hyperledger Fabric suitable for real-time applications such as auction and voting systems?

    Thanks.

    --
    Best Regards,
    Phuwanai Thummavet





--
Best Regards,
Phuwanai Thummavet
Blockchain Architect and Full-Stack Developer



Join fabric@lists.hyperledger.org to automatically receive all group messages.