Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/devrexlabs/origodb

In-memory event-sourced database engine for NET/Mono
https://github.com/devrexlabs/origodb

Last synced: about 2 months ago
JSON representation

In-memory event-sourced database engine for NET/Mono

Awesome Lists containing this project

README

        

## Important notice!

OrigoDB is no longer under active development. Please check out [Memstate](https://github.com/devrexlabs/memstate) which is a complete rewrite of OrigoDB featuring major improvements in the areas performance, availability, licensing, cross-platform, docker and cloud support. Memstate targets .NET Standard 2.0 so will run on .NET Framework >= 4.6.1, .NET Core >= 2.0, Xamarin and Mono.

## In-memory database for NET/Mono

An Origo database is a command-sourced in-memory object graph.

Write your custom data model, commands and queries using any .NET language, or choose from a number of existing generic models.

OrigoDB is developed and maintained by Devrex Labs. We offer commercial support, consulting, training and enterprise features.

To learn more, visit the [project web site](http://origodb.com) and read the [online documentation](http://origodb.com/docs).

[![Join the chat at https://gitter.im/DevrexLabs/OrigoDB](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/DevrexLabs/OrigoDB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

[![Build status](https://ci.appveyor.com/api/projects/status/v96t7i3a1kf0gqq3/branch/dev?svg=true)](https://ci.appveyor.com/project/rofr/origodb/branch/dev)

## Example code
```csharp
//Nuget: Install-Package OrigoDb.Core
//Restore graph by replaying commands stored on disk
//in the current working directory
var engine = Engine.For();

//Log a command to disk and then apply to in-memory graph
engine.Execute(new MyCommand{MyArg = someValue});

//read the in-memory graph using a custom query
var results = engine.Execute(new MyQuery{MyArg = someValue});

// -----------------------------------------
// Example #2 - Implicit operations
// -----------------------------------------
//restore graph and wrap the engine in a proxy
MyModel db = Db.For();

//void methods are translated to commands
db.MyCommand(someValue);

//non-void methods are translated to queries
var results = db.MyQuery(someValue);
```

## Key Strengths
* As transparent as persistence can get
* Rapid development, 50% less code on the backend
* High performance, complex transaction processing
* Suitable for Domain Driven Design
* Very easy to unit test and debug
* 100% ACID, fully serialized transactions
* Powerful queries using LINQ
* Flexible and extensible data modeling using modern language and full access to the .NET Framework Class library
* Full audit trail through complete history of commands
* Mature, used in production all over the world
* Modular storage backend

## Nuget
`Install-package OrigoDB.Core`

## Links
* Project web site: http://origodb.com
* Documentation: http://origodb.com/docs
* Downloads: http://origodb.com/download
* Release notes: https://github.com/devrexlabs/origodb/releases
* http://twitter.com/devrexlabs
* http://twitter.com/robertfriberg