[{"data":1,"prerenderedAt":260},["ShallowReactive",2],{"project-18296672":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":44,"post_text":46,"what":47,"said":78,"maker_in_thread":151,"shape":161,"grid":165,"attempts":221,"same_week":222,"maker_shows":163,"maker_hidden":252,"reader_version":253,"card":254},"18296672","IronDB","a resilient key-value store for the browser","title","Show HN: IronDB – a resilient key-value store for the browser","https:\u002F\u002Fgithub.com\u002Fgruns\u002Firondb","github.com","grun",1540417236,2018,73,27,597,2155,28,"notable","languages","browser storage library","library",[24,25,26,27,28],"browser storage","localstorage","indexeddb","key value store","storage eviction","roasted",-0.375,{"positive":32,"neutral":33,"mixed":34,"critical":35},4,2,0,9,15,{"design":38,"idea":40,"privacy":42,"execution":43},{"positive":34,"critical":39},1,{"positive":41,"critical":32},3,{"positive":34,"critical":32},{"positive":34,"critical":34},[39,34,45,34,39,45,34,39,41,39,34,39,34,39,34,39,39,34,34,34,34,39,45,41,34,45,34],5,null,{"problem":48,"audience":46,"pricing":46,"motivation":58,"time_to_build":46,"stack":67,"openness":76,"stage":77,"team_size":77},{"value":49,"source":50,"evidence":51},"Browser-stored data is lost when users clear cookies or the browser evicts storage under pressure","maker",[52,55],{"id":53,"by":11,"text":54},"18297379","Cookies are frequently cleared by users, and the other datastores -- IndexedDB, LocalStorage, and SessionStorage -- can be unceremoniously purged by the browser under storage…",{"id":56,"by":11,"text":57},"18297669","localForage only uses a single datastore. E.g. LocalStorage or SessionStorage or IndexedDB. Thus, stored data is lost forever if the browser unceremoniously purges that datastore…",{"value":59,"source":50,"evidence":60},"Make browser-stored data resilient to eviction without overriding user deletion",[61,64],{"id":62,"by":11,"text":63},"18297008","Evercookie's goal is to store data indelibly, regardless of user intention. IronDB's goal is to store data reliably, e.g. in the face of storage eviction, but not against user…",{"id":65,"by":11,"text":66},"18297177","Clearing cookies is a common user action. Even for relatively non-technical users. And under storage pressure, browsers evict data stored in IndexedDB, LocalStorage, and\u002For…",[68],{"value":69,"source":70,"evidence":71},"JavaScript","commenter",[72],{"id":73,"by":74,"text":75},"18297649","thanatos_dem","Yup, I was wondering how the hell a timeseries database would run in the browser. Nope, this is just syntactic sugar on top of calling (up to) 4 JavaScript functions.","open_source","unknown",{"praise":79,"objections":91,"requests":117,"questions":129,"alternatives":135},[80],{"value":81,"source":70,"evidence":82},"Useful for offline apps that lose data to browser eviction",[83,87],{"id":84,"by":85,"text":86},"18298958","bildung","> Why do this? What are the failure modes this protects against? I have a use case for this: I've written what is basically a crud web app for a non-profit. That's an offline app…",{"id":88,"by":89,"text":90},"18297494","bazizbaziz","Thanks for the response! FWIW I'm overall really interested in this, as I maintain an application that uses localStorage to keep very important data while the app is offline…",[92,107],{"value":93,"source":70,"evidence":94},"Redundant storage may conflict with user intent to delete data and raises privacy concerns",[95,99,103],{"id":96,"by":97,"text":98},"18298690","kreetx","Maybe this is useful tool, but several things strike as weird to me: - save all values everywhere: why not select the one that would last the longest (that people delete least…",{"id":100,"by":101,"text":102},"18298880","franciscrick1","What if users don't want you taking control of their computer?",{"id":104,"by":105,"text":106},"18297235","tptacek","That's the answer I was looking for, thanks. The intuition I have is that if someone deletes something from localStorage (or clears localStorage altogether), they want that data…",{"value":108,"source":70,"evidence":109},"Unclear why a library is needed when browser storage is assumed reliable",[110,114],{"id":111,"by":112,"text":113},"18297083","laurent123456","Why do we need a library to store data reliably? Aren't browsers API already reliable? Does the LocalStorage API for example sometimes fails to store its data properly?",{"id":115,"by":89,"text":116},"18297229","> When a value is retrieved via its key, IronDB... > Looks up that key in every store. > Counts each unique, returned value. > Determines the most commonly returned value as the…",[118],{"value":119,"source":70,"evidence":120},"Document storage eviction behavior and limits clearly",[121,125],{"id":122,"by":123,"text":124},"18297780","staticvar","If anyone could point to an up to date docs around storage eviction in browsers it would be greatly appreciated. It's been a big hit to our team's confidence in the \"use the…",{"id":126,"by":127,"text":128},"18297863","edoceo","I remember reading a 5MB limit some place (ages ago) and I'm not able to find the reference at the time. My team has been assuming that is true (for local,session)Storage and so…",[130],{"value":131,"source":70,"evidence":132},"What failure modes does the redundancy protect against",[133,134],{"id":115,"by":89,"text":116},{"id":84,"by":85,"text":86},[136,144],{"value":137,"source":70,"evidence":138},"localForage",[139,143],{"id":140,"by":141,"text":142},"18297425","ggregoire","What are the differences with localForage (or similar solutions)? The fallback to cookies if no localStorage? https:\u002F\u002Fgithub.com\u002FlocalForage\u002FlocalForage",{"id":88,"by":89,"text":90},{"value":145,"source":70,"evidence":146},"Evercookie",[147,148],{"id":96,"by":97,"text":98},{"id":149,"by":105,"text":150},"18296901","It's not clear to me how this is more privacy-respecting than Evercookies, except that it doesn't use browser extensions.",{"comments":152,"answered":45,"key":153},8,[154,155,158],{"id":53,"text":54},{"id":156,"text":157},"18297518","Wonderful. Don't hesitate to let me know if there's anything else I can help with, bazizbaziz.",{"id":159,"text":160},"18302564","Awesome. If you find any bugs, or have any ideas to improve IronDB, don't hesitate to let me know.",{"commenters":162,"max_depth":163,"maker_replies":152,"first_comment_mins":18,"lifespan_hours":164},16,6,23,[166,168,170,172,174,176,177,178,182,184,185,188,189,191,192,194,195,198,200,203,205,206,209,212,213,214,217],[115,34,39,167,89,34],"project\u002Fcritical\u002Fdesign",[53,34,34,169,11,39],"maker\u002Fneutral\u002Fidea",[88,34,45,171,89,34],"project\u002Fpositive\u002Fidea",[156,34,34,173,11,39],"maker\u002Fneutral\u002Fnone",[100,34,39,175,101,34],"project\u002Fcritical\u002Fprivacy",[84,34,45,171,85,34],[159,34,34,173,11,39],[179,39,39,180,181,34],"18297621","project\u002Fcritical\u002Fidea","gaimrox",[73,39,41,183,74,34],"project\u002Fneutral\u002Fexecution",[96,33,39,175,97,34],[186,33,34,187,11,39],"18304603","maker\u002Fneutral\u002Fprivacy",[149,41,39,175,105,34],[62,41,34,190,11,39],"project\u002Fneutral\u002Fprivacy",[111,41,39,180,112,34],[65,41,34,193,11,39],"project\u002Fneutral\u002Fidea",[104,41,39,175,105,34],[196,41,39,180,197,34],"18297280","chx",[199,41,34,187,11,39],"18297326",[201,41,34,202,123,34],"18297766","other\u002Fneutral\u002Fnone",[122,41,34,204,123,34],"other\u002Fneutral\u002Fdocs",[126,41,34,204,127,34],[207,32,39,180,208,34],"18297782","proneb1rd",[210,32,45,171,211,34],"18298089","latchkey",[140,45,41,193,141,34],[56,45,34,171,11,39],[215,45,45,216,141,34],"18297745","maker\u002Fpositive\u002Fnone",[218,45,34,219,220,34],"18298286","other\u002Fneutral\u002Fidea","lgessler",[],[223,228,233,238,243,248],{"id":224,"name":225,"points":226,"category":227},"18284910","Websites in 2018",595,"creative",{"id":229,"name":230,"points":231,"category":232},"18291302","Ultimate Plumber",484,"dev_tools",{"id":234,"name":235,"points":236,"category":237},"18258971","After Interview",306,"productivity",{"id":239,"name":240,"points":241,"category":242},"18265074","lip-reading-deeplearning",258,"ai",{"id":244,"name":245,"points":246,"category":247},"18294007","Relica",132,"infrastructure",{"id":249,"name":250,"points":251,"category":237},"18249424","Meeting Stats",127,false,"v2",{"id":255,"name":5,"line":6,"ai":252,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":256,"top":18,"kw":257,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":258,"url":9,"mix":259,"praise":81,"objection":93,"sub":21},18296672,-0.37,[24,25,26,27,28],"105015013101010110000153050",[32,33,34,35],1793990981154]