[{"data":1,"prerenderedAt":507},["ShallowReactive",2],{"project-8211575":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":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":47,"post_text":48,"what":49,"said":87,"maker_in_thread":278,"shape":287,"grid":291,"attempts":469,"same_week":470,"maker_shows":34,"maker_hidden":499,"reader_version":500,"card":501},"8211575","Stellar","Git for PostreSQL and MySQL","title","Show HN: Stellar – Git for PostreSQL and MySQL","https:\u002F\u002Fgithub.com\u002Ffastmonkeys\u002Fstellar","github.com","obsession",1408704964,2014,325,77,41,2272,2,"legend","dev_tools","database version control","cli",[24,25,26,27,28],"database snapshots","postgresql","mysql","database versioning","schema migrations","roasted",-0.362,{"positive":32,"neutral":33,"mixed":34,"critical":35},6,11,1,18,36,{"idea":38,"docs":41,"performance":44,"execution":46},{"positive":39,"critical":40},5,4,{"positive":42,"critical":43},0,7,{"positive":42,"critical":45},3,{"positive":42,"critical":40},[34,42,42,45,42,39,34,45,34,34,42,42,34,42,34,42,34,34,45,42,39,39,45,34,34,42,42,42,42,34,34,39,45,34,39,45,34,42,34,34],null,{"problem":50,"audience":61,"pricing":48,"motivation":48,"time_to_build":48,"stack":70,"openness":85,"stage":86,"team_size":86},{"value":51,"source":52,"evidence":53},"Snapshotting and restoring development database state, with tracking of table copies","commenter",[54,58],{"id":55,"by":56,"text":57},"8212911","davesque","From what little I've gathered, the internal implementation is basically a system which tracks hash-tagged copies of database tables.",{"id":59,"by":11,"text":60},"8211892","I have regularly used this with database that's nearing 1000 megabytes. I don't particularly mind slow snapshotting because my workflow is more about restoring database back to…",{"value":62,"source":63,"evidence":64},"Developers working with PostgreSQL or MySQL databases in development","inferred",[65,66],{"id":59,"by":11,"text":60},{"id":67,"by":68,"text":69},"8211960","crad","Maybe I'm missing something, but I didn't see anything with regard to indexes, users, stored procedures, views or what not. Seems like it's for table schema snapshotting in a…",[71,81],{"value":72,"source":52,"evidence":73},"Python",[74,77],{"id":75,"by":56,"text":76},"8213046","There are only like 700 lines of Python code. Figure it out and submit a pull request to update the README.",{"id":78,"by":79,"text":80},"8212312","mixologic","Because its not doing anything magic whatsoever. https:\u002F\u002Fgithub.com\u002Ffastmonkeys\u002Fstellar\u002Fblob\u002Fmaster\u002Fstellar\u002Foperations.py#L35-L73",{"value":82,"source":52,"evidence":83},"SQLAlchemy",[84],{"id":67,"by":68,"text":69},"open_source","unknown",{"praise":88,"objections":111,"requests":176,"questions":204,"alternatives":227},[89,100],{"value":90,"source":52,"evidence":91},"Useful for quickly restoring database state between development workflows",[92,96],{"id":93,"by":94,"text":95},"8211779","killing_time","The use case which this really excites me about is automated testing from the GUI level. If the performance is good enough, this would be really useful for restoring DB state in…",{"id":97,"by":98,"text":99},"8211814","michaelmior","Suppose I'm working on a new feature branch and I run a bunch of migrations and add new data. Then I need to go make a bug fix on the master branch. Using Stellar, I could just…",{"value":101,"source":52,"evidence":102},"Excellent project for managing development databases",[103,107],{"id":104,"by":105,"text":106},"8211664","iurisilvio","I expected something related with Stellar coins. Looks like a good project, I definitely want an easy way to manage development databases.",{"id":108,"by":109,"text":110},"8211684","codeoclock","Unfortunate name, excellent project :)",[112,131,150,155,165],{"value":113,"source":52,"evidence":114},"Name and 'git' comparison are misleading; it is not version control",[115,119,123,127],{"id":116,"by":117,"text":118},"8211790","m3h","Why does the author compare it to Git? The functions this software performs are no where near those performed by Git. Nor it is a proper version control system.",{"id":120,"by":121,"text":122},"8211825","gexla","To elaborate on what this comment may be referring to. A Ripple (cryptocurrency) fork was recently released with the name of Stellar.",{"id":124,"by":125,"text":126},"8216271","edem","Folks might confuse this with the Stellar currency (stellar.org). You might give some emphasis in the title.",{"id":128,"by":129,"text":130},"8213922","mbca","So it's yet another toy project with grandiose, overblown claims (\"git for databases\"? seriously?!) An honest update to the README would be to take the whole thing down several…",{"value":132,"source":52,"evidence":133},"Documentation lacks explanation of how it works and failure modes",[134,138,142,146],{"id":135,"by":136,"text":137},"8211743","mbrock","I wish projects like these would always include some basic info in their README about: (1) how it works, and (2) how it might fail.",{"id":139,"by":140,"text":141},"8211759","areski","Totally agree, peoples needs to know how it works before starting using it.",{"id":143,"by":144,"text":145},"8212235","JohnDotAwesome","How does it work? Where does it breakdown? Why are these things not in the README?",{"id":147,"by":148,"text":149},"8212589","danudey","Seconded. The extent of what I know about this project is: 1. It's like git somehow? 2. I can run some commands which presumably do something? 3. That something happens faster…",{"value":151,"source":152,"evidence":153},"Not stable enough for production use and can lose data","maker",[154],{"id":59,"by":11,"text":60},{"value":156,"source":52,"evidence":157},"Snapshot copying is slow and space-heavy on larger databases",[158,162],{"id":159,"by":160,"text":161},"8211836","falcolas","So, it appears to just copy tables around within the database. I wouldn't want to use this on a DB over a few MB in size. Sure, restores are \"fast\" (a table rename), but copies…",{"id":163,"by":160,"text":164},"8212040","Why not use a binary backup method? Faster to backup and restore.",{"value":166,"source":52,"evidence":167},"Table name handling in SQL construction looks injection-prone",[168,172],{"id":169,"by":170,"text":171},"8211819","Gigablah","From the code: ``` INSERT INTO %s.%s SELECT * FROM %s.%s ``` Yeah, good luck with that.",{"id":173,"by":174,"text":175},"8213253","swehner","Line 53 of https:\u002F\u002Fgithub.com\u002Ffastmonkeys\u002Fstellar\u002Fblob\u002Fmaster\u002Fstellar\u002Foperations.py is ``` CREATE TABLE %s.%s LIKE %s.%s ``` This made me think of a table called ``` create table…",[177,186,193],{"value":178,"source":52,"evidence":179},"Better README explaining how it works and where it fails",[180,181,182],{"id":135,"by":136,"text":137},{"id":143,"by":144,"text":145},{"id":183,"by":184,"text":185},"8212091","ZenoArrow","Just a small correction; it's not PostreSQL, it's PostgreSQL.",{"value":187,"source":52,"evidence":188},"Practical examples",[189],{"id":190,"by":191,"text":192},"8212031","mosselman","Looks very nice, could you put up some practical examples?",{"value":194,"source":52,"evidence":195},"Separation of schema and data changes with branching and merging",[196,200],{"id":197,"by":198,"text":199},"8211784","robert_tweed","Generally the hardest thing with version control on a database (for an evolving codebase) is separating unrelated changes - such as schema changes vs content updates - and…",{"id":201,"by":202,"text":203},"8215369","akurilin","I'd love a tool that solves that problem. Schema \u002F data \u002F user \u002F permission migrations, support for both production and development environments and integration with CM tools…",[205,220],{"value":206,"source":52,"evidence":207},"How does it compare to existing migration tools and transactional DDL",[208,212,216],{"id":209,"by":210,"text":211},"8211702","lucian1900","This sort of thing is useful, but already supported by Postgres through transactional DDL. Migrations that fail will have their transaction reverted.",{"id":213,"by":214,"text":215},"8211879","baudehlo","This sounds like something Sqitch would help with. http:\u002F\u002Fsqitch.org",{"id":217,"by":218,"text":219},"8211761","mdellabitta","What if you're writing a migration that includes DML, and it fails partway through? Wouldn't it be good to be able to restore the DB state automatically and try again?",{"value":221,"source":52,"evidence":222},"How does it compare to time travel queries or temporal databases",[223],{"id":224,"by":225,"text":226},"8211837","iso8859-1","how does this compare to time travel queries? http:\u002F\u002Fen.wikipedia.org\u002Fw\u002Findex.php?title=Temporal_database#cite_ref-SQL2011_1-2",[228,232,239,251,258,265,272],{"value":229,"source":52,"evidence":230},"Sqitch",[231],{"id":213,"by":214,"text":215},{"value":233,"source":52,"evidence":234},"shmig",[235],{"id":236,"by":237,"text":238},"8212690","mbucc","FWIW, I found shmig [1] much simpler than sqitch. Last I used sqitch, it returned a zero value on error, which made me leery of using it for scripted deployments. [1]…",{"value":240,"source":52,"evidence":241},"LVM snapshots and mylvmbackup",[242,243,247],{"id":163,"by":160,"text":164},{"id":244,"by":245,"text":246},"8213680","martin_","Agreed. I've been successfully using mylvmbackup on 10gb+ databases for a few years now. http:\u002F\u002Fwww.lenzg.net\u002Fmylvmbackup\u002F",{"id":248,"by":249,"text":250},"8212344","personZ","Column-oriented databases virtually all feature this in the form of column compression (e.g. \"repeat this value for the next 1000 rows\"). And if you don't want column…",{"value":252,"source":52,"evidence":253},"Irmin",[254],{"id":255,"by":256,"text":257},"8212043","amirmc","If anyone's interested in git-like storage systems then it's work checking out Irmin [1]. Previous discussion is at [2]. Excerpt: \"Irmin is a library to persist and synchronize…",{"value":259,"source":52,"evidence":260},"Datomic",[261],{"id":262,"by":263,"text":264},"8212387","symfrog","Have you looked at Datomic? It seems to fit your problem description well.",{"value":266,"source":52,"evidence":267},"DBSteward",[268],{"id":269,"by":270,"text":271},"8212118","jimktrains2","While not exactly the same thing, I've recently found and started using https:\u002F\u002Fgithub.com\u002Fnkiraly\u002FDBSteward to specify schema and then store the spec in my repo with the code.…",{"value":273,"source":52,"evidence":274},"mysqldump",[275],{"id":276,"by":170,"text":277},"8214758","Nothing wrong with the syntax, it's just that if you're going to create an entire mirror of your database, you might as well use mysqldump. (Plus it'll actually be portable).",{"comments":32,"answered":42,"key":279},[280,281,284],{"id":59,"text":60},{"id":282,"text":283},"8214115","Interesting, I'll have to take a look.",{"id":285,"text":286},"8211753","Transaction is only reverted if the migration fails. Stellar helps you if your migration succeeds but does the wrong thing (deleting wrong column, missing WHERE in UPDATE…",{"commenters":288,"max_depth":39,"maker_replies":32,"first_comment_mins":289,"lifespan_hours":290},61,50,228,[292,294,296,299,300,303,306,310,314,317,319,322,323,325,327,330,331,332,333,334,336,337,341,344,347,349,351,352,354,355,358,362,363,364,365,366,369,372,374,375,378,380,381,384,386,388,391,392,395,399,401,402,405,406,409,412,415,417,419,421,423,424,427,431,433,437,440,442,447,449,452,453,455,458,460,462,465],[197,42,34,293,198,42],"project\u002Fcritical\u002Fidea",[213,42,42,295,214,42],"commenter\u002Fneutral\u002Fnone",[297,42,42,295,298,42],"8212491","bigpeopleareold",[236,42,42,295,237,42],[301,42,42,295,302,42],"8219197","justtheory",[304,42,42,295,305,42],"8213329","shkkmo",[307,42,45,308,309,42],"8212611","project\u002Fneutral\u002Fidea","abhishivsaxena",[311,42,42,312,313,42],"8212741","other\u002Fneutral\u002Fidea","cbsmith",[315,42,42,295,316,42],"8216905","tatalegma",[318,42,42,295,313,42],"8221015",[320,42,39,321,56,42],"8212986","project\u002Fpositive\u002Fidea",[201,42,45,308,202,42],[135,34,34,324,136,42],"project\u002Fcritical\u002Fdocs",[139,34,45,326,140,42],"project\u002Fneutral\u002Fdocs",[328,34,45,326,329,42],"8212575","ireflect",[147,34,34,324,148,42],[55,34,45,326,56,42],[75,34,42,295,56,42],[128,34,34,324,129,42],[335,34,42,295,56,42],"8222285",[255,18,42,312,256,42],[338,18,42,339,340,42],"8212290","other\u002Fcritical\u002Fdocs","sgrove",[342,18,42,343,256,42],"8212823","other\u002Fneutral\u002Fdocs",[345,18,42,312,346,42],"8212748","mamcx",[159,45,34,348,160,42],"project\u002Fcritical\u002Fperformance",[59,45,42,350,11,34],"project\u002Fneutral\u002Fperformance",[163,45,34,348,160,42],[244,45,42,353,245,42],"other\u002Fneutral\u002Fnone",[282,45,42,295,11,34],[356,45,42,353,357,42],"8250713","fud",[359,45,45,360,361,42],"8213981","project\u002Fneutral\u002Fexecution","sciurus",[116,40,34,293,117,42],[209,39,34,293,210,42],[285,39,42,308,11,34],[217,39,45,308,218,42],[367,39,42,295,368,42],"8212338","AlterEgo20",[370,39,42,295,371,42],"8212366","dragonwriter",[373,39,42,295,368,42],"8212404",[93,39,39,321,94,42],[376,39,42,353,377,42],"8212450","j_s",[379,39,42,350,11,34],"8213441",[97,39,39,321,98,42],[382,39,34,293,383,42],"8211964","masklinn",[385,39,39,321,98,42],"8212263",[169,32,34,387,170,42],"project\u002Fcritical\u002Fexecution",[389,32,42,295,390,42],"8214327","kstrauser",[276,32,34,387,170,42],[393,43,42,312,394,42],"8212439","bronson",[396,397,42,312,398,42],"8212199",8,"squigs25",[400,397,42,312,98,42],"8212273",[248,397,42,312,249,42],[403,397,42,312,404,42],"8212376","habosa",[262,397,42,312,263,42],[407,397,42,312,408,42],"8213462","AlwaysBCoding",[410,397,42,312,411,42],"8212456","Terr_",[413,397,42,312,414,42],"8212710","beagle3",[67,416,34,387,68,42],9,[173,418,34,387,174,42],10,[420,418,42,360,11,34],"8213294",[108,33,39,422,109,42],"project\u002Fpositive\u002Fnone",[120,33,45,308,121,42],[425,33,45,308,426,42],"8212188","uptown",[428,429,42,353,430,42],"8212093",12,"jdc0589",[269,432,42,353,270,42],13,[434,435,34,348,436,42],"8211763",14,"jamesmoss",[438,435,42,439,11,34],"8213278","maker\u002Fneutral\u002Fexecution",[104,441,39,321,105,42],15,[443,444,45,445,446,42],"8211683",16,"project\u002Fmixed\u002Fidea","level09",[224,448,45,308,225,42],17,[450,448,42,353,451,42],"8211902","walterbell",[143,35,34,324,144,42],[78,35,42,454,79,42],"commenter\u002Fcritical\u002Fexecution",[456,35,42,457,56,42],"8213018","commenter\u002Fcritical\u002Fdocs",[183,459,34,324,184,42],19,[124,461,34,324,125,42],20,[190,463,45,464,191,42],21,"maker\u002Fneutral\u002Fdocs",[466,467,34,324,468,42],"8214435",22,"josephcooney",[],[471,476,481,485,489,494],{"id":472,"name":473,"points":474,"category":475},"8222652","GlassWire",1013,"security_privacy",{"id":477,"name":478,"points":479,"category":480},"8206855","WhiteboardFox",309,"productivity",{"id":482,"name":483,"points":484,"category":20},"8208595","Duo",168,{"id":486,"name":487,"points":488,"category":20},"8217895","C\u002FC++ Development Environment for Emacs",146,{"id":490,"name":491,"points":492,"category":493},"8223200","GoReturnMe",145,"consumer_social",{"id":495,"name":496,"points":497,"category":498},"8210972","ZipLocate",140,"data",false,"v2",{"id":502,"name":5,"line":6,"ai":499,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":503,"top":18,"kw":504,"maker":11,"domain":10,"tier":19,"attempts":42,"strip":505,"url":9,"mix":506,"praise":90,"objection":113,"sub":21},8211575,-0.36,[24,25,26,27,28],"1003051311001010113055311000011531531011",[32,33,34,35],1793990910870]