[{"data":1,"prerenderedAt":315},["ShallowReactive",2],{"project-25544397":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":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":41,"post_text":43,"what":44,"said":61,"maker_in_thread":172,"shape":174,"grid":179,"attempts":276,"same_week":277,"maker_shows":38,"maker_hidden":308,"reader_version":309,"card":310},"25544397","Simple-graph","a graph database in SQLite","title","Show HN: Simple-graph – a graph database in SQLite","https:\u002F\u002Fgithub.com\u002Fdpapathanasiou\u002Fsimple-graph","github.com","dpapathanasiou",1609000307,2020,237,42,211,3028,7,"notable","data","graph database","library",[21,24,25,26],"sqlite","recursive query","graph traversal","curious",-0.01,{"positive":30,"neutral":31,"mixed":32,"critical":33},4,11,0,5,20,{"performance":36,"execution":39,"idea":40},{"positive":37,"critical":38},2,3,{"positive":32,"critical":32},{"positive":37,"critical":37},[38,42,38,33,32,32,38,32,38,32,32,32,33,38,38,32,32,32,42,38,32,32,32,32,42,38,38,42,32,32,32,38,32,32,32,42,33,32,32,33],1,null,{"problem":43,"audience":43,"pricing":43,"motivation":43,"time_to_build":43,"stack":45,"openness":60,"stage":60,"team_size":60},[46,52],{"value":47,"source":48,"evidence":49},"SQLite","maker",[50],{"id":51},"post",{"value":53,"source":54,"evidence":55},"Python","commenter",[56],{"id":57,"by":58,"text":59},"25545415","batmansmk","It really depends on what you want to do with it. I would benchmark the tasks \"traversal\", \"aggregation\" and \"shortest past\" for a 10k to 10M node graph. Anything under 10k would…","unknown",{"praise":62,"objections":74,"requests":107,"questions":127,"alternatives":142},[63],{"value":64,"source":54,"evidence":65},"SQLite is a strong choice for a lightweight graph store",[66,70],{"id":67,"by":68,"text":69},"25546337","brian_herman","Awesome! And you can write SQL queries on the data amazing SQLite is the best database.",{"id":71,"by":72,"text":73},"25548597","loxias","I really like this, OP. I'm member of the clan \"why are you creating your own XDR, just use sqlite!!\" and have oft jumped to that in technical discussions, so appreciate it.…",[75,85,92,103],{"value":76,"source":54,"evidence":77},"WITH RECURSIVE queries are inefficient on DAGs and general graphs",[78,82],{"id":79,"by":80,"text":81},"25546446","abetlen","The issue I found with WITH RECURSIVE queries is that they're incredibly inefficient for anything but trees. I've looked around and there doesn't seem to be any way to store a…",{"id":83,"by":80,"text":84},"25556165","> I'm pretty sure you could also maintain a temp table and use some kind of \"insert...where...returning\" construct to squeeze that into a recursive query. I'm not sure if this is…",{"value":86,"source":54,"evidence":87},"Text node ids may not scale past about a million nodes",[88],{"id":89,"by":90,"text":91},"25545349","tasogare","It depends on how the graph is stored in the database. In this project the nodes ids are TEXT so it will likely not scale very well. I know because I use a similar implementation…",{"value":93,"source":54,"evidence":94},"Graph-on-relational may perform worse than native graph databases",[95,99],{"id":96,"by":97,"text":98},"25545184","afavour","IMO it’s a different question. SQLite and Postgres are both relational databases, it stands to reason that they’re at least doing things in similar ways. They’re two…",{"id":100,"by":101,"text":102},"25549793","roland_nilsson","Isn't the whole point of graph databases that they can traverse graph edges efficiently by following pointers to nodes, which relational databases can't do? Then it seems a bit…",{"value":104,"source":54,"evidence":105},"Shortest path and aggregation are not implemented",[106],{"id":57,"by":58,"text":59},[108,112,123],{"value":109,"source":54,"evidence":110},"Benchmarks on graphs with more than a million edges",[111],{"id":71,"by":72,"text":73},{"value":113,"source":54,"evidence":114},"A graph query language such as Gremlin, Cypher or SPARQL",[115,119],{"id":116,"by":117,"text":118},"25545199","joelschw","I think the big difference here is that when comparing SQLite you are at least using the same query language. In the graph space you have Gremlin, Cryper, GQL and many other…",{"id":120,"by":121,"text":122},"25545479","lolive","Performance issues are a very valid discussion. But to me, the availability of a graph-oriented query language on top of this graph variant of SQLite is, imho, the very first…",{"value":124,"source":54,"evidence":125},"RDF and CSV import",[126],{"id":120,"by":121,"text":122},[128,135],{"value":129,"source":54,"evidence":130},"How does performance compare to Neo4j?",[131],{"id":132,"by":133,"text":134},"25545029","bjornsing","How does this perform compared to a “native” graph database like Neo4J?",{"value":136,"source":54,"evidence":137},"Are recursive queries efficient in SQLite even for trees?",[138],{"id":139,"by":140,"text":141},"25548632","hansvm","I'm pretty sure you could also maintain a temp table and use some kind of \"insert...where...returning\" construct to squeeze that into a recursive query. At a moderate overhead…",[143,151,158,165],{"value":144,"source":54,"evidence":145},"Neo4j",[146,147],{"id":132,"by":133,"text":134},{"id":148,"by":149,"text":150},"25545271","lsb","Neo4j has failed queries I have written, with \"out of memory\" errors. I have never, ever, ever gotten that from SQLite.",{"value":152,"source":54,"evidence":153},"SQLite transitive closure extension",[154],{"id":155,"by":156,"text":157},"25545347","rekwah","Tangentially related to graph dbs, but if you're looking for more hierarchical support, SQLite does has a transitive closure extension[0] that might be of some assistance. I…",{"value":159,"source":54,"evidence":160},"graphdb (CodyKochmann)",[161],{"id":162,"by":163,"text":164},"25548090","ptrik","Similar project: https:\u002F\u002Fgithub.com\u002FCodyKochmann\u002Fgraphdb",{"value":166,"source":54,"evidence":167},"rdflib-sqlalchemy",[168],{"id":169,"by":170,"text":171},"25549412","westurner","rdflib-sqlalchemy is a SQLAlchemy rdflib graph store backend: https:\u002F\u002Fgithub.com\u002FRDFLib\u002Frdflib-sqlalchemy It also persists namespace mappings so that e.g. schema:Thing expands to…",{"comments":32,"answered":32,"key":173},[],{"commenters":175,"max_depth":176,"maker_replies":32,"first_comment_mins":177,"lifespan_hours":178},31,6,79,52,[180,184,186,188,191,194,195,197,200,203,207,209,213,214,215,216,219,220,223,225,226,227,230,233,235,237,238,241,244,245,248,251,253,255,258,259,262,263,267,270,272,274],[181,32,38,182,183,32],"25546122","project\u002Fneutral\u002Fperformance","rklaehn",[79,32,42,185,80,32],"project\u002Fcritical\u002Fperformance",[139,32,38,187,140,32],"project\u002Fneutral\u002Fexecution",[189,32,33,190,183,32],"25549506","project\u002Fpositive\u002Fperformance",[192,32,32,193,140,32],"25553072","commenter\u002Fneutral\u002Fperformance",[83,32,32,193,80,32],[155,42,38,196,156,32],"project\u002Fneutral\u002Fidea",[198,42,32,199,80,32],"25546243","commenter\u002Fneutral\u002Fnone",[201,37,38,196,202,32],"25545222","kevas",[204,37,32,205,206,32],"25545363","other\u002Fneutral\u002Fnone","pstuart",[208,37,32,199,202,32],"25545425",[210,37,32,211,212,32],"25548656","other\u002Fpositive\u002Fnone","claytongulick",[71,38,33,190,72,32],[162,30,38,196,163,32],[132,33,38,182,133,32],[217,33,32,199,218,32],"25545042","linkdd",[96,33,32,193,97,32],[221,33,32,199,222,32],"25545192","szundi",[116,33,42,224,117,32],"project\u002Fcritical\u002Fidea",[148,33,38,182,149,32],[120,33,38,196,121,32],[228,33,32,205,229,32],"25546193","szarnyasg",[231,33,32,205,232,32],"25548095","beaconstudios",[234,33,32,205,121,32],"25550261",[236,33,32,205,229,32],"25550556",[89,33,42,185,90,32],[239,33,38,182,240,32],"25545436","mosselman",[242,33,38,182,243,32],"25547417","alexisread",[57,33,42,185,58,32],[246,33,32,199,247,32],"25545600","chrisweekly",[249,33,32,205,250,32],"25545753","_jal",[252,33,32,205,229,32],"25546827",[254,176,38,196,121,32],"25545501",[256,176,32,205,257,32],"25545593","JimmyRuska",[169,176,32,205,170,32],[260,176,32,199,261,32],"25551694","mark_l_watson",[100,18,42,224,101,32],[264,18,33,265,266,32],"25560501","project\u002Fpositive\u002Fidea","tpoacher",[268,18,32,199,269,32],"25560758","joshspankit",[271,18,32,199,266,32],"25562709",[273,18,32,199,269,32],"25562980",[67,275,33,265,68,32],8,[],[278,283,288,293,298,303],{"id":279,"name":280,"points":281,"category":282},"25582187","PSX Party",676,"games",{"id":284,"name":285,"points":286,"category":287},"25568856","Thruhikes",405,"consumer_social",{"id":289,"name":290,"points":291,"category":292},"25566132","micro-displays",357,"hardware",{"id":294,"name":295,"points":296,"category":297},"25537377","Peaks of Austria",281,"creative",{"id":299,"name":300,"points":301,"category":302},"25568668","LinkAce",227,"productivity",{"id":304,"name":305,"points":306,"category":307},"25558891","buyforlife.com",178,"web_saas",false,"v2",{"id":311,"name":5,"line":6,"ai":308,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":28,"top":18,"kw":312,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":313,"url":9,"mix":314,"praise":64,"objection":76,"sub":21},25544397,[21,24,25,26],"3135003030005330001300001331000300015005",[30,31,32,33],1794036599998]