Skip to content

Instantly share code, notes, and snippets.

@noneback
Created September 10, 2022 15:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noneback/6436c55f22df6cf02c6ac5a14eb8fe3f to your computer and use it in GitHub Desktop.
Save noneback/6436c55f22df6cf02c6ac5a14eb8fe3f to your computer and use it in GitHub Desktop.

Google Summer of Code 2022 Final Work Product


Group 15


Introduction



Overview

Casbin NEO(neo for new engine option), A Casbin-compatible engine. In this project, we restructured the Casbin storage layer, introduced a powerful expression interpreter, and supported transactions executing under the snapshot isolation level.

Documents

Works

Highlights

  • We implemented the volcano executors.
  • All new expression interpreter designed for Neo engine.
  • We introduced MVTO (multi-version timestamp ordering) as the index layer concurrency control protocol
  • We introduced a state-of-the-art radix tree, sync adaptive radix tree

Contributions

PRs

Storage layer

feat(schema): basic framework of schema

chore(examples): add model assets

feat(adapter/badger): add badger adapter

feat(adapter/badger): add managed txn defs

feat(neo/model): add model defs

feat(model): add model serialization

feat(neo/model): add indexColumn

fix(neo/codec): fix index encode bugs

feat(neo/codec): add model decoder

Statistic information

feat(stats): add cmsketch

Executors

feat: introduce executor engine

feat: introduce insert executor

feat(neo/executor): introduce plan builder

feat(neo/executor): add multi-index & index scan executor

refactor(neo/executor): refactor index & multi-index scan executor

Code Reveiws & Related issues

Index

feat: sync adaptive radix tree

MVCC

feat(neo/index): add simple mvto index

Expression

feat(pkg/parser): impl expression eval

refactor(expression/iterator): refactor iterators

feat(pkg/expression): introduce expression subtree pruning

feat(neo/executor): introduce expressions as predicates

Executor

feat(neo): engine code layout

feat: introduce executor engine

test(neo/executor): add tests for insert executor

feat: seq scan & update executor

feat(neo/executor): introduce plan builder

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment