Skip to content

Latest commit

 

History

History
90 lines (67 loc) · 4.06 KB

index.md

File metadata and controls

90 lines (67 loc) · 4.06 KB

IngitDB - git versioned & branchable JSON DB hosted at GitHub

IngitDB is a dynamic (e.g. writable) but statically hosted database driven by IngitDB GuitHub Action.

IngitDB is somewhat like static site CMS (GitHub Pages, Hugo, Jekyll, etc.) but a database.

This means:

  • you do not need an application layer to:
    • query data (HTTP endpoints are provided by GitHub)
    • edit data - you have 3 options:
  • there is no out of box access rights separation on per user/data - you either have access to the whole DB or you don't
    • You can create your own GitHub action to restrict editing of data
      • In future IngitDB might offer such functionality out of the box
  • users can have either readonly or readwrite permissions for a database
  • response times for reads are very low
  • it is very scalable for read operations

Also it is hosted at GitHub so you basically can run it for free.

It supports:

  • multi-versioning
    • mergin of branches
    • comparison between branches & versions
    • restore to any point in a time as a new branch
    • cherry-picking of specific changes from older version or another branch
  • schema definition
    • check constraints
    • foreign keys & lookup
    • triggers
      • on insert
      • on update
      • on delete
    • views
      • filters
      • limited number of fields
      • operators (+, -, /, *, etc.)
      • formulas (IIF, LEN, SUBSTR, etc.)
      • group by operation
        • having condition
        • aggregation formulas (SUM, COUNT, etc.)
  • transactions
  • webhooks
  • REST endpoints for views and individual records
  • REST API for editing

When use and when not to use IngitDB

While IngitDB can act as a operational database it was not desined for this purpose as it would not be quick and would not scale.

It also would not be a good choice for a DB with 100s of thouthands of records. 10th of thouthands might be OK though.

IngitDB was designed and is good for:

  • Keeping & providing reference data
  • Settings & metadata storage
  • Data entry & data collection with integrity constraints and data validation

Example database

There is a publicly available IngitDB demo database - https://github.com/ingitdb/ingitdb-demo-db

You can alsow view & edit IngitDB data in a web app.

The demo database has few sample datasets:

It's free to use and is Open Source under MIT License

Below repositories contains source codes of IngitDB components:

Contributors wanted

  • Have you found this project useful?
  • Do you have ideas how it can be improved?

Please don't be shy and join as a contributor - pull requests are welcome!