All Projects → mantzas → incata

mantzas / incata

Licence: Apache-2.0 license
Event Sourcing Data Access Library

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to incata

node-event-storage
An optimized event store for node.js
Stars: ✭ 29 (+52.63%)
Mutual labels:  event-sourcing
eventuous
Minimalistic Event Sourcing library for .NET
Stars: ✭ 236 (+1142.11%)
Mutual labels:  event-sourcing
paradox
Tools for event sourcing applications
Stars: ✭ 30 (+57.89%)
Mutual labels:  event-sourcing
e-shop
Sample Spring Cloud microservices e-shop.
Stars: ✭ 48 (+152.63%)
Mutual labels:  event-sourcing
akka-persistence-gcp-datastore
akka-persistence-gcp-datastore is a journal and snapshot store plugin for akka-persistence using google cloud firestore in datastore mode.
Stars: ✭ 18 (-5.26%)
Mutual labels:  event-sourcing
fmodel-ts
Functional Domain Modeling with Typescript
Stars: ✭ 41 (+115.79%)
Mutual labels:  event-sourcing
financial
POC de uma aplicação de domínio financeiro.
Stars: ✭ 62 (+226.32%)
Mutual labels:  event-sourcing
assembler
Functional, type-safe, stateless reactive Java API for efficient implementation of the API Composition Pattern for querying/merging data from multiple datasources/services, with a specific focus on solving the N + 1 query problem
Stars: ✭ 102 (+436.84%)
Mutual labels:  event-sourcing
eda-tutorial
Event-Driven Tutorial for Distributed Data with CQRS and Event Sourcing
Stars: ✭ 49 (+157.89%)
Mutual labels:  event-sourcing
VehicleTracker
Vehicle Tracker with Microservice example
Stars: ✭ 70 (+268.42%)
Mutual labels:  event-sourcing
node-cqrs-saga
Node-cqrs-saga is a node.js module that helps to implement the sagas in cqrs. It can be very useful as domain component if you work with (d)ddd, cqrs, eventdenormalizer, host, etc.
Stars: ✭ 59 (+210.53%)
Mutual labels:  event-sourcing
awesome-talks
Awesome talks about event sourcing, cqrs, microservices, funcional programming ...
Stars: ✭ 23 (+21.05%)
Mutual labels:  event-sourcing
stem
Event sourcing framework based on ZIO and pluggable runtime (currently working with Akka cluster)
Stars: ✭ 22 (+15.79%)
Mutual labels:  event-sourcing
engine
Engine provides you all the capabilities to build an Event sourced application.
Stars: ✭ 35 (+84.21%)
Mutual labels:  event-sourcing
micro
Functional prooph for microservices
Stars: ✭ 53 (+178.95%)
Mutual labels:  event-sourcing
muon-java
Muon Core for the JVM. APIs and Microservices taken to the next level
Stars: ✭ 18 (-5.26%)
Mutual labels:  event-sourcing
firebase-event-sourcing
Event Sourcing + CQRS + DDD for Firebase
Stars: ✭ 14 (-26.32%)
Mutual labels:  event-sourcing
commander
Build event-driven and event streaming applications with ease
Stars: ✭ 60 (+215.79%)
Mutual labels:  event-sourcing
edat
Event-driven architecture toolkit
Stars: ✭ 27 (+42.11%)
Mutual labels:  event-sourcing
spear
A sharp EventStoreDB v20+ client backed by Mint 😋
Stars: ✭ 51 (+168.42%)
Mutual labels:  event-sourcing

incata alt text build status Coverage Status Go Report Card

Event Sourcing Data Access Library

Package incata is a source eventing data access library. The name combines incremental (inc) and data (ata). Details about event sourcing can be read on Martin Fowlers site.

Currently we support two relational DB's, MS Sql Server and Postgresql.

The stored Event has the following structure:

type Event struct {
  Id        int64
  SourceID  uuid.UUID
  Created   time.Time
  Payload   interface{}
  EventType string
  Version   int
}

The payload is the actual data that we like to store in our DB. Since the serializer can be anything the data type is set to interface{}. This means that our db table column for the Payload have to match the serializer's result data type.

In order to use the appender or retriever we have to provide the following

  • A serializer or deserializer which implements the Serializer or Deserializer interface or the . A JSONMarshaller is provided.
  • A writer or reader which implements the Writer or Reader interface. A SQLWriter and SQLReader is provided.
  • A appender and retriever which implement the Appender and Retriever interface. Appender and Retriever are provided.

The supported relational DB's are MS Sql Server and PostgreSQL.

Check out the examples in the examples folder for setting up the default marshaller and reader/writers

MS SQL Server Setup

SQL Server Driver used:

"github.com/denisenkom/go-mssqldb"

DB Table setup (Provide a table name)

    CREATE TABLE {TableName} (
      Id BIGINT IDENTITY
      ,SourceId UNIQUEIDENTIFIER NOT NULL
      ,Created DATETIME2 NOT NULL
      ,EventType NVARCHAR(250) NOT NULL
      ,Version INT NOT NULL
      ,Payload NVARCHAR(MAX) NOT NULL
      ,CONSTRAINT PK_Event PRIMARY KEY CLUSTERED (Id)
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

     GO

     CREATE INDEX IX_Event_SourceId
     ON {TableName} (SourceId)
     ON [PRIMARY]
     GO

PostgreSQL Setup

PostgreSQL Driver used:

"github.com/lib/pq"

DB Table setup (Provide a table name)

  CREATE TABLE {table_name}
  (
    id bigserial NOT NULL,
    source_id uuid NOT NULL,
    created timestamp with time zone NOT NULL,
    event_type character varying(250) NOT NULL,
    version integer NOT NULL,
    payload text NOT NULL,
    CONSTRAINT pk_{table_name}_id PRIMARY KEY (id)
  )
  WITH (
    OIDS=FALSE
  );

  CREATE INDEX ix_order_event_source_id
    ON {table_name}
    USING btree
    (source_id);
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].