[{"data":1,"prerenderedAt":417},["ShallowReactive",2],{"project-33518320":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":43,"post_text":46,"what":47,"said":87,"maker_in_thread":197,"shape":206,"grid":210,"attempts":377,"same_week":378,"maker_shows":33,"maker_hidden":409,"reader_version":410,"card":411},"33518320","Cozo","new Graph DB with Datalog, embedded like SQLite","title","Show HN: Cozo – new Graph DB with Datalog, embedded like SQLite","https:\u002F\u002Fgithub.com\u002Fcozodb\u002Fcozo","github.com","zh217",1667910323,2022,425,67,78,2570,4,"legend","data","graph database","library",[21,24,25,26,27],"datalog","embedded database","rust","relational algebra","loved",0.393,{"positive":31,"neutral":32,"mixed":33,"critical":33},16,17,2,37,{"idea":36,"performance":39,"docs":40,"design":41},{"positive":37,"critical":38},8,0,{"positive":38,"critical":38},{"positive":33,"critical":38},{"positive":42,"critical":38},3,[44,44,42,42,42,38,38,42,45,38,38,42,42,38,44,42,42,44,38,44,42,42,44,38,42,44,42,42,44,42,44,42,42,42,42,38,44,44,44,44],5,1,"Hi HN, I have been making this Cozo database since half a year ago, and now it is ready for public release.\n\nMy initial motivation is that I want a graph database. Lightweight and easy to use, like SQLite. Powerful and performant, like Postgres. I found none of the existing solutions good enough.\n\nDeciding to roll my own, I need to choose a query language. I am familiar with Cypher but consider it not much of an improvement over CTE in SQL (Cypher is sometimes notationally more convenient, but not more expressive). I like Gremlin but would prefer something more declarative. Experimentations wi",{"problem":48,"audience":54,"pricing":54,"motivation":55,"time_to_build":59,"stack":63,"openness":84,"stage":85,"team_size":86},{"value":49,"source":50,"evidence":51},"Lacking a lightweight yet powerful embeddable graph database with a declarative query language","maker",[52],{"id":53},"post",null,{"value":56,"source":50,"evidence":57},"Wanted a lightweight, powerful graph database like SQLite and Postgres; no existing solution was good enough",[58],{"id":53},{"value":60,"source":50,"evidence":61},"about half a year",[62],{"id":53},[64,68,74],{"value":65,"source":50,"evidence":66},"Rust",[67],{"id":53},{"value":69,"source":50,"evidence":70},"RocksDB storage engine",[71],{"id":72,"by":11,"text":73},"33521372","Thanks for your interest in this! It currently uses RocksDB as the storage engine. If your server has enough resources, I believe it can store TBs of data with no problem.…",{"value":75,"source":50,"evidence":76},"Python bindings",[77,81],{"id":78,"by":79,"text":80},"33519482","ekidd","This is a really impressive piece of work! Congratulations! I note that it appears to be a library, but it's licensed under the Affero GPL. I believe this means that if I link…",{"id":82,"by":11,"text":83},"33519592","No, my understanding is that if you don't make any changes to the Cozo code, you don't need to release anything to the public. If you do, and you cannot release your non-Cozo…","open_source","launched","solo",{"praise":88,"objections":108,"requests":132,"questions":146,"alternatives":170},[89,101],{"value":90,"source":91,"evidence":92},"Datalog-based embedded design is appealing","commenter",[93,97],{"id":94,"by":95,"text":96},"33521212","samuell","How I have waited for this: A simple, accessible library for graph-like data with datalog (also in a statically compiled language, yay). Have even pondered using SWI-prolog for…",{"id":98,"by":99,"text":100},"33521638","dwenzek","Really nice! I like the design choices of Datalog for the query language and Relations for the data model. This contrasts with the typical choices made for graph databases where…",{"value":102,"source":91,"evidence":103},"Graph queries over relational data are useful",[104],{"id":105,"by":106,"text":107},"33523805","mola","Graph query over relational data, brilliant. I need this yesterday.",[109,117],{"value":110,"source":91,"evidence":111},"License (AGPL) concerns for embedding in other software",[112,113],{"id":78,"by":79,"text":80},{"id":114,"by":115,"text":116},"33520485","kapilvt","its also odd then re the python bindings being MIT, as the AGPL will convey throughout any aggregation or library usage, as would GPL, the primary delta for GPL vs AGPL is the…",{"value":118,"source":91,"evidence":119},"Documentation is scattered and needs examples",[120,124,128],{"id":121,"by":122,"text":123},"33518701","OtomotO","Awesome work, congrats. For someone who never did anything datalog I didn't see an example in the repo and the docs (docs.rs) could need some more content. I hope to see a 1.0 at…",{"id":125,"by":126,"text":127},"33518820","pgt","Good job! How to transact? The examples only show queries.",{"id":129,"by":130,"text":131},"33522521","dmitriid","I nitpick for the README: consider converting examples from images to code blocks (you can even directly copy-paste them into the code blocks and they should retain their…",[133,138],{"value":134,"source":91,"evidence":135},"Better documentation and examples",[136,137],{"id":121,"by":122,"text":123},{"id":129,"by":130,"text":131},{"value":139,"source":91,"evidence":140},"Scalability to large datasets",[141,142],{"id":94,"by":95,"text":96},{"id":143,"by":144,"text":145},"33518792","stevesimmons","This does look very nice! Especially (from my point of view) having the Python interface. What's the max practical graph sizes you anticipate?",[147,152,163],{"value":148,"source":91,"evidence":149},"How well it scales to large datasets",[150,151],{"id":94,"by":95,"text":96},{"id":143,"by":144,"text":145},{"value":153,"source":91,"evidence":154},"How it compares to Souffle and differential-datalog",[155,159],{"id":156,"by":157,"text":158},"33519341","philzook","Very cool! I love the sqlite install everywhere model. Could you compare use case with Souffle? https:\u002F\u002Fsouffle-lang.github.io\u002F I'd suggest putting the link to the docs more…",{"id":160,"by":161,"text":162},"33521543","jitl","This is amazing! Have you looked at differential-datalog? It's rust-based, maintained by VMWare, and has a very rich, well-typed Datalog language. differential-datalog is…",{"value":164,"source":91,"evidence":165},"Whether Datalog can express negation queries",[166],{"id":167,"by":168,"text":169},"33526673","Jeff_Brown","I thought there was a big class of queries Datalog could not express -- something about negation, queries like \"all X for which not Y\". Is that not true? Or if it is, is Datalog…",[171,178,182,186,190],{"value":172,"source":91,"evidence":173},"Datascript",[174],{"id":175,"by":176,"text":177},"33518744","abc3354","This look nice ! Datascript seems to be another Datalog engine (in memory only) https:\u002F\u002Fgithub.com\u002Ftonsky\u002Fdatascript",{"value":179,"source":91,"evidence":180},"Souffle",[181],{"id":156,"by":157,"text":158},{"value":183,"source":91,"evidence":184},"differential-datalog",[185],{"id":160,"by":161,"text":162},{"value":187,"source":50,"evidence":188},"Datomic",[189],{"id":53},{"value":191,"source":91,"evidence":192},"Apache AGE for Postgres",[193],{"id":194,"by":195,"text":196},"33519118","canadiantim","You mention how Cypher is not much of an improvement over CTE in SQL, I was wondering if you could expand on this point a bit if possible? Some part of me is considering using…",{"comments":198,"answered":199,"key":200},20,15,[201,202,205],{"id":72,"text":73},{"id":203,"text":204},"33528822","Yes. For example, in Postgres you can sort tables arbitrarily large, not constrained by main memory. Postgres uses external merge sort when the tables are really large. There are…",{"id":82,"text":83},{"commenters":34,"max_depth":207,"maker_replies":198,"first_comment_mins":208,"lifespan_hours":209},7,64,52,[211,213,215,218,221,222,225,227,228,232,234,237,240,244,246,248,251,253,255,258,261,265,267,269,271,274,276,278,280,282,283,287,290,294,295,297,299,301,303,305,308,309,311,314,316,318,321,323,328,330,332,336,340,342,345,347,349,351,353,355,357,361,362,363,364,367,372],[94,38,44,212,95,38],"project\u002Fpositive\u002Fidea",[72,38,38,214,11,45],"project\u002Fneutral\u002Fperformance",[216,38,44,217,95,38],"33521442","maker\u002Fpositive\u002Fnone",[219,38,42,214,220,38],"33528309","bryanrasmussen",[203,38,38,214,11,45],[223,38,42,224,95,38],"33522494","project\u002Fneutral\u002Fdocs",[78,45,42,226,79,38],"project\u002Fneutral\u002Fnone",[82,45,38,226,11,45],[229,45,38,230,231,38],"33519855","commenter\u002Fneutral\u002Fnone","kylebarron",[233,45,38,226,11,45],"33519893",[235,45,38,230,236,38],"33520141","mijoharas",[238,45,38,230,239,38],"33524804","wizzwizz4",[241,45,42,242,243,38],"33520199","maker\u002Fneutral\u002Fnone","_frkl",[114,45,45,245,115,38],"project\u002Fcritical\u002Fnone",[247,45,38,226,11,45],"33520888",[249,45,38,230,250,38],"33520398","Cu3PO42",[252,45,38,226,11,45],"33520564",[254,45,38,226,11,45],"33520793",[256,45,44,217,257,38],"33527758","Semaphor",[259,45,45,245,260,38],"33520495","georgewfraser",[262,45,42,263,264,38],"33520634","project\u002Fmixed\u002Fnone","pie_flavor",[266,45,38,230,79,38],"33520817",[268,45,38,226,11,45],"33520925",[270,45,44,212,79,38],"33522975",[272,45,38,230,273,38],"33520887","dangoor",[156,33,42,275,157,38],"project\u002Fneutral\u002Fdesign",[277,33,38,275,11,45],"33519478",[279,33,42,275,157,38],"33519623",[281,33,42,224,95,38],"33522573",[160,42,44,212,161,38],[284,42,38,285,286,38],"33525598","other\u002Fneutral\u002Fnone","remram",[288,42,38,289,11,45],"33526420","project\u002Fneutral\u002Fidea",[291,18,44,292,293,38],"33520718","project\u002Fpositive\u002Fdocs","mark_l_watson",[194,44,42,289,195,38],[296,44,38,289,11,45],"33519316",[298,44,42,289,95,38],"33521291",[300,44,38,289,11,45],"33521588",[302,44,44,212,95,38],"33521674",[175,304,38,285,176,38],6,[306,304,38,285,307,38],"33519141","fsiefken",[167,207,42,289,168,38],[310,207,38,289,11,45],"33526757",[312,37,44,212,313,38],"33529607","syats",[143,315,42,214,144,38],9,[317,315,38,214,11,45],"33518861",[319,315,42,214,320,38],"33543738","kobaroko",[322,315,38,214,11,45],"33547611",[324,325,44,326,327,38],"33528940",10,"project\u002Fpositive\u002Fdesign","wodenokoto",[125,329,42,224,126,38],11,[331,329,38,224,11,45],"33518938",[333,334,44,212,335,38],"33520377",12,"packetlost",[337,338,42,289,339,38],"33522804",13,"ithrow",[341,338,38,275,11,45],"33526480",[121,343,42,344,122,38],14,"project\u002Fmixed\u002Fdocs",[346,343,38,224,11,45],"33518748",[348,343,42,289,122,38],"33518788",[350,343,38,289,11,45],"33518908",[352,343,42,289,122,38],"33519268",[354,343,38,289,11,45],"33519377",[356,343,38,230,122,38],"33520079",[358,343,44,359,360,38],"33519601","maker\u002Fpositive\u002Fdocs","Serow225",[98,199,44,326,99,38],[129,31,42,224,130,38],[105,32,44,212,106,38],[365,32,44,326,366,38],"33549079","philip-costa-jr",[368,369,44,370,371,38],"33520583",18,"maker\u002Fpositive\u002Fidea","typon",[373,374,44,375,376,38],"33522353",19,"project\u002Fpositive\u002Fnone","billylindeman",[],[379,384,389,394,399,404],{"id":380,"name":381,"points":382,"category":383},"33451148","Sprig",274,"games",{"id":385,"name":386,"points":387,"category":388},"33501177","textshader.com",260,"creative",{"id":390,"name":391,"points":392,"category":393},"33464492","purplehoisin.com",197,"hardware",{"id":395,"name":396,"points":397,"category":398},"33518845","Svija Vibe",188,"dev_tools",{"id":400,"name":401,"points":402,"category":403},"33494221","Feep! search",182,"web_saas",{"id":405,"name":406,"points":407,"category":408},"33475391","Reveddit.com",180,"infrastructure",false,"v2",{"id":412,"name":5,"line":6,"ai":409,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":413,"top":18,"kw":414,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":415,"url":9,"mix":416,"praise":90,"objection":110,"sub":21},33518320,0.39,[21,24,25,26,27],"5533300310033053350533503533535333305555",[31,32,33,33],1793991054418]