Skip to content

Commit c8bb199

Browse files
author
Evgeniy Khyst
committed
Update README.md
1 parent e887fbc commit c8bb199

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

README.md

+26-7
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
* [State-Oriented Persistence](#436b314e78fec59a76bad8b93b52ee75)
77
* [Event Sourcing](#c4b3d1c8edab1825366ac1d541d8226f)
88
* [CQRS](#b2cf9293622451d86574d2973398ca70)
9-
* [Advantages of Event Sourcing and CQRS](#d8818c2c5ba0364540a49273f684b85c)
9+
* [Advantages of CQRS](#cc00871be6276415cfb13eb24e97fe48)
10+
* [Advantages of Event Sourcing](#845b7e034fb763fcdf57e9467c0a8707)
1011
* [Requirements for Event Store](#70b356f41293ace9df0d04cd8175ac35)
1112
* [Solution Architecture](#9f6302143996033ebb94d536b860acc3)
1213
* [Permanent Storage](#205928bf89c3012be2e11d1e5e7ad01f)
@@ -17,9 +18,24 @@
1718
* [Drawbacks](#0cfc0523189294ac086e11c8e286ba2d)
1819
* [How to Run the Sample?](#53af957fc9dc9f7083531a00fe3f364e)
1920

21+
## <a name="0b79795d3efc95b9976c7c5b933afce2"></a>Introduction
22+
23+
PostgreSQL is the world's most advanced open source database. Also, PostgreSQL is suitable for Event
24+
Sourcing.
25+
26+
This repository provides a sample of event sourced system that uses PostgreSQL as event store.
27+
28+
![PostgreSQL Logo](img/potgresql-logo.png)
29+
30+
See also
31+
32+
* [Event Sourcing with Kafka and ksqlDB](https://github.com/evgeniy-khist/ksqldb-event-souring)
33+
* [Event Sourcing with EventStoreDB](https://github.com/evgeniy-khist/eventstoredb-event-sourcing)
34+
2035
## <a name="8753dff3c2879207fa06ef1844b1ea4d"></a>Example Domain
2136

22-
The example domain is ride hailing.
37+
This sample uses heavily simplified ride hailing domain model inspired
38+
by [tech/uklon](https://careers.uklon.ua/) experience.
2339

2440
* A rider can place an order for a ride along a route specifying a price.
2541
* A driver can accept and complete an order.
@@ -124,14 +140,14 @@ Separate table `ORDER_AGGREGATE` keeps track of the latest versions of the aggre
124140
required for optimistic concurrency control.
125141

126142
PostgreSQL doesn't allow subscribing on changes, so the solution is Transactional outbox pattern. A
127-
service that uses a database inserts events into an *outbox* table as part of the local transaction.
128-
A separate Message Relay process publishes the events inserted into database to a message broker.
143+
service that uses a database inserts events into an outbox table as part of the local transaction. A
144+
separate Message Relay process publishes the events inserted into database to a message broker.
129145

130146
![Transactional outbox pattern](img/transactional-outbox-1.png)
131147

132-
With event sourcing database model classical Transaction outbox pattern can be simplified. An *
133-
outbox* table is used to keep track of handled events. Outbox handler (aka *Message Relay*
134-
and *Polling Publisher*) processes new events by polling the database's *outbox* table.
148+
With event sourcing database model classical Transaction outbox pattern can be simplified even more.
149+
An outbox table is used to keep track of handled events. Outbox handler (aka Message Relay and
150+
Polling Publisher) processes new events by polling the database's outbox table.
135151

136152
![Simplified transactional outbox pattern](img/transactional-outbox-2.png)
137153

@@ -381,3 +397,6 @@ The `test.sh` script has the following instructions:
381397
```
382398
383399
400+
401+
402+

img/event-sourcing-1.png

128 Bytes
Loading

0 commit comments

Comments
 (0)