Top all-time · #12875
Safe schema management for MySQL and MariaDB on Skeema
Company blog · skeema.io/blog · on HN as evaneliasdataprogramming
Safe schema management for MySQL and MariaDB on Skeema is the company blog at skeema.io, writing about data and programming. Since 2019, 6 different Hacker News readers have linked it 59 times, most often “MySQL vs. MariaDB: Tables and DDL”. It is still writing: the last post was on 2026-06-25, and you can follow it by feed.
Too few sampled comments (3) to say how often HN recommends it.?
Why HN links it
Homepage of Skeema, a tool for declarative schema management in MySQL and MariaDB. Commenters cite it as an example of defining the desired table structure in code, and one says it looks like a good product.
Summarised by Claude from a sample of 3 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Schema management system for MySQL and MariaDB, providing a declarative pure-SQL infrastructure-as-code workflow.
Most-linked posts?
- /3 people · 3 mentions · first linked 2019-12-05
- MySQL vs. MariaDB: Tables and DDL2 people · 6 mentions · first linked 2023-05-10
- Five Surprises in MySQL 8.4 LTS2 people · 2 mentions · first linked 2024-05-14
What Hacker News says?
A few strategies used by large companies, e.g. Facebook where the author worked for some time: * Use external online schema change tooling which operates on a shadow table, so the tooling can be interrupted without affecting the original table. (Generally all of the open source MySQL online schema change tools work this way.) * Use declarative schema management (e.g. tool operates on repo of CREATE TABLE statements)…
Comment linking /
on “Some items from my “reliability list””Submitted Five Surprises in MySQL 8.4 LTS as a story · 4 points
HN discussionIt could be interesting to separate the visualization functionality from the syncing/sharing aspect. For example, if you store the schema representation as a logical dump (CREATE statements) in a git repo, syncing/sharing becomes trivial. This also provides a branch workflow for collaborative editing, and the commit history serves as an authoritative changelog. From this point of view, it could be compelling to have…
Comment linking /
on “Gallery of database schema diagrams of open-source packages”Submitted Five Surprises in MySQL 8.4 LTS as a story · 4 points
HN discussionThese days, most smaller users go with a managed DBaaS such as AWS RDS, and on RDS MySQL gets massively more usage than MariaDB. I build schema management software for MySQL and MariaDB, https://www.skeema.io , used by several hundred companies. Among my userbase, MariaDB is a tiny minority, to such an extent that I wonder if it's worthwhile to continue keeping up with their new quarterly release schedule.
Comment linking /
on “MariaDB to go public at $672M valuation”Submitted Exploring AWS Aurora v3 for MySQL 8 as a story · 3 points
HN discussionWhile I agree with the overall negative opinion of overzealous stored procedure usage, to echo your last sentence, I've come to realize many of these problems are completely solvable with tooling. A personal anecdote, and please excuse the self-plug: I'm the author of an infrastructure-as-code tool for MySQL/MariaDB schema management, Skeema [1]. Basically it allows you to store CREATE statements in a repo, and you…
Comment linking /
on “Aquameta: Web development platform built in PostgreSQL”Submitted Versioning and Deploying Stored Procedures as a story · 1 points
HN discussionIt's a very boring technique really in hindsight. I guess one is really at the top 1% when you work at a high scale company and you see techniques that question the assumptions one holds. Databases like MySQL, as you pointed out, are embracing this technique, but make the inner data indexable. Also https://www.skeema.io/ looks like a good product that I'll have to checkout. Looks like a better product so far compare…
Comment linking /
on “Scaling Etsy”Submitted MySQL vs. MariaDB: Tables and DDL as a story · 1 points
HN discussion> "migration commands based on the git history"... what does that even mean? What does git history has to do with the database? I'm not sure what git-specific interaction the author is envisioning, but more generally: declarative schema management tools are based on the notion of using a repo to store only CREATE statements. It's an infrastructure-as-code style approach, where to modify an existing table, you just m…
Comment linking /
on “ORMs Are Backwards”Submitted MySQL vs. MariaDB: Tables and DDL as a story · 1 points
HN discussionThat's largely only true for schema names and table names, not all identifiers. The original root cause was having schemas backed by directories, and table definitions backed by .frm files. So on a case-insensitive filesystem like on Windows or MacOS, MySQL enables corresponding case-insensitivity logic for the affected types of identifiers. For a deeper dive, see my post https://www.skeema.io/blog/2022/06/07/lower-…
Comment linking /blog/2022/06/07/lower-case-table-names/
on “Prisma Postgres – Runs on bare metal and unikernels”Submitted Safely switching MySQL charsets using Skeema as a story · 1 points
HN discussionExcellent question! The short answer is Skeema doesn't directly support renames yet. Renames are inherently more imperative than declarative, so they don't fit in well with the model. I've thought about handling them via tracking their history/state, but it would be hacky. Two workarounds exist in Skeema currently: * You can do the rename "out of band" (e.g. manually, rather than via `skeema push`), and then update…
Comment linking /blog/2019/01/18/declarative/
on “Ask HN: How does your development team handle database migrations?”I call this declarative schema management, since the repo declares the desired state, and the tooling knows how to reach this state. This concept is finally catching on lately, although some huge companies have already been doing it this way for quite some time. Facebook is a key example; they've managed their schema changes in a pure-SQL declarative fashion, company-wide, for nearly a decade. I'm developing a suite…
Comment linking /
on “Ask HN: How does your development team handle database migrations?”Hi, engineer at PlanetScale and maintainer for Vitess here. Appreciate your thoughtful comment, a couple answers: > is something that sounds like I could do ... from Git platforms themselves Git is very bad at analyzing SQL diffs. It can show you the textual diff between two CREATE TABLE statements, but it will not know what it takes to get you from _here_ to _there_. It has many parsing issues, like capturing irrel…
Comment linking /
on “PlanetScale is now generally available”Declarative schema management provides some nice properties that aren't present in imperative/migration-based tools. I'm the creator of a widely-used declarative tool for MySQL/MariaDB called Skeema, and I wrote a blog post summarizing some advantages a few years back: https://www.skeema.io/blog/2019/01/18/declarative/ You are correct that renames are problematic with declarative tools, but in production renames are…
Comment linking /blog/2019/01/18/declarative/
on “Atlas – Terraform but for Database Migrations”More specifically, mysql_native_password is disabled by default in 8.4, but can be re-enabled if needed: https://www.skeema.io/blog/2024/05/14/mysql84-surprises/#aut...
Comment linking /blog/2024/05/14/mysql84-surprises/
on “Upgrading Uber's MySQL Fleet”While it is indeed often faster, it isn't drop-in. MySQL and MariaDB have diverged over the years, and each has some interesting features that the other lacks. I wrote a summary of the DDL / table design differences between MySQL and MariaDB, and that topic alone is fairly long: https://www.skeema.io/blog/2023/05/10/mysql-vs-mariadb-schem... Another area with major differences is replication, especially when moving…
Comment linking /blog/2023/05/10/mysql-vs-mariadb-schema/
on “Upgrading Uber's MySQL Fleet”> without migration scripts, like editing source code. Just a quick “deploy” and the logic is updated. This is 100% the key to sanity with managing database stored procedures and functions -- ability to manage them in Git like normal code and deploy them like code. In contrast, the workflow from traditional imperative database "migration" tools is just super awkward for developing and maintaining any non-trivial num…
Comment linking /blog/2023/10/24/stored-proc-deployment/
on “We built our customer data warehouse all on Postgres”Looks nice! In case anyone is interested in a MySQL/MariaDB alternative, my tool Skeema can give a similar Git-friendly deploy flow for stored procedures, with all definitions tested in a temporary schema automatically so that any syntax errors are caught early before touching prod. Skeema was originally designed for declarative management of tables, but it can optionally be configured to only operate on procs/funcs…
Comment linking /blog/2023/10/24/stored-proc-deployment/
on “Sqlc: Compile SQL to type-safe code”> Your entire approach smells like a very manual process that doesn't work for teams any larger than 1 person. You may be misunderstanding the concept. Automated declarative schema management (AKA diff-based approach) has been successfully used company-wide by Facebook for nearly a decade, to manage schema changes for one of the largest relational database installations on the planet. It's also a widely used approac…
Comment linking /blog/2019/01/18/declarative/
on “Show HN: Version Control for Databases”I'm the author of a schema management tool, Skeema [1], designed to solve this problem for MySQL and MariaDB. There are a number of other existing tools that can compare/diff schemas on 2 live databases, but Skeema is designed to also actually manage your database structure through a declarative repo of CREATE statements. It works at any scale (natively supports sharding and external OSC tools) and is trusted by sev…
Comment linking /
on “Show HN: Version Control for Databases”These problems are definitely solvable with proper tooling. The specific challenges vary between RDBMS though. For example when running schema changes on large-scale MySQL/MariaDB, the key things are supporting external OSC tools, and supporting sharding. I wrote a diff-based schema management system, https://skeema.io , designed with precisely these concerns in mind.
Comment linking /
on “Surviving Django, if you care about databases”It seems like it could be used for declarative schema management (like https://www.skeema.io/ ) where you define the table structure you want in code and the application diffs a database and performs whatever changes is needed to reflect the requested schema.
Comment linking /
on “Get PostgreSQL Database Structure as a Detailed JavaScript Object”I work heavily in this space and can add some more details :) Tusker actually uses Migra to power its functionality: https://github.com/bikeshedder/tusker#how-does-it-work Tusker's flow is somewhat similar to sqldef https://github.com/k0kubun/sqldef , although the internal mechanics are quite different. Migra/Tusker executes the SQL in a temporary location, introspects it, and diffs the introspected in-memory repres…
Comment linking /
on “Migra: Diff for PostgreSQL schemas”Another option is a schema management tool that doesn't rely on migrations at all. I'm the author of one, Skeema [1], for MySQL/MariaDB. Others include migra [2] for Postgres, and sqldef [3] for MySQL or Postgres. These all use a declarative approach [4], where the user just specifies the desired new state, by adding or changing the set of CREATE statements. The tool knows how to run the correct DDL to reach that ne…
Comment linking /blog/2019/01/18/declarative/
on “Why We Chose Rails to Build Gitlab”UDB had hundreds of tables per shard, and although there are a few common patterns, they did not all have an exactly identical structure. You have two former FB database engineers in this thread (myself + rwultsch) telling you your statement is incorrect. Nothing in Domas's post discusses lack of schema changes or tables being identical. Linkbench is unmaintained and does not attempt to mirror the entirety of UDB, j…
Comment linking /
on “Why Uber Engineering Switched from Postgres to MySQL (2016)”Schema management tools often include built-in linters. I added a linter engine to my MySQL/MariaDB schema management tool Skeema back in 2019 and it proved to be a popular feature [1]. A couple more recent entrants in this space include ByteBase [2] and Atlas [3]. When selecting a linter, I'd just recommend ensuring the author(s) are deeply experienced in your particular DBMS. Otherwise they tend to cargo-cult bad…
Comment linking /docs/features/safety/
on “Database Linting and Analysis for PostgreSQL”