[{"data":1,"prerenderedAt":435},["ShallowReactive",2],{"project-21742222":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":42,"post_text":46,"what":47,"said":77,"maker_in_thread":160,"shape":167,"grid":170,"attempts":398,"same_week":399,"maker_shows":43,"maker_hidden":428,"reader_version":429,"card":430},"21742222","db","Version Control for Databases","title","Show HN: Version Control for Databases","https:\u002F\u002Fgithub.com\u002Finfostreams\u002Fdb","github.com","akie",1575896795,2019,224,88,167,2195,8,"notable","dev_tools","database snapshot tool","cli",[24,25,26,27],"database versioning","mysql snapshot","database backup","schema migration","debated",-0.12,{"positive":31,"neutral":32,"mixed":33,"critical":34},7,11,0,10,28,{"idea":37,"docs":40,"execution":41},{"positive":38,"critical":39},6,9,{"positive":33,"critical":33},{"positive":33,"critical":33},[43,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,44,43,33,33,43,45,44,43,33,43,45,33,33,43,45,45,43,45,43,43,44,44,44],1,5,3,null,{"problem":48,"audience":55,"pricing":46,"motivation":62,"time_to_build":46,"stack":67,"openness":75,"stage":76,"team_size":75},{"value":49,"source":50,"evidence":51},"Quickly saving and restoring database state during development","maker",[52],{"id":53,"by":11,"text":54},"21742245","I made this, and have been using it in production and for local development for the past year or two. It's been immensely helpful to quickly save or easily restore the database…",{"value":56,"source":50,"evidence":57},"Developers working with databases in development and staging",[58,59],{"id":53,"by":11,"text":54},{"id":60,"by":11,"text":61},"21745051","This is more meant as something that supplements migrations, as a “time machine” of your database so to speak. You would run it before you do any kind of potentially destructive…",{"value":63,"source":50,"evidence":64},"Simplify development and make database state easy to restore",[65,66],{"id":53,"by":11,"text":54},{"id":60,"by":11,"text":61},[68],{"value":69,"source":50,"evidence":70},"MySQL",[71,72],{"id":53,"by":11,"text":54},{"id":73,"by":11,"text":74},"21743499","Yes, so far this is MySQL only. I don't think adding Postgres support would be that far fetched, have a look at…","unknown","launched",{"praise":78,"objections":91,"requests":114,"questions":123,"alternatives":135},[79],{"value":80,"source":81,"evidence":82},"Useful for integration tests and dev\u002Fstaging workflows","commenter",[83,87],{"id":84,"by":85,"text":86},"21744189","simbakhadder","Seems useful as a tool for integration tests. Makes it a bit cleaner to update the state of a database and test against the application level code",{"id":88,"by":89,"text":90},"21743334","llagerlof","Nice idea to speed up the proccess of development and testing. Does the snapshot generated include the views, triggers and stored procedures?",[92,107],{"value":93,"source":81,"evidence":94},"Existing migration tools like Liquibase and Flyway already cover this",[95,99,103],{"id":96,"by":97,"text":98},"21744858","MadWombat","There are multiple tools that attempt to do this, some specific to a framework some not. To name a few, - flyway - liquibase - dbmate - alembic for python\u002Fsqlalchemy - django…",{"id":100,"by":101,"text":102},"21743625","llcoolv","Looks nice, but I don't see what advantages it has compared to liquibase or flyway.",{"id":104,"by":105,"text":106},"21744228","PaulKeeble","The way I have been doing database versioning and rollout for years is with Liquibase (https:\u002F\u002Fwww.liquibase.org\u002F). It is based on the Database refactoring book that came out…",{"value":108,"source":50,"evidence":109},"Only supports MySQL and phpMyAdmin connection is broken",[110,111],{"id":73,"by":11,"text":74},{"id":112,"by":11,"text":113},"21743684","Yes, that's why I originally added it. After a day of hacking I had it (mostly) working on one particular instance of phpmyadmin, but when I tried it on another one it completely…",[115],{"value":116,"source":81,"evidence":117},"Add PostgreSQL support",[118,122],{"id":119,"by":120,"text":121},"21747241","kuczmama","This is a really cool idea. Thanks for sharing this. I will definitely give it a go if you have postgres.",{"id":73,"by":11,"text":74},[124],{"value":125,"source":81,"evidence":126},"What advantage over dumping MySQL to git or using migrations",[127,131],{"id":128,"by":129,"text":130},"21744151","k-godwin","I'm not sure what advantage this has over putting MySQL dumps into git (or manually versioning them with filenames)?",{"id":132,"by":133,"text":134},"21743488","egyptiankarim","Is this approach materially different\u002Fmore scalable than using the active record, ORM, and seed file patterns supported by popular MVC frameworks (e.g., like how Rails does it…",[136,141,146,153],{"value":137,"source":81,"evidence":138},"Liquibase",[139,140],{"id":104,"by":105,"text":106},{"id":96,"by":97,"text":98},{"value":142,"source":81,"evidence":143},"Flyway",[144,145],{"id":96,"by":97,"text":98},{"id":100,"by":101,"text":102},{"value":147,"source":81,"evidence":148},"Dolt",[149],{"id":150,"by":151,"text":152},"21745206","timsehn","We built a Git-style version controlled SQL database called Dolt (https:\u002F\u002Fgithub.com\u002Fliquidata-inc\u002Fdolt) mentioned deep in this thread. It allows diffs and merges across schema…",{"value":154,"source":81,"evidence":155},"Titan Data",[156],{"id":157,"by":158,"text":159},"21744481","ericschrock","I'm working on a project looking to solve a similar problem, but using a very different mechanism to provide git-like semantics for any database that runs in a container…",{"comments":31,"answered":45,"key":161},[162,163,166],{"id":53,"text":54},{"id":164,"text":165},"21750881","Yes, by all means please do. Simplicity of use is very important to me, so make sure it's generally applicable and easily understandable, but other than that - go for it! Awesome.",{"id":60,"text":61},{"commenters":168,"max_depth":34,"maker_replies":31,"first_comment_mins":44,"lifespan_hours":169},50,103,[171,173,177,181,184,187,190,192,194,196,198,200,203,205,208,211,213,215,217,219,221,223,225,227,230,232,234,236,239,241,244,248,251,254,257,259,261,263,267,271,273,275,278,281,284,287,289,291,294,297,301,304,307,308,311,314,316,318,322,326,329,331,333,335,338,340,342,343,345,346,349,350,354,358,361,364,366,368,371,375,377,381,383,385,387,389,392,394],[104,33,43,172,105,33],"project\u002Fcritical\u002Fidea",[174,33,33,175,176,33],"21744488","other\u002Fneutral\u002Fnone","jph",[178,33,33,179,180,33],"21747898","other\u002Fneutral\u002Fidea","djrobstep",[182,33,33,179,183,33],"21748910","javagram",[185,33,33,186,180,33],"21749006","commenter\u002Fneutral\u002Fnone",[188,33,33,186,189,33],"21750630","stephenr",[191,33,33,186,180,33],"21751101",[193,33,33,186,189,33],"21751546",[195,33,33,186,180,33],"21753334",[197,33,33,186,189,33],"21753385",[199,33,33,186,180,33],"21754018",[201,33,33,179,202,33],"21748959","ben509",[204,33,33,186,180,33],"21749019",[206,33,33,179,207,33],"21749361","skore",[209,33,33,179,210,33],"21758143","evanelias",[212,33,33,186,202,33],"21776353",[214,33,33,186,210,33],"21785182",[216,33,33,186,189,33],"21750607",[218,33,33,186,180,33],"21751230",[220,33,33,186,189,33],"21751585",[222,33,33,186,180,33],"21753496",[224,33,33,186,189,33],"21753551",[226,33,33,186,180,33],"21753959",[228,33,33,229,210,33],"21758106","commenter\u002Fneutral\u002Fidea",[231,33,33,186,189,33],"21760548",[233,33,33,186,210,33],"21766194",[235,33,33,186,180,33],"21768006",[237,33,33,175,238,33],"21747980","darau1",[53,43,33,240,11,43],"maker\u002Fpositive\u002Fidea",[242,43,33,175,243,33],"21743357","westoque",[245,43,33,246,247,33],"21743464","other\u002Fneutral\u002Fperformance","akhilcacharya",[249,43,33,246,250,33],"21743956","tehbeard",[252,43,33,186,253,33],"21743540","oauea",[255,43,33,186,256,33],"21744082","remmargorp64",[258,43,33,186,253,33],"21744296",[260,43,33,186,256,33],"21744582",[262,43,33,179,158,33],"21744543",[264,43,44,265,266,33],"21743358","project\u002Fpositive\u002Fidea","silvester23",[268,43,44,269,270,33],"21746633","project\u002Fpositive\u002Fnone","anonymousjunior",[164,43,33,272,11,43],"maker\u002Fpositive\u002Fnone",[96,274,43,172,97,33],2,[276,274,33,175,277,33],"21744916","jaredklewis",[279,274,33,175,280,33],"21745004","onlyrealcuzzo",[282,274,33,175,283,33],"21745068","jmathai",[285,274,33,175,286,33],"21745521","zachmu",[60,274,33,288,11,43],"maker\u002Fneutral\u002Fidea",[290,274,43,172,210,33],"21745601",[292,274,33,293,11,43],"21745853","maker\u002Fneutral\u002Fnone",[295,274,33,175,296,33],"21746686","lichtenberger",[298,274,45,299,300,33],"21746202","project\u002Fneutral\u002Fidea","y4mi",[302,274,44,265,303,33],"21745147","davefp",[305,274,33,175,306,33],"21745264","brlewis",[132,45,45,299,133,33],[309,45,43,172,310,33],"21743783","abhchand",[312,45,33,186,313,33],"21743975","matsemann",[315,45,33,186,133,33],"21745347",[317,45,33,288,11,43],"21744044",[319,320,43,172,321,33],"21744592",4,"beart",[323,320,45,324,325,33],"21744632","project\u002Fneutral\u002Fnone","grey-area",[327,320,45,299,328,33],"21744821","awshepard",[330,320,33,186,325,33],"21745003",[332,320,33,175,210,33],"21745528",[334,320,33,175,296,33],"21746837",[336,320,33,175,337,33],"21747503","knutwannheden",[339,320,33,175,158,33],"21744734",[341,320,33,175,286,33],"21745257",[150,44,33,175,151,33],[344,38,43,172,296,33],"21747063",[157,31,33,175,158,33],[347,18,45,324,348,33],"21743451","kaiby",[73,18,33,324,11,43],[351,18,45,352,353,33],"21748866","maker\u002Fneutral\u002Fdocs","ianwalter",[355,18,43,356,357,33],"21743516","project\u002Fcritical\u002Fnone","k_",[359,39,33,175,360,33],"21750115","deepakputhraya",[362,34,45,324,363,33],"21743639","rhyst",[112,34,33,365,11,43],"project\u002Fneutral\u002Fexecution",[367,32,45,299,253,33],"21743577",[369,32,43,172,370,33],"21744149","MuffinFlavored",[372,373,43,172,374,33],"21745582",12,"valw",[128,376,43,172,129,33],13,[378,379,45,365,380,33],"21748717",14,"husui",[84,382,44,265,85,33],15,[88,384,44,265,89,33],16,[119,386,44,265,120,33],17,[100,388,45,299,101,33],18,[390,388,44,265,391,33],"21743756","PrimeDirective",[393,388,33,186,101,33],"21744276",[395,396,45,299,397,33],"21743480",19,"dmidnight",[],[400,404,409,413,418,423],{"id":401,"name":402,"points":403,"category":20},"21712403","Lucid Index \u002F Self Hosted Source",656,{"id":405,"name":406,"points":407,"category":408},"21717022","AI Dungeon 2",584,"games",{"id":410,"name":411,"points":412,"category":408},"21719575","si78c",478,{"id":414,"name":415,"points":416,"category":417},"21757003","Kong",294,"finance_crypto",{"id":419,"name":420,"points":421,"category":422},"21751987","FATpick",190,"creative",{"id":424,"name":425,"points":426,"category":427},"21720881","Koko Analytics",187,"data",false,"v2",{"id":431,"name":5,"line":6,"ai":428,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":432,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":433,"url":9,"mix":434,"praise":80,"objection":93,"sub":21},21742222,[24,25,26,27],"1000000000000000051001351013001331311555",[31,32,33,34],1793990999281]