Git Product home page Git Product logo

embeddedcypher's Introduction

Graph databases are cool

embeddedCypher

A portable, in-memory, persistant graph DBMS that implements the openCypher query language.

Hypothesis

As graph database systems are adopted more developers will feel comfortable using a graph query language. Much as SQL systems found adoption on small devices (SQLite is the most installed DBMS in the world) devs could use graph databases on small devices with greater ability to represent and explore complex relationships using an easy to learn/use graph query language. An example openCypher query:

MATCH (embeddedCypher)-[:implements]->(openCypher) RETURN *

Examples

For an example of a more capable device implementation, consider: Android via NDK where a KV store can treat SD storage as it would a disk or use faster Android "internal" memory efficiently as contiguous RAM. On the other end of the spectrum there exist processors available for around 1 USD that have C/C++ development tools available. The goal is ubiquitous:relaxed:deployment.

How

While experimentation is encouraged now, an emphasis will be put on portability to the point of making embedding possible by abstracting byte order and solving performance issues etc. Unit and End To End testing will drive development.

Some major tools and components:

  • E2E and Unit testing: CTest, Google GTest
  • UnQLite: For the Key/Value backing store
  • Bisonc++: Parser
  • Flexc++: Lexical Scanner
  • Cmake/Clang/LLVM: A Reference build system

Note: bisonc++ and flexc++ are programs used to generate the parser and lexical scanner respectively. They generate the files identified below:

bisonc++:

  • parse.cc
  • Parser.h - Not overwritten by bisonc++. Contains essential edits.
  • Parser.ih
  • Parserbase.h

flexc++:

  • lex.cc
  • Scanner.h
  • Scanner.ih - Not overwritten by flexc++. Contains essential edits.
  • Scannerbase.h

The Bash script genParser.bash invokes bisonc++ and flexc++ for generation of the parser and scanner but is only needed if updates are made to the files parser/grammar.y and scanner/lexer.

embeddedcypher's People

Contributors

expertcompsci avatar

Stargazers

Fabio Dias Rollo avatar Aslak Johansen avatar  avatar Manoj Selvam avatar abstract avatar  avatar Yong Chang avatar Nick Strupat avatar MiruhiMiruhi avatar Sean Li avatar Bharath Bhushan avatar  avatar  avatar Marcelo Gervazoni Carbonera avatar Zhihong SHEN avatar Github Notification avatar Dmitry Ledentsov avatar kent avatar  avatar

Watchers

James Cloos avatar  avatar  avatar Marcelo Gervazoni Carbonera avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.