prolic on v1.10.3
prolic on master
update changelog (compare)
prolic on master
fix restarting projection durin… respect lock in memory resetting projection and 12 more (compare)
Good afternoon @prolic @codeliner
We are currently use the prooph framework for our loyalty engine. In short we have a setup that on each transaction that is created, an x amount of events are created on the player aggregate
The problem is that before we start acting on the player aggregate, we first load the player aggregate (snapshots taken) and then append 1 or more events on it depending on the life-cycle of the loyalty engine campaign. We do have snapshots in place so its not as if we are loading the full history of the player. But still the query generated by the framework to load from snapshot (AggregateRepository -> loadFromSnapshotStore) is quite CPU heavy on the RW db, compared to other queries
In the past we did POC moving to the
AggregateStreamStrategy but as written in the documentation, we did struggle alot to have our projections as real time as possible. we would have 1000s of tables if we do one table per player.
So we are looking for options to perform better when loading the aggregate from a snapshot.
DBAs suggested to use partitioning of the main player aggregate table but not sure if prooph itself has that option. Otherwise if DBA create partitioned tables (prob one a day), then we need prooph framework to load the aggregate with these partitioned table.
Another idea that we had was to keep a parallel event store (inMemory) with the state of the players in the last 5mins. meaning that the player is kept in memory for around 5mins or even less.. that would drastically reduce the load on the db.
any other options/thoughts?
On a side note we are using
7.5.6 and we currently experience around 1.8million to 2million transactions at any given day. for each transaction we load the player aggregate (for the player related to that transaction) and append further events to the player aggregate
composer why-not php 8.0 prooph/event-store-http-middleware v0.2.0 requires php (^7.1) prooph/http-middleware v0.2.0 requires php (^7.1) prooph/pdo-snapshot-store v1.5.2 requires php (^7.1) prooph/standard-projections v1.1.1 requires php (^7.1)
yeah. i was lookin into how laminas does that these days. pretty advanced. wondering if that would be something prooph could depend on. Maybe saves a ton of work… dunno
all their repos now have this https://github.com/laminas/laminas-db/blob/2.16.x/.github/workflows/continuous-integration.yml which is capable of running various php version with extensions as needed and several tools…
I was in a new project for one week. They want to modernize an old app. Really terrible PHP code. The used web framework even did not have a method to get the body from the request so they just used
$bodyContent = file_get_contents('php://input') directly in a ElasticSearch Service to get parameters for the elastic query from the client. I made several suggestions how to improve this code, but one of the two internal developers had no drive to do some extra work to improve code quality so I asked him some direct questions why he is not willing to spent some time on it.
He went straight to his manager told some lies about me and I got fired without any further discussion. Never experienced something like this in my career. Yes there are many different opinions about code quality etc. and sometimes heated discussions can arise from such opinions, but using this as a reason to fire someone after a week is next level. At least for me ...