prisma-engines VS gh-ost

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

prisma-engines

🚂 Engine components of Prisma ORM (by prisma)

gh-ost

GitHub's Online Schema-migration Tool for MySQL (by github)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
prisma-engines gh-ost
10 32
1,117 12,038
3.5% 0.9%
9.7 7.5
4 days ago 9 days ago
Rust Go
Apache License 2.0 MIT License
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.

prisma-engines

Posts with mentions or reviews of prisma-engines. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-10-09.
  • We migrated to SQL. Our biggest learning? Don't use Prisma
    11 projects | news.ycombinator.com | 9 Oct 2023
    This is a very strange comment section. And this article is insanely poorly written.

    > Last week, we completed a migration that switched our underlying database from MongoDB to Postgres.

    Okay cool, but why? MongoDB is a very capable and fast database.

    > It was a shock finding out that Prisma needs almost a “db” engine layer of its own. Read more about it here: https://www.prisma.io/docs/concepts/components/prisma-engine...

    If you did any research on Prisma rather than diving in head-first, you'd realize this is a core part of why Prisma exists.

    > we discovered that at a low level, Prisma was fetching data from both tables and then combining the result in its “Rust” engine. This was a path for an absolute trash performance.

    Can you confirm this is actually the case? Can you show some benchmarks re: this claim? Or are you just assuming this is the case?

  • Prisma laying off 28% staff
    5 projects | news.ycombinator.com | 22 Jan 2023
    If you wish to auto-generate migrations, there are declarative schema change tools available for most relational databases. I'm the creator of Skeema [1] which provides them for MySQL, but there are options for other DBs too [2][3][4].

    Prisma's migration system actually partially copied Skeema's design, while giving credit in a rather odd fashion which really rubbed me the wrong way: "The workflow of working with temporary databases and introspecting it to determine differences between schemas seems to be pretty common, this is for example what skeema does." [5]

    While I doubt I was the first person to ever use that technique, I absolutely didn't copy it from anywhere, and it was never "pretty common". I'm not aware of any other older schema change systems that work this way.

    [1] https://www.skeema.io

    [2] https://github.com/djrobstep/migra

    [3] https://github.com/k0kubun/sqldef

    [4] https://david.rothlis.net/declarative-schema-migration-for-s...

    [5] https://github.com/prisma/prisma-engines/blob/6be410e/migrat...

  • Maintenance of popular ORMs (explanation inside)
    7 projects | /r/node | 22 Nov 2022
    If you're serious about your review then you shouldn't ignore the fact that Prisma has a big blob of Rust code at its core, where other ORMs use standard database adapters from NPM. As someone who has maintained database adapters for other languages, let me tell you that the maintenance burden of that is quite significant. Especially if they ever want to support more advanced database features. If the company behind Prisma ever runs out of money, the project is probably toast.
  • Show HN: WunderBase – Serverless OSS Database on Top of SQLite, Firecracker
    6 projects | news.ycombinator.com | 15 Sep 2022
  • If Prisma's query engine is compiled by Rust, why don't I need Rust to compile it?
    1 project | /r/typescript | 26 Aug 2022
    prisma generate generates the code for the Prisma client. The code generated for the client is all JavaScript which calls into the “Prisma Engine” Rust native Node module to perform database operations. As others here have said, the Prisma Engine is pre-compiled by rustc via CI and gets dowloaded to your machine as a pre-built binary by npm, so there’s no need for you to build it yourself by running the Rust compiler locally.
  • Alternatives to SQLAlchemy for your project - Prisma case
    12 projects | dev.to | 8 Aug 2022
    Note: you may notice that it downloads some binaries when you first invoke this command. This is normal it fetches the node prisma cli and engines used by prisma. 😁
  • I went about learning Rust
    10 projects | news.ycombinator.com | 15 Jul 2022
    We solved this with flat vectors and just sharing index values in cheap walker objects. It is much nicer to work with compared to arc/weak pointers.

    Code here: https://github.com/prisma/prisma-engines/tree/main/libs%2Fda...

  • Show HN: Prisma Python – A fully typed ORM for Python
    5 projects | news.ycombinator.com | 21 Feb 2022
    Because Prisma Python currently interfaces with the Rust engine over HTTP (I am looking into changing this) and the Rust engines can be found here:

    https://github.com/prisma/prisma-engines

  • MariaDB to go public at $672M valuation
    3 projects | news.ycombinator.com | 1 Feb 2022
    Thanks! I know of a couple Postgres tools that work in a declarative fashion: migra [1] and sqldef [2].

    Migra is Postgres-specific. Its model is similar to Skeema's, in that the desired-state CREATEs are run in a temporary location and then introspected, to build an in-memory understanding of the desired state which can be diff'ed against the current actual state. (This approach was also borrowed by Prisma Migrate [3]). In this manner, the tool doesn't need a SQL parser, instead relying on the real DBMS to guarantee the CREATE is interpreted correctly with your exact DBMS version/flavor/settings.

    In contrast, sqldef supports multiple databases, including Postgres and MySQL (among others). Unlike other tools, it uses a SQL parser-based approach to build its in-memory understanding of the desired state. As a DB professional, personally this approach scares me a bit, given the amount of nonstandard stuff in each DBMS's SQL dialect. But I'm inherently biased on this topic. And I will note sqldef's author is a core Ruby committer and JIT author, and is extremely skilled at parsers.

    [1] https://databaseci.com/docs/migra

    [2] https://github.com/k0kubun/sqldef

    [3] https://github.com/prisma/prisma-engines/blob/main/migration...

  • Prisma 2 - When Can I Use it Alone and When Should I add Graphql
    1 project | /r/graphql | 5 Jul 2021
    Prisma 2 is a program, written in Rust that exposes a GraphQL API on top of your database of choice. Here's a link to the "engine": https://github.com/prisma/prisma-engines

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.
  • "At GitHub we do not use foreign keys, ever, anywhere"
    1 project | news.ycombinator.com | 22 Jan 2024
  • How Modern SQL Databases Are Changing Web Development - #3 Better Developer Experience
    4 projects | dev.to | 8 Dec 2023
    I’ve been through multiple incidents where everything worked fine in the testing environment but ended up locking the production database for minutes when deployed. A category of open-source tools called OSC (Online Schema Change) exists to mitigate such pain, like gh-ost used by GitHub and OSC used by Meta. They work by creating a set of "ghost tables" to apply the migrations, copy over old data from the original tables, and catch up with new writes simultaneously. When all old data is migrated, you can trigger a cutover to make the "ghost tables" production. Check the post below for a great introduction and comparison:
  • We migrated to SQL. Our biggest learning? Don't use Prisma
    11 projects | news.ycombinator.com | 9 Oct 2023
    Sounds like it's basically explained in the gh-ost readme https://github.com/github/gh-ost#how

    I think it amounts to "use views to decouple access to the table with a fixed interface" and "use triggers for migrating data between tables"

  • Ask HN: Is PostgreSQL better than MySQL?
    2 projects | news.ycombinator.com | 17 Apr 2023
    Gh-ost is the new hotness. Simple to use and lots of great features: https://github.com/github/gh-ost
  • My Green/blue AWS db deployment strategy for avoiding data loss due to table locks
    1 project | /r/devops | 21 Mar 2023
    If the performance of the db is a concern during migrations (locking, high cpu consumption for large writes) there are tools that can help and do similiar to what your describing but with the benefit that they are battle tested tools. This one spring to mind https://github.com/github/gh-ost there are other options as well and its worth reading the trade off docs
  • Changing column from longtext to mediumtext taking over 2 hours
    3 projects | /r/mysql | 4 Nov 2022
    Not sure which version of MySQL you're using, but one approach would be to use a tool like pt-online-schema-change (from Percona) or g-host -- which will create a duplicate table and then swap it in place of the original table. It's a safer approach when operating in production environments. Here's a good comparison of the tools many people use https://planetscale.com/docs/learn/online-schema-change-tools-comparison
  • Ask HN: Do you use foreign Keys in Relational Databases
    1 project | news.ycombinator.com | 6 Sep 2022
    No, especially on large tables with billions of records. They make online schema changes impossible. More details: https://github.com/github/gh-ost/issues/331#issuecomment-266...
  • Migrating a production database without any downtime
    1 project | dev.to | 13 Aug 2022
    Tip #4: Consider slow-running migrations. Some tables can be so large that the traditional migration way is simply not a viable option for them. In such cases, you can consider embedding the data migration code right into your application, or use a special utility like GitHub's online schema migration for MySQL. A slow-running migration can work in production for days or even weeks. It gradually converts the data by small chunks, so you can carefully balance the load on the database while making sure that it doesn't cause slowness or downtime.
  • How do you handle RDS schema migrations?
    1 project | /r/aws | 27 May 2022
    GitHub gh-ost
  • Changing Tires at 100mph: A Guide to Zero Downtime Migrations
    9 projects | news.ycombinator.com | 4 May 2022
    Actually I never tried but I was scared by the small print of GH not using RDS themselves [1] and Ghost relying on lower-level features that might be not easily available in RDS. Also I had the impression you have to setup a normal non-RDS replica attached to your RDS master?

    [1] https://github.com/github/gh-ost/blob/master/doc/rds.md

What are some alternatives?

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

litefs - FUSE-based file system for replicating SQLite databases across a cluster of machines

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]

migra - Like diff but for PostgreSQL schemas

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

sqldef - Idempotent schema management for MySQL, PostgreSQL, and more

squawk - 🐘 linter for PostgreSQL, focused on migrations

gopy - gopy generates a CPython extension module from a go package.

pg_squeeze - A PostgreSQL extension for automatic bloat cleanup

prisma-client-rust - Type-safe database access for Rust

hub - A command-line tool that makes git easier to use with GitHub.

pocketbase - Open Source realtime backend in 1 file

Jenkins - Jenkins automation server