Hi all,
(I'm assuming I'm not the only subscriber to this list.)
I have a general concern about Platform's architecture. Specifically, creating ("cutting") a list takes a very long time as the DB has scan over all events. We have queries taking in excess of a minute, and I understand AllOut has similar slow queries. I'm not too worried about this time per se, but I'm worried about the knock-on effect on other actions like unsubscribing users that may be happening concurrently. Unsubscribing a user should be very quick, but contention for the database / disk could be an issue.
I see a number of solutions:
0. More delayed jobs.
1. Modify Platform to support two database connections -- one for fast actions and one for slower queries. The slow queries can take place on a read replica.
2. Re-architect Platform into two parts: an API layer than communicates with a DB layer via a message queue. The API layer is for recording events (opens, clicks, unsubs) into the message queue. The DB layer performs the actions, persisting to the database. This is like 0 but more consistently applied.
Thoughts?
Cheers,
Noel