Event Sourcing

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Build time-series-based applications quickly and at scale.
  • SonarQube - Static code analysis for 29 languages.
  • SaaSHub - Software Alternatives and Reviews
  • Workflow

    re-startable monad that recover the execution state from a log, and workflow patterns (by agocorona)

    I was part of that debate, I remember a rather interesting point of discussion: Is the main operation "apply" or "dedup"

    Apply seems to be the common notion of event sourcing: There is a function apply that takes a state an event and yields a new state. Then, starting in an init state and iteratively applying the entire event history, boom, latest state restored.

    Dedup has a lot of charm though: Run and rerun your code, if that step of your code is executed for the first time (no corresponding event in the event history) execute the step and store its result as an event in the history, however, if that step of your code is executed for the second, third time (there is a corresponding event in the event history) do not execute the step and return its result from the event in the history. The Haskell Workflow Package (https://hackage.haskell.org/package/Workflow) is a good example

    Temporal follows the second approach, so "proper" Event Sourcing? You be the judge :)

  • InfluxDB

    Build time-series-based applications quickly and at scale.. InfluxDB is the Time Series Platform where developers build real-time applications for analytics, IoT and cloud-native services. Easy to start, it is available in the cloud or on-premises.

  • jsynchronous

    Jsynchronous.js - Data synchronization for games and real-time web apps.

    I recently built https://github.com/siriusastrebe/jsynchronous which uses event sourcing to synchronize javascript variables on the server with connected browsers.

    You can also replay states using a special “rewind” mode, a core advantage of event sourcing.

  • tikv

    Distributed transactional key-value database, originally created to complement TiDB

    Last time i looked into it there weren't that many i could find. There is https://github.com/tikv/tikv which uses rocksdb with raft. and there is faster https://github.com/microsoft/FASTER/ .

  • FASTER

    Fast persistent recoverable log and key-value store + cache, in C# and C++.

    Last time i looked into it there weren't that many i could find. There is https://github.com/tikv/tikv which uses rocksdb with raft. and there is faster https://github.com/microsoft/FASTER/ .

  • message-db

    Microservice native message and event store for Postgres

    Check out MessageDB https://github.com/message-db/message-db. It's basically Postgres and can be installed into any Postgres DB.

  • plumber

    A swiss army knife CLI tool for interacting with Kafka, RabbitMQ and other messaging systems.

    Hi there, I started a company specifically centered around event sourcing - it's a saas platform for capturing all of your events, gaining the ability to granularly search them and then replay them to whatever destination.

    I'd be happy to walk you through the platform - there's no lock-in, since we don't require the use of any SDK's, just run an event-relaying container which will pipe all of your events to our stores.

    One big piece is that our platform is message bus agnostic meaning, we are able to hook into any message bus, be it kafka, rabbit, nats, etc.; same goes for replays - we can replay into any destination.

    Check it out: https://batch.sh

    The relayer is open source - https://github.com/batchcorp/plumber - if anything, the relayer can also be used for working with message busses which could improve your dev workflow for reading/writing messages, etc.

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • skiplistrs

    Sure - here's a simple fuzzer from a rope (fancy string) library I wrote a few years ago back when I was still learning rust. (Don't judge me!):

    https://github.com/josephg/skiplistrs/blob/master/tests/test...

    In a loop it simply randomly decides whether to insert, delete or replace some text, and after any action checks that the state is valid (In this case via a call to check2()).

    You can go way deeper with this sort of thing if you want, with more complex models, random item generation and simplifiers to help pare down problems to simple test cases. And you can have more complex state - for example, where you also track interaction between multiple items. For example, if your state is a few users, and you also track one user paying another user and verify the total balance across all users is unchanged.

    But you don't need to go deep for fuzz testing to be worthwhile. Even something as simple as this little loop is a remarkably effective bug finder.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts