If you prefer, you can think of that as 4:30pm EDT, 5:30am JST, or 20:30 UTC. We are budgeting 120 minutes, and we think we’ll need the full window. We’re doing some long-needed database maintenance, and processing all those reviews takes a while.
As usual, we’ll post updates during the maintenance window and let everyone know how it’s going. We’ll also post an update here when it’s all done so you can dive back in and make even more review records for us to store.
As someone who’s fairly technical but has never used a database before, what does “database maintenance” actually entail? Is it a physical, hardware maintenance sort of thing, or more of a software check? If it is software-side, what does that involve?
I know it’s something basically every online service has to do periodically, but I’ve never quite been sure what it was, so I just thought I’d ask out of curiosity
It depends a lot on the database technology used. Older versions of MySQL will suspend all access to a table if you add a new column or an index, for example.
In that scenario, it’s better for website visitors to see a maintenance page instead of the page taking forever to load.
Databases are lots of interconnected tables. Sometimes if you want to remove data from a table, you have to delete all the related data in other tables. Depending on the nature of the data, this can take a lots of time, so sometimes it is better to let the unnecessary data accumulate, and clean it all in one batch. Also if a table is changed, (like extra columns or something) new data might be calculated by using tons of other data. To prevent errors you either block users from inserting new data (=downtime), or you spend tons of time to plan complex solutions to avoid problems.
Ok, that makes sense. So I guess this kind of maintenance would indicate some kind of change in the structure of the database, like adding or removing a column/table? Or would you have to do it periodically just to clear out old data?
“Database maintenance” could refer to any work that requires downtime for the production database (e.g. even stuff like server os update). And in most modern tech companies you don’t have any physical servers, everything’s in the cloud. And actually downtime shouldn’t be required at all as you can run several instances of the db and the app at the same time and switch the traffic from the old to the new one when the update is done.
As in, could be either or both. It all depends on how the WK system was originally designed.
With proper database design, these days periodic downtime for periodic maintenance can usually be avoided: either the periodic maintenance is not necessary at all, or it can be done ‘online’ while the service keeps running. It still happens with some systems, especially complex systems, but WK doesn’t have regular (weekly, monthly, …) downtime to announce, so we’re probably not talking about periodic maintenance here.
Looking into my crystal ball here, and reading oldbonsai’s announcement, I’d say they’re either doing a big overhaul of how the data is stored in the database, or they’re migrating to a newer/different database server, and they’ll need to transfer all of the data to the new place. Since WK stores data about every review anyone here does, that’s a lot of data, and that takes time. If people submit new reviews during that time, they might get lost during the transfer (although there are ways around that). So they’re just going to shut down the service to avoid that, and do it in one big push. And after that, everything will be exactly as it was, but with a faster, shinier database that goes ‘ping’ very time someone complains about having to wait so long for new lessons
All guesswork of course, but I’ve spent plenty of time in the trenches dealing with temperamental terabyte-sized databases…