{"repo":"mizrael/EvenireDB","free":true,"listed":false,"github":"https://github.com/mizrael/EvenireDB","clone":"git clone https://github.com/mizrael/EvenireDB.git","description":"small stream-based DB engine","language":"C#","stars":39,"topics":["database","dotnet","event-sourcing","stream"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"EvenireDB Evenire, from Latin, present active infinitive of ēveniō , \"to happen\". This project is a Proof-of-Concept of a small stream-based DB engine. One of the potential use cases is Event Sourcing. If you don't know what Event Sourcing is, I've been writing for a while about it on my blog. These articles can be a good starting point: - Event Sourcing in .NET Core – part 1: a gentle introduction - Event Sourcing: 5 things to consider when approaching it I took a personal interest in this amazing pattern and after a while using it, I also wanted to write a database system specifically suited for it. Honestly, I don't know how far this project will go, but I'm having a lot of fun so far and I am definitely learning a lot :) How does it work? The basic idea behind Evenire is quite simple: events can be appended to streams and later on, retrieved by providing the stream ID. Streams are identified by a tuple composed of a Guid (the stream key) and a string (the stream type). For the curious, the sources are here). Every stream is kept in memory using a local cache, for fast retrieval. A background process takes care of serializing events to a file, one per stream. Reading can happen from the very beginning of a stream moving forward or from a specific point. This is the basic scenario, useful when you want to rehydrate the state of an Aggregate. Another option is to read the events from the end of the stream instead, moving backward in time. This is interesting for example if y","default_branch":null,"files":null,"tree":[],"storefront":"/r/mizrael","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/mizrael/EvenireDB/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}