We're provisionally going to use MySQL for persistence. Both for the MediaWiki extension and for the push service. They're probably two separate database schemas, one for MediaWiki and one for MISC, but this still needs to be determined.
Here's the old description of this task for posterity's sake:
Before developing the Push Service, a type of DB and its location need to be chosen. Currently, MySQL looks to be most likely, but before committing, some more research should be performed on using Cassandra or another DB (like HBase) that may be a better fit (and no single point of failure) as laid out here:
https://www.mediawiki.org/wiki/RESTBase/Table_storage_backend_options
If MySQL is chosen, after discussing internally on the #reading-infrastructure-team, primarily with @Tgr , we have the following likely possibilities:
- Use a new DB cluster on the standard DB servers.
- Use one of the existing non-mediawiki DB clusters (m1-m5, which are used for all kinds of stuff from Phabricator to the scholarship review app)
- use a cross-wiki MediaWiki DB cluster (x1, which is currently mostly used by Flow, or just stick a DB into one of the clusters which are normally used for per-wiki tables - e.g. the CentralAuth database is hosted on s7)
We also have 2 other possibilities but think they are less desirable/likely:
- use a separate database server
- use wiki-specific tables (s1-s7, one table per wiki)
So far, hosting this on s7 (option 3) seems like the best option. Why?
- It gives us the options to link devices to user accounts if we ever decide to do that.
- It is non-wiki specific (and devices and browsers are also non-wiki specific)
- We don't have to setup a new DB (not terrible, but more work)
So my questions:
- Did we miss any options?
- Are there any downsides/upsides we missed to any of the options?
- Does this logic seem reasonable?
I haven't done so yet, but will be updating the technical plan with this info shortly:
Note:
This assumes MySQL which was chosen over Cassandra for reasons listed in the document above