Support chat for http://getprooph.org/ - official announcement: https://www.sasaprolic.com/2018/08/the-future-of-prooph-components.html
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)
--stop-on-failure
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 prooph/event-store
version 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
I was moved to use Event Streaming for my next project..... until I came across this:
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…
@basz 🤗
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 ...
They pushed me out like a nameless resource and not like a human. And we are talking about a relatively well known German company at least in the eCommerce/Magento space. They state on their website: "Eines noch: Wir legen großen Wert auf eine offene & faire Zusammenarbeit. Nur so können wir gemeinsam mit Ihnen das Beste aus Ihren Visionen herausholen. Jeden Tag! " ->
"One more thing: We attach great importance to open and fair cooperation. This is the only way we can work with you to get the best out of your visions. Every day!"
Good example of empty words without substance