gh-ost VS skeema

Compare gh-ost vs skeema and see what are their differences.

gh-ost

GitHub's Online Schema-migration Tool for MySQL (by github)

skeema

Declarative pure-SQL schema management for MySQL and MariaDB (by skeema)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
gh-ost skeema
32 6
11,934 1,220
1.0% 1.0%
7.4 8.2
4 days ago 13 days ago
Go Go
MIT License Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

gh-ost

Posts with mentions or reviews of gh-ost. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-08.

skeema

Posts with mentions or reviews of skeema. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-27.
  • Ask HN: Startup Devs -What's your biggest pain while managing cloud deployments?
    6 projects | news.ycombinator.com | 27 Mar 2024
    I’d argue the obvious answer is address the lack of great answers for declarative schema migration in PostgreSQL. There is Skeema https://github.com/skeema/skeema but it doesn’t support Postgres and Prisma iirc forces you into an ORM, atlas looks perfect but has a nonstandard license.
  • Russ Cox: Go Testing by Example
    8 projects | news.ycombinator.com | 5 Dec 2023
    Using tmpfs for MySQL/MariaDB's data directory helps tremendously. If you're using Docker natively on Linux, use `docker run --tmpfs /var/lib/mysql ...` and that'll do the trick. Only downside is each container restart is slightly slower due to having to re-init the database instance from scratch.

    Tuning the database server settings can help a lot too. You can add overrides to the very end of your `docker run` command-line, so that they get sent as command-line args to the database server. For example, use --skip-performance-schema to avoid the overhead of performance_schema if you don't need it in your test/CI environment.

    For MySQL 8 in particular, I've found a few additional options help quite a lot: --skip-innodb-adaptive-hash-index --innodb-log-writer-threads=off --skip-log-bin

    A lot of other options may be workload-specific. My product Skeema [1] can optionally use ephemeral containerized databases [2] for testing DDL and linting database objects, so the workload is very DDL-heavy, which means the settings can be tuned pretty differently than a typical DML-based workload.

    [1] https://github.com/skeema/skeema/

    [2] https://www.skeema.io/docs/options/#workspace

  • Database character sets and collations explained – why utf8 is not UTF-8
    3 projects | news.ycombinator.com | 5 Jan 2022
    VARCHAR(N) can store N characters. So with utf8mb3, that's a max of 3N bytes worst-case. But with utf8mb4, it's now 4N bytes, which (with a high N) may exceed internal limits such as maximum length of an index key.

    IIRC, there were additional problems in older versions of MySQL, situations where sort buffers were sized to a fixed length equal to the value's worst-case size or something like that. So sorting a large number of utf8mb4 values would use a lot more memory than utf8mb3 values (again, iirc, I might be wrong on this).

    So the safer and more backwards-compatible approach was to introduce utf8mb4 as a new separate charset, and allow users to choose. MySQL 8 is now transitioning towards deprecating utf8mb3, and will finally make the utf8 alias point to utf8mb4 sometime in the near future.

    That said, there are still a bunch of unpleasant uses of utf8mb3 internally in things like information_schema. I develop schema management tooling and recently lost a week to some of the more obscure ones in https://github.com/skeema/skeema/commit/bf38edb :)

  • Are entity framework tools typically avoided with MySQL & Go and are there alternatives for migration script tooling that version control the entire schema like SSDT?
    2 projects | /r/golang | 16 Nov 2021
    I realize my paradigm on schema driven projects comes probably from my background. I found a very similar tool by chance when reading through my latest feeds and found this tool: https://github.com/skeema/skeema

What are some alternatives?

When comparing gh-ost and skeema you can also consider the following projects:

sql-migrate - SQL schema migration tool for Go.

pg-online-schema-change - Easy CLI tool for making zero downtime schema changes and backfills in PostgreSQL [Moved to: https://github.com/shayonj/pg-osc]

doctrine-test-bundle - Symfony bundle to isolate your app's doctrine database tests and improve the test performance

migrate - Database migrations. CLI and Golang library.

noms - The versioned, forkable, syncable database

go-mysql-elasticsearch - Sync MySQL data into elasticsearch

tidb - TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://tidbcloud.com/free-trial

atlas - A modern tool for managing database schemas

rqlite - The lightweight, distributed relational database built on SQLite.

prometheus - The Prometheus monitoring system and time series database.

vitess - Vitess is a database clustering system for horizontal scaling of MySQL.

squawk - 🐘 linter for PostgreSQL, focused on migrations