Skip to content

Change to a better way to define transactions #5

@shuaimu

Description

@shuaimu

Currently a transaction in the system is written in dozens of hard-coded c++ functions, each of which is chopped by hand and contains a lot of function calls that should not appear in a transaction definition. This makes it very hard for maintenance and even harder to write new benchmark (even a much simpler one). This is probably why we did not manage to give the stock TPC-C benchmark before camera-ready. If we are going to do the stock TPC-C and other benchmarks such as TPC-E and SEATS in the future. So we need a proper way to write transaction definition before going any further!

I am thinking using coroutine plus macro-based (or other pre-compiling translation) annotations. This way we can make our codes neat, meanwhile we can still run the transaction efficiently in a C++ runtime. Moreover, it fits well with our single-execution model, giving us control at the possible blocking points (such as a lock in two-phase locking).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions