Our database is currently based on MySQL/Postgres, and all of our data lives in one "UPS" schema.
For future scalablility it's worth to investigate new types of databases.
* Device-Installation metadata * Metric information about push
The device metadata is important, and lookup / queries need to be fast. Query is done by different aspects: categories and aliases or even device-type. Indexing via the device token is not possible in relational DBs (see AGPUSH-1370)
The metric information is read/write intensive and currently we are not really able to have a decent "real-time" approach to it. Also, large push jobs cause constant updates on one specific entry (PushInformation), regarding delivered messages, success. In addition the open-rate is driven by an different factor: the actual device starting/opening the app. In best case we would have something like the Firebase realtime push analytics...
Push Metrics is therefore another type of data that could live in a different type of a database.
In terms of databases, we should be open to different options: * Apache HBase * Apache Cassandra * or even Spark/Kafka combination for the real-time aspect of the push metrics |
|