[{"data":1,"prerenderedAt":321},["ShallowReactive",2],{"project-25004554":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":34,"aspects":35,"strip":41,"post_text":44,"what":45,"said":65,"maker_in_thread":132,"shape":143,"grid":147,"attempts":284,"same_week":285,"maker_shows":32,"maker_hidden":313,"reader_version":314,"card":315},"25004554","Sir","Git-diff-able JSON database on yer filesystem","title","Show HN: Sir – Git-diff-able JSON database on yer filesystem","https:\u002F\u002Fgithub.com\u002Fc9fe\u002Fsirdb","github.com","graderjs",1604632772,2020,115,50,564,3028,19,"notable","data","embedded json database","library",[24,25,26,27],"json database","git diff","filesystem database","human readable database","curious",0.056,{"positive":31,"neutral":32,"mixed":33,"critical":33},1,20,0,21,{"idea":36,"docs":37,"design":38,"execution":39,"performance":40},{"positive":31,"critical":33},{"positive":33,"critical":33},{"positive":33,"critical":33},{"positive":33,"critical":33},{"positive":33,"critical":33},[42,33,33,42,33,33,33,33,33,33,42,42,42,42,42,42,33,42,33,33,43,42,33,42,33,42,33,42,33,42,33,42,33,33,42,33,42,33,33,33],3,5,null,{"problem":46,"audience":44,"pricing":44,"motivation":55,"time_to_build":44,"stack":62,"openness":63,"stage":64,"team_size":64},{"value":47,"source":48,"evidence":49},"Database changes are hard to track; JSON files stored in git allow readable diffs","maker",[50,52],{"id":51},"post",{"id":53,"by":11,"text":54},"25004983","I should add that I was inspired by recutils and considered using it before making this. The appeal of using common Unix tools to play with a database is a motivation for me",{"value":56,"source":48,"evidence":57},"Wanted common Unix tools to work on a database, human-readable and git diff-able, with small resource usage",[58,61],{"id":59,"by":11,"text":60},"25005483","I don't know about performance benchmarks to other DBs or scale, but I ran read and write benchmarks and saw 1000s op\u002Fs and felt satisfied enough. It won't be faster than…",{"id":53,"by":11,"text":54},[],"open_source","unknown",{"praise":66,"objections":75,"requests":87,"questions":98,"alternatives":103},[67],{"value":68,"source":69,"evidence":70},"Useful for versioning ML run outputs and similar JSON data","commenter",[71],{"id":72,"by":73,"text":74},"25006125","dijksterhuis","I generate bunch of JSON data from my machine learning runs (a bunch of outputs for analysis), so this fits my use case perfectly (inspecting changes of different run settings).…",[76],{"value":77,"source":69,"evidence":78},"File-based storage has poor performance at scale and concurrent writes can corrupt data without atomic writes",[79,83],{"id":80,"by":81,"text":82},"25005212","alilsumpinditto","what's the use case? certainly the performance impact will suffer at scale, so what's the usable limit before disadvantages outweigh the advantages of being able to use git?",{"id":84,"by":85,"text":86},"25005021","jitl","I feel like many static site generators have more-or-less filesystem-as-database. Some are more specialized than others. Many SSGs have standardized around the format of `YAML:…",[88],{"value":89,"source":69,"evidence":90},"Add related projects and examples of database files and diffs",[91,95],{"id":92,"by":93,"text":94},"25005050","andreareina","Could use an example of the database file and diffs. I have vague recollections of a tool that was similarly supposed to make JSON files diffable. IIRC it procedurally built up…",{"id":96,"by":11,"text":97},"25006571","Thanks! I'll add to related projects",[99],{"value":100,"source":69,"evidence":101},"What is the use case and at what scale does performance suffer",[102],{"id":80,"by":81,"text":82},[104,111,118,125],{"value":105,"source":69,"evidence":106},"tinydb",[107],{"id":108,"by":109,"text":110},"25004905","LVB","This is sort of in the space: https:\u002F\u002Fgithub.com\u002Fmsiemens\u002Ftinydb",{"value":112,"source":69,"evidence":113},"recutils",[114],{"id":115,"by":116,"text":117},"25004929","asaibx","There's always recutils [0] which uses a plain text database format stored in files called recfiles. [0] https:\u002F\u002Flabs.tomasino.org\u002Fgnu-recutils\u002F",{"value":119,"source":69,"evidence":120},"gron",[121],{"id":122,"by":123,"text":124},"25005118","PowerfulWizard","This is called gron, I prefer it for reading JSON with a lot of nesting. https:\u002F\u002Fgithub.com\u002Ftomnomnom\u002Fgron",{"value":126,"source":69,"evidence":127},"sqlite-diffable",[128],{"id":129,"by":130,"text":131},"25005391","simonw","I wrote a tool that dumps a SQLite database out to disk as diffable JSON, precisely so you can easily record changes made to the database over time:…",{"comments":133,"answered":134,"key":135},8,4,[136,139,142],{"id":137,"text":138},"25005451","The example was a good idea, thanks! I added it",{"id":140,"text":141},"25004915","I just had a quick search, didn't turn up much but there is this https:\u002F\u002Fgithub.com\u002Fpksunkara\u002Fnosqlite I could add a section",{"id":53,"text":54},{"commenters":144,"max_depth":43,"maker_replies":133,"first_comment_mins":145,"lifespan_hours":146},37,41,29,[148,152,156,158,160,162,166,169,171,174,176,179,181,185,188,192,195,198,199,200,201,203,205,208,211,213,215,217,219,223,227,230,233,235,237,240,243,247,250,254,256,259,262,265,267,270,273,276,277,280],[149,33,42,150,151,33],"25005993","project\u002Fneutral\u002Fidea","olvy0",[153,33,33,154,155,33],"25008799","commenter\u002Fneutral\u002Fnone","lootsauce",[157,33,33,154,151,33],"25013847",[92,31,42,159,93,33],"project\u002Fneutral\u002Fdocs",[122,31,33,161,123,33],"other\u002Fneutral\u002Fnone",[163,31,33,164,165,33],"25005274","other\u002Fpositive\u002Fnone","robador",[167,31,33,164,168,33],"25005506","divbzero",[137,31,33,170,11,31],"maker\u002Fneutral\u002Fdocs",[172,31,33,161,173,33],"25005522","emmelaich",[175,31,33,161,173,33],"25005552",[177,31,33,161,178,33],"25008411","chousuke",[180,31,33,161,173,33],"25012012",[182,183,42,150,184,33],"25004844",2,"sillysaurusx",[186,183,42,150,187,33],"25005309","XorNot",[189,183,42,190,191,33],"25005392","project\u002Fneutral\u002Fdesign","dheera",[193,183,42,190,194,33],"25005450","jeswin",[196,42,42,150,197,33],"25004762","yodon",[108,42,42,150,109,33],[140,42,33,170,11,31],[115,42,42,150,116,33],[53,42,33,202,11,31],"maker\u002Fneutral\u002Fidea",[84,42,42,204,85,33],"project\u002Fneutral\u002Fexecution",[206,42,33,161,207,33],"25005739","legulere",[209,42,33,161,210,33],"25006504","leoncvlt",[96,42,33,212,11,31],"maker\u002Fpositive\u002Fdocs",[72,134,43,214,73,33],"project\u002Fpositive\u002Fidea",[80,43,42,216,81,33],"project\u002Fneutral\u002Fperformance",[59,43,33,218,11,31],"maker\u002Fneutral\u002Fperformance",[220,43,33,221,222,33],"25010840","other\u002Fneutral\u002Fperformance","joshspankit",[224,225,42,150,226,33],"25004897",6,"dreamer7",[228,225,33,229,11,31],"25004919","maker\u002Fneutral\u002Fdesign",[231,225,42,150,232,33],"25005083","zmj",[234,225,33,154,93,33],"25005386",[236,225,42,150,222,33],"25010854",[238,225,42,150,239,33],"25005831","moonchild",[241,225,33,154,242,33],"25006433","Scaevolus",[244,245,42,150,246,33],"25010612",7,"gumby",[248,133,33,161,249,33],"25005893","richie5um",[251,252,42,150,253,33],"25004913",9,"codenesium",[255,252,42,150,85,33],"25005043",[257,252,33,161,258,33],"25005799","framecowbird",[260,252,33,261,11,31],"25005829","maker\u002Fneutral\u002Fnone",[263,252,42,150,264,33],"25006385","GordonS",[266,252,33,261,11,31],"25012651",[268,252,33,161,269,33],"25006508","andrewshadura",[271,252,42,150,272,33],"25005217","Jakob",[274,252,33,161,275,33],"25005630","djeiasbsbo",[129,252,33,161,130,33],[278,252,33,164,279,33],"25005974","jlelse",[281,282,33,161,283,33],"25005173",10,"uvic",[],[286,291,296,301,305,309],{"id":287,"name":288,"points":289,"category":290},"25059554","22120",537,"infrastructure",{"id":292,"name":293,"points":294,"category":295},"25059133","Etebase",308,"dev_tools",{"id":297,"name":298,"points":299,"category":300},"25013863","Please-unsubscribe.com",218,"productivity",{"id":302,"name":303,"points":304,"category":300},"25023502","Baller ToDo",161,{"id":306,"name":307,"points":308,"category":300},"25058821","The Least Dangerous To-Do List",141,{"id":310,"name":311,"points":312,"category":295},"25059296","Config.ly",106,false,"v2",{"id":316,"name":5,"line":6,"ai":313,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":317,"top":18,"kw":318,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":319,"url":9,"mix":320,"praise":68,"objection":77,"sub":21},25004554,0.06,[24,25,26,27],"3003000000333333030053030303030300303000",[31,32,33,33],1794036598070]