| 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
- MongoDB
- Cassandra
- or even Spark/Kafka combination for the real-time aspect of the push metrics
|