Not sure which term to use "Database" or "Event store" but I'm talking about where we store our events. I wonder if Event store should have ACID properties, especially the Atomicity. What I mean by that, should we be able to rollback the state, in case of errors, by removing saved events. but that would break the law of event sourcing which is "event must be immutable". I'm not sure how this kind of database are implemented, but if we are unable to rollback does that mean we have to manually make a compensation action for each transaction?
Should event sourcing database provide ACID properties
103 Views Asked by Patrick At
1
There are 1 best solutions below
Related Questions in DATABASE
- How to add the dynamic new rows from my registration form in my database?
- How to store a date/time in sqlite (or something similar to a date)
- Problem with add new attribute in table with BOTO3 on python
- When an E-R attribute should be perceived as a relationship attribute or as an entity set attribute?
- SQLAlchemy: efficient relationship loading in 3-way many-to-many relationship
- Cannot connect to Postgres Database when running Quarkus Tests with Gitlab ci
- Local or remote database with react-native?
- I want to edit a specific row in database
- How to enter data in mongodb array at specific position such that if there is only 2 data in array and I want to insert at 5, then rest data is null
- Open Web Library
- database login.py and register.py error showing 404 file not found and doesn't work
- SQL71561: SqlComputedColumn: When column selected
- Liquibase as SaaS To Configure Multiple Database as Dynamic
- Updated max input vars but table still shows error
- Spring does not map set of roles
Related Questions in EVENT-SOURCING
- AuditLog Events in EventSourcing
- EventFlow NETCore 8 - ReadModelByIdQuery invalid parsing data from database
- EventStore: Event does not exist for stream:
- Akka: currentEventsByPersistenceId always returns zero for 'eventEnvelope.timestamp'
- Does a command persist state itself, when we combine CQRS with Event Sourcing, or is it delegating to the EventBus?
- How to handle one to many relationship in CQRS/ES/Saga architecture?
- MartenDB serializer issue
- EventStore batch event reading from $all via gRPC
- In Akka Typed Event Sourcing is it common to use a single db (the same event journal) for multiple typed persistent entities?
- DDD+CQRS+EventSourcing how to make sure projections are up to date?
- Read stream from EventStore without "stream doesn't exist exception"
- How to wait for all Disruptor messages to be consumed in a test case
- Appending events to Marten from an outbox and guarantee ordering
- What is the Logic Behind Synchronization in CQRS with Separate Storages?
- Event Sourcing: Can I describe the parent object state via its member object events?
Related Questions in ACID
- MongoDB ACID transactions vs RDMBS - Performance
- Is Azure SQL database designed with read replicas ACID compliant
- @Transactional is not working when it tagged on the method created using functional interfaces
- How to make atomic writes to blob storage and database?
- How to read hive ACID ORC table dump
- What are the properties of a non ACID table in Apache Hive?
- Should event sourcing database provide ACID properties
- Spring Data Elasticsearch, ACID query and partial update
- Managing Data in Microservices and MassTransit
- External consistency in Google spanner
- Are `AFTER UPDATE` triggers `FOR EACH ROW` atomic?
- Can database transaction help block read until read from another transaction is finished?
- How bucketing works for Hive Acid Tables?
- How to handle 2 users place order same products at same time in MongoDB?
- Understanding MySQL concurrency/isolation levels
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
A in ACID means Atomicity, and not the ability to roll back.
The concept of rolling back comes from databases that support transactions across multiple logical data collections, like tables in relational databases. Event sourcing implies that you work with individual streams, and the stream is your transaction boundary. That's, by the way, what connects DDD aggregates to event sourcing in general, although it's not entirely obvious for many.
So, a database for event sourcing should indeed be ACID-compliant, but A would mean that it should support transactional append for a single stream.