[HN Gopher] Atlas - Terraform but for Database Migrations
       ___________________________________________________________________
        
       Atlas - Terraform but for Database Migrations
        
       Author : wg0
       Score  : 42 points
       Date   : 2022-01-21 07:23 UTC (1 days ago)
        
 (HTM) web link (atlasgo.io)
 (TXT) w3m dump (atlasgo.io)
        
       | hankchinaski wrote:
       | Is it just me or I hate to learn new configuration languages that
       | may disappear in no time after having invested time and effort
       | learning them? Not just the syntax but all the nuances and the
       | configuration options that come with it. If it was a migration
       | tool using ANSI SQL as a configuration language I would have been
       | to try it out. You can probably achieve the same declarative
       | style by using SQL and running a diff between the expected state
       | and the current state. So not sure why the custom language is
       | needed
        
       | kabes wrote:
       | How does this compare to liquibase?
        
       | redact207 wrote:
       | I'll never be comfortable with any tool for that automatically
       | generates schema changes, as I'm just never sure at what point it
       | decides to delete parts of my prod db.
       | 
       | All of my migrations are dumb DDL statements rolled up into a
       | version. I know exactly what the final state is as it gets run
       | and used when integration testing, staging etc.
       | 
       | It's boring but pretty bulletproof. I can rename a table and be
       | confident it'll work, rather than some tool that might decide to
       | drop and create a new table.
       | 
       | I can also continue to use SQL and not have to learn HCl for
       | databases. This is useful when I want to control how updates are
       | done, if I want index updates to be done concurrently Vs locking
       | the table.
        
       | ZiiS wrote:
       | When documenting a migration tool, show an example of renaming a
       | column before working on the logo.
        
         | jiggawatts wrote:
         | This is always my only question when the salesperson is
         | finished pitching some new provisioning or identity management
         | tool.
         | 
         | "Can I rename users when they change their name?"
         | 
         | "Does that happen that often?"
         | 
         | "Half the staff here are female and may change their surname
         | when they get married."
         | 
         | "Err.. umm... I think that's a work in progress."
         | 
         | "It's fundamentally impossible with your architecture and it's
         | the thing that we need most help automating."
         | 
         | "Err..."
         | 
         | "Thank your for your presentation, we may or may not be in
         | touch."
        
       | brycelarkin wrote:
       | Is there a reason for creating your own DDL? I imagine it'd be
       | possible to use SQL DDL, introspect the database, and then
       | generate the appropriate DDL for the migration.
       | 
       | Does the Atlas DDL include more info over sql DDL?
        
       | TameAntelope wrote:
       | The dream for any kind of tool like this is to only have to
       | define your data structures once, and use the tool to "generate"
       | related code rather than try to keep two different artifacts in
       | sync (e.g. a GraphQL schema and this DDL).
       | 
       | How far along that path has this project progressed? I can't
       | really tell from the main page.
        
         | danielrhodes wrote:
         | You might find something like Hasura interesting.
         | 
         | https://hasura.io/
         | 
         | It is a GraphQL server that sits on top of your Postgres DB and
         | the schema reflects the table schema. It's quite powerful right
         | out of the box.
         | 
         | If you combine that on the front-end with Apollo and a
         | Typescript types code generator, you end up with strong typing
         | all the way from your database to the front-end.
        
           | TameAntelope wrote:
           | I went with Prisma + Nexus + Pal.js + Apollo, which was
           | probably at least two layers too complex.
           | 
           | I'm looking, still, for an all-in-one solution to this,
           | though I do need more control over my queries/mutations than
           | what Hasura would give me.
        
       ___________________________________________________________________
       (page generated 2022-01-22 23:00 UTC)