models
postgres_migrator
models | postgres_migrator | |
---|---|---|
2 | 7 | |
50 | 80 | |
- | - | |
0.0 | 5.1 | |
over 2 years ago | 4 months ago | |
Rust | Rust | |
Apache License 2.0 | MIT License |
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.
models
-
Automated migrations for Rust
For Postgres and Mysql I only do a move if the user changed the type of a column. However, I'm not sure if this is absolutely necessary. I may revisit that, as I don't want to generate unnecessary moves. For Sqlite3, moves are necessary if the user wants to either delete a column, delete a constraint or add a constraint, as it doesn't support those statements. The program should create a table called temp, move all the rows to the new table, and then rename it. I'm not so proud of the code as it is right now though. I think it can still be a little clearer, but in line 203 of get_changes.rs you can see the point at which is determined if a move to a temporary table occurs.
postgres_migrator
-
We built our customer data warehouse all on Postgres
Thanks! Yeah definitely agree that building out declarative table management for Postgres would be a major effort. A few open source projects I've seen in that area include:
https://github.com/sqldef/sqldef (Go)
https://github.com/bikeshedder/tusker (Python but being ported to Rust)
https://github.com/tyrchen/renovate (Rust)
https://github.com/blainehansen/postgres_migrator (Rust)
Some of these are based on parsing SQL, and others are based on running the CREATEs in a temporary location and introspecting the result.
The schema export side can be especially tricky for Postgres, since it lacks a built-in equivalent to MySQL's SHOW CREATE TABLE. So most of these declarative pg tools shell out to pg_dump, or require the user to do so. But sqldef actually implements CREATE TABLE dumping in pure Golang if I recall correctly, which is pretty cool.
There's also the question of implementing the table diff logic from scratch, vs shelling out to another tool or using a library. For the latter path, there's a nice blog post from Supabase about how they evaluated the various options: https://supabase.com/blog/supabase-cli#choosing-the-best-dif...
-
Pgroll: zero-downtime, undoable, schema migrations for Postgres
Forr postgres, how does the schema diffing aspect compare to migra?
https://github.com/djrobstep/migra
I'm asking because, although migra is excellent and there are multiple migrations tools based on it (at least https://github.com/bikeshedder/tusker and https://github.com/blainehansen/postgres_migrator), issues are piling up but development seem to be slowing down
-
Diesel 2.1
Is this similar to migra? There's a tool written in Rust that calls it, postgres_migrator (there's also tusker)
-
Ask HN: ORM or Native SQL?
The best solution I've ever seen is this Rust library https://github.com/cornucopia-rs/cornucopia
You write plain SQL for you schema (just a schema.sql is enough) and plain SQL functions for your queries. Then it generates Rust types and Rust functions from from that. If you don't use Rust, maybe there's a library like that for your favorite language.
Optionally, pair it with https://github.com/bikeshedder/tusker or https://github.com/blainehansen/postgres_migrator (both are based off https://github.com/djrobstep/migra) to generate migrations by diffing your schema.sql files, and https://github.com/rust-db/refinery to perform those migrations.
Now, if you have simple crud needs, you should probably use https://postgrest.org/en/stable/ and not an ORM. There are packages like https://www.npmjs.com/package/@supabase/postgrest-js (for JS / typescript) and probably for other languages too.
If you insist on an ORM, the best of the bunch is prisma https://www.prisma.io/ - outside of the typescript/javascript ecosystem it has ports for some other languages (with varying degrees of completion), the one I know about is the Rust one https://prisma.brendonovich.dev/introduction
- migrator: automatically generate postgres migrations from a declarative raw sql schema
- migrator: automatically generate postgres migrations from a declarative raw sql schema, written in Rust
- Migrator: Automatically generate Postgres migrations from declarative SQL schema
What are some alternatives?
SSD-Mobilenet-Custom-Object-Detector-Model-using-Tensorflow-2 - This repository contains the script and process to create custom SSD Mobilenet model for object detection
refinery - Powerful SQL migration toolkit for Rust.
tensorflow - An Open Source Machine Learning Framework for Everyone
pgroll - PostgreSQL zero-downtime migrations made easy
Tesseract.js - Pure Javascript OCR for more than 100 Languages 📖🎉🖥
migra - Like diff but for PostgreSQL schemas
deeplab-training - Training your own Deeplab Model in Tensorflow
quantumdb - Zero-downtime schema evolution for PostgreSQL
safeql - Composable / async / functional / type-safe / parallel-pipelined queries and relations without SQL injection or N+1s.
tusker - PostgreSQL migration management tool
cornucopia - Generate type-checked Rust from your PostgreSQL.
reshape - An easy-to-use, zero-downtime schema migration tool for Postgres