Skip to content

croys/RA_cpp

Repository files navigation

RA_cpp

ci codecov CodeQL

About RA_cpp

Relational Algebra implementation in C++20 as an exercise.

The overall design follows the relational algebra Tutorial D as described in Date[1]

The design is centered around providing dynamically typed core, with statically typed views onto this storage.

The basic types of Tutorial D are extended with parametric types - maybe/optional, either, vectors, maps, objects and ADTS (algebraic data types). Serialization will be provided via `protobuf`` or similar.

The goal is to provide an implementation that can be used by other languages, such as Python, but can be used in idiomatic C++ without dynamic types becoming intrusive.

Roadmap

  • Core types
    • basic types - done
    • parameterized types (std::optional, either, vector, map, functions)
    • ADTs
  • Core values
    • basic types - done
    • values of parameterized types
    • may want to support Shared to wrap values in shared_ptr<> or similar.
    • may use types to express storage/lifecycle choices (e.g. PooledString, GlobalStorage, ThreadStorage, etc..)
    • dynamicaly typed function application
  • Column storage
    • pmr support by default
    • basic types - done
    • objects
    • ADTs
  • Main operations
    • construction - done
    • dee, dum, product, filter, project, join
    • copy
  • Utility
    • table view
    • serialization

[1] "An Introduction to Database Systems", eighth edition by C.J. Date. Addison-Wesley.

More Details

About

Simple Relational Algebra implementation in C++

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published