|
|
|
|
|
by lewantmontreal
1594 days ago
|
|
> Simply track your desired schema state in a repo of CREATE statements, and the tool figures out how to apply any changes to your tables and routines. Wow, this sounds extremely useful, great job! Does anyone know anything like this for Postgres? |
|
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 has also been borrowed by other recent tools, including 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...