ekati icon indicating copy to clipboard operation
ekati copied to clipboard

A Graph Database

Ekati - A Database

Ekáti (εκάτη / Hecate)

Basic UI

#Aka GrokkenD

TLDR

Under development, lot's to do. If your looking for something production ready, this is NOT it. If you want to get your hands into an early open source data project, this could be your thing.

What is thing?

It's an extensible Relational-Document database. In the relm of tools like Elastic Search, MongoDb, Hadoop, Marklogic, though it adds native support for relations.

It aims to be very flexible by supporting high write workloads (eg: cassandra), insanely fast lookups (redis), storage local compute (hadoop). Also plugin and community friendly (like vscode).

What can it do now?

  • You can write and install plugins.
  • You can use low level find, filter, save operations.
  • There is an example .TTL importer plugin.
  • You can open a workspace with Visual Studio Code and run queries, or publish plugins to the server.

Run it

  • Launch the TestServer project

       > dotnet run TestServer
    
  • Open VS code in the DataScienceDB folder and launch the extension

       > cd DataScienceDb
       > code ./
       > ## Debug Extension
    
  • From VS code running the extension, open the extension folder

  • Use the command pallette to run your code

    VS Code Explorer panel

    VS Code Command Palette

Some Goals

  • Follow edges without using index lookups
  • Clustering / Support really really ridiculously large data sets (big-data?)
  • Support data-local compute similar to hadoop and friends
  • Constant large quantity writes/updates
    • Max out the network would be ideal. Not even close right now, way too many allocations parsing / loading
  • Flexible Indexing
  • Property level metadata eg: policy / permission / origin
  • Forward references
  • Key and Value references
    • ^"friend" : ^"person123" where ^"friend" referes to the node named "friend", and ^"person123" refers to the node named "person123".
    • "friend" : ^"person123" would simply be a property named "friend" that points to the node named "person123"
  • Extensible via plugins (sandboxed? webasm?)
    • Value transformation (encryption / decryption, compression, string.toNumber)
    • Indexing plugins (full-text, spacial, etc)
    • Query operator plugins (JQ, Regex, xpath)
    • Import / Export plugins (CSV, Postgres, etc)
    • API / Protocol plugins (JDBC, ODBC, Python)
    • Jobs or stored procedures (Map/Reduce, PageRank, etc)

Current Tech

  • The database is written in C#.
  • It's targeting Linux, OSX, and Windows, using the dotnet core JIT.
  • Querying can be done through C# directly, or through extensions for other languages (none yet included).

Still here?

  • Click Watch button
  • Click fork button
  • Jump on Discord https://discord.gg/NfcBmjA

Can you help?

Yes!

We need help in all areas.

  • Planning
  • Architecture
  • Documentation
  • UI
  • Design
  • Language
  • Low-Level
  • Storage
  • Testing
  • Coding

Good reading

Whiteboard