prooph / event-store-mongodb-adapter
MongoDB Adapter for ProophEventStore
Installs: 35 001
Dependents: 2
Suggesters: 0
Security: 0
Stars: 6
Watchers: 6
Forks: 10
Open Issues: 0
Requires
- php: ^7.1
- ext-mongodb: ^1.5.2
- beberlei/assert: ~2.4
- mongodb/mongodb: ^1.4.2
- prooph/common: ^3.7
- prooph/event-store: ^6.3
Requires (Dev)
- malukenho/docheader: ^0.1.4
- phpspec/prophecy: ^1.7
- phpunit/php-invoker: ^2.0
- phpunit/phpunit: ^7.1.4
- prooph/php-cs-fixer-config: ^0.2.2
- psr/container: ^1.0
- sandrokeil/interop-config: ^2.0.1
- satooshi/php-coveralls: ^1.0
Suggests
- psr/container: For usage of provided factories
- sandrokeil/interop-config: For usage of provided factories
README
MongoDB Adapter for ProophEventStore
#CAUTION: The mongoDB adapter is NOT compatible With prooph/event-store v7. MongoDB has limited ACID support which is not compatible with the new features of prooph/event-store. MongoDB is a great choice for a read model database, but unfortunately it cannot be used as an event-store that requires transactions across documents (events). Codeliner has published a Gist that shows a custom implementation of a possible mongoDB event store supporting a subset of the v7 features in a very limited way. If you want to try to bring mongoDB back, please get in touch with us and we can discuss it!
Support for the adapter will end at 31 December 2017.
Requirements
- MongoDB >= 4.0
- MongoDB PHP Driver >= 1.5.2
Transactions
The transaction write concern for this adapter is majority
.
The transaction read concern for this adapter is snapshot
.
You can disable transactions for this adapter.
Considerations
This adapter does not use the MongoDB ObjectId for its primary key, instead a UUID (string) is used.
We recommend the AggregateStreamStrategy as the best strategy to use with this adapter.
Keep in mind that transaction safety works only for a replica set. Sharded cluster support is planned for MongoDB 4.2. Therefore it's not safe to use this adapter in a sharded cluster environment, as MongoDB can't guarantee transaction safety.
Stream can not be reset if iteration was started due the MongoDB cursor.