TL;DR: Getting started with RESTBase is now easier thanks to a new SQLite3 backend
Hello,
The WMF Services team~[0] is proud to announce the initial release of the SQLite storage back-end~[1] for RESTBase~[2], the service that powers Wikimedia projects’ public REST API~[3]. Traditionally, RESTBase was limited to Cassandra persistence, which, while scalable, presented a weighty and difficult dependency for smaller installations and test environments. This new module allows RESTBase administrators to replace Cassandra with a lightweight, file-based persistence based on SQLite.
This is an exciting milestone in RESTBase’s development. We expect the option to run RESTBase atop an SQLite database to significantly widen the target audience, allowing users with small installations and limited resources to take advantage of this valuable service. We are also hoping to attract more contributors by having a simpler, less resource-intensive alternative to Cassandra; SQLite is now the storage module of choice in MediaWiki-Vagrant~[6] installations with the restbase role enabled. Contributing is just a vagrant up away!
The abstract storage interface~[7] we developed for RESTBase allows users to seamlessly switch between storage back-ends (Cassandra or SQLite). Due to data volumes we are facing in WMF, we are not using the SQLite back-end in production. However, we are testing each RESTBase changeset against both Cassandra and SQLite to ensure they are behaving as expected. Additionally, a 93% code coverage makes us confident to recommend it for production use.
Bringing the SQLite storage module to a usable state represents a significant amount of team effort, but nevertheless we’d like to extend a special thank you to Petr Pchelko for his tireless efforts in driving this project home. Thanks Petr!
This is only the first step in providing better third-party and developer support. One of the next challenges will be basing Parsoid~[8] on service-runner~[9,10], a general-purpose library for running and managing Node.JS services. Amongst other things, it enables bundling and running multiple services together. Packaging and distributing Parsoid and RESTBase together will simplify their installation, configuration and administration in small-setup and development environments.
Best,
Marko Obrovac, PhD Senior Services Engineer Wikimedia Foundation
[0] https://www.mediawiki.org/wiki/Wikimedia_Services [1] https://github.com/wikimedia/restbase-mod-table-sqlite [2] https://www.mediawiki.org/wiki/RESTBase [3] https://en.wikipedia.org/api/rest_v1/?doc (for a complete list of supported domains go to https://rest.wikimedia.org/) [4] https://phabricator.wikimedia.org/tag/restbase/ [5] https://phabricator.wikimedia.org/tag/restbase-api/ [6] https://www.mediawiki.org/wiki/MediaWiki-Vagrant [7] https://github.com/wikimedia/restbase-mod-table-spec [8] https://www.mediawiki.org/wiki/Parsoid [9] https://github.com/wikimedia/service-runner [10] https://phabricator.wikimedia.org/T90668
wikitech-l@lists.wikimedia.org