Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@gitbuda
Copy link
Owner

@gitbuda gitbuda commented Jan 18, 2023

TODOs

Phase 1 - Basic PoC

  • Implement MPMCMultiframeFCFSPool
  • Add helper/alias to run clang-tidy/additional checkers locally
  • Implement basic Emit and Next
  • Add proper logging
  • Implement basic fuzzy unit test
  • Implement dummy operators: ONCE, SCAN ALL, PRODUCE (mocks)
  • Implement micro mocked benchmark of SingleThread physical operator execution
  • Implement Frame physical operators
  • Implement micro mocked benchmark Frame vs SingleThread physical operator execution
  • Implement MultiThreadedExecutor based on ExecuteAsync
  • Implement micro mocked benchmark Frame vs SingleThread vs Parallel physical operator execution
  • Change DataPool::PoolState to be composable + implement call skips when possible (inside Executor)
  • Write the spec, list pros and cons of this architecture

Phase 2 - Proof it works in the long run

  • Basic refactor
    • Measure latency with different multiframe number and size
    • Implement Unwind and CreateVertices (state objects + execution)
    • Add the ability to return the Multiframe back to the data pool (NOTE: not marking it as empty)
    • Make Executor throw in all non-linear cases (e.g. OPTIONAL MATCH not supported)
  • Implement e2e operators (inject real storage, not mocks):
    • ONCE
    • SCAN ALL
    • CREATE NODE (write, WITH accumulate)
    • UNWIND (multiframe expansion)
    • PRODUCE
  • Inject implementation e2e
    • Create v1 and v2 of tests/manual/interactive/*
  • Implement basic e2e test
  • Implement basic e2e benchmark
  • Add support for single-operator parallelization and benchmark "level-sync" executor
  • Implement and test other important operators (order is important + all tricky things should be covered by implementing this set of operators):
    • CREATE EXPAND (write, WITH accumulate)
    • EXPAND (basic graph DB operator)
    • VARIABLE EXPAND (graph traversals)
    • FILTER (multiframe reduction)
    • WITH (aggregation)
    • OPTIONAL MATCH (double branch query plan)
    • MERGE (triple branch query plan)
  • Implement Cancel
  • Implement Timeout
  • Implement Shutdown
  • Add allocator
  • Implement dummy authentication and authorization

Phase 3 - Implement the whole query engine

  • Implement all operators
  • Implement the whole authentication and authorization
  • Benchmark and improve all operators
  • Add detailed documentation

NOTE: Migrated from memgraph#640

* dummy physical plan generator
* dummy physical operators
* few basic comments / reasoning
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants