[{"data":1,"prerenderedAt":330},["ShallowReactive",2],{"project-32269287":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":45,"post_text":47,"what":48,"said":72,"maker_in_thread":160,"shape":172,"grid":176,"attempts":287,"same_week":292,"maker_shows":33,"maker_hidden":322,"reader_version":323,"card":324},"32269287","mvsqlite","Distributed SQLite on FoundationDB","title","Show HN: Distributed SQLite on FoundationDB","https:\u002F\u002Fgithub.com\u002Flosfair\u002Fmvsqlite","github.com","losfair",1659037745,2022,150,42,400,2570,16,"notable","data","distributed sql database","library",[24,25,26,27,28],"distributed sqlite","foundationdb","mvcc","sqlite vfs","serializable transactions","mixed",0.242,{"positive":32,"neutral":33,"mixed":34,"critical":35},6,8,1,3,18,{"idea":38,"execution":41,"design":42,"docs":44},{"positive":39,"critical":40},4,2,{"positive":40,"critical":34},{"positive":43,"critical":43},0,{"positive":43,"critical":43},[35,43,43,43,43,43,43,35,43,43,43,43,43,43,46,34,43,34,43,35,35,35,46,34,43,43,35,43,35,43,46,43,35,46,46,46,43,43,35,43],5,"Hello HN! I'm building mvsqlite, a distributed variant of SQLite with MVCC transactions, that runs on FoundationDB. It is a drop-in replacement that just needs an `LD_PRELOAD` for existing applications using SQLite.\n\nI made this because Blueboat (https:\u002F\u002Fgithub.com\u002Flosfair\u002Fblueboat) needs a native SQL interface to persistent data. Apparently, just providing a transactional key-value store isn’t enough - it is more easy and efficient to build complex business logic on an SQL database, and it seems necessary to bring a self-hostable distributed SQL DB onto the platform. Since FoundationDB is Blu",{"problem":49,"audience":55,"pricing":55,"motivation":56,"time_to_build":55,"stack":60,"openness":69,"stage":70,"team_size":71},{"value":50,"source":51,"evidence":52},"Gives SQLite apps a distributed, transactional storage backend without changing application code","maker",[53],{"id":54},"post",null,{"value":57,"source":51,"evidence":58},"Blueboat needed a native SQL interface to persistent data on FoundationDB",[59],{"id":54},[61,65],{"value":62,"source":51,"evidence":63},"SQLite",[64],{"id":54},{"value":66,"source":51,"evidence":67},"FoundationDB",[68],{"id":54},"open_source","prototype","unknown",{"praise":73,"objections":93,"requests":107,"questions":122,"alternatives":141},[74,86],{"value":75,"source":76,"evidence":77},"Good idea and congrats on the project","commenter",[78,82],{"id":79,"by":80,"text":81},"32289592","mping","FDB is a nice piece of technology if you know how to go around its constraints. Congrats on the project.",{"id":83,"by":84,"text":85},"32295897","Multicomp","Good work! I don't understand the innards of this at all, but I love the design. Iirc when I first read through the book designing data centric applications, the author talked…",{"value":87,"source":76,"evidence":88},"Would like to see it become a product",[89],{"id":90,"by":91,"text":92},"32290885","LAC-Tech","So the idea is that a small business could start on SQLite, and then switch over to this when it's time to scale, without re-writing it in the Postgres dialect? Regardless, it's…",[94,101],{"value":95,"source":76,"evidence":96},"Cross-database transactions limited by SQLite attach limits and WAL guarantees",[97],{"id":98,"by":99,"text":100},"32290999","liuliu","This really, IMHO (as someone implements things on top of SQLite too https:\u002F\u002Fdflat.io) pushes SQLite too far as the implementation of cross-db transactions have some big issues:…",{"value":102,"source":76,"evidence":103},"Journal mode and single-writer concerns about crash safety",[104],{"id":105,"by":99,"text":106},"32292061","I am a bit out of depth here for obvious reasons (I work above SQLite, not under SQLite). But from my understanding, `journal_mode=memory` simply means it is in rollback mode,…",[108,115],{"value":109,"source":76,"evidence":110},"Jepsen testing",[111],{"id":112,"by":113,"text":114},"32293842","gigatexal","Any chance this could get Jepsen tested? I’d donate to make that happen.",{"value":116,"source":76,"evidence":117},"Support for osquery and other SQLite extensions",[118],{"id":119,"by":120,"text":121},"32292515","zwass","(I'm on the osquery steering committee) In theory osquery is \"just\" virtual tables, but in practice there's quite a bit more that would probably make attaching it to mvsqlite. If…",[123,130,134],{"value":124,"source":76,"evidence":125},"Whether SQLite extensions like FTS5 work on it",[126],{"id":127,"by":128,"text":129},"32289642","faizshah","I love the idea of distributed SQLite but I’m having a hard time understanding which parts of FoundationDB and which parts of SQLite are available in this implementation. I’m…",{"value":131,"source":76,"evidence":132},"Whether it can be used serverless embedded without a FoundationDB cluster",[133],{"id":127,"by":128,"text":129},{"value":135,"source":76,"evidence":136},"How it compares to rqlite or dqlite",[137],{"id":138,"by":139,"text":140},"32295589","reichardt","Does this work similar to rqlite or dqlite from a usage standpoint, or does it solve a different use case?",[142,149,156],{"value":143,"source":76,"evidence":144},"Comdb2",[145],{"id":146,"by":147,"text":148},"32290449","fnord123","Comdb2: distributed sqlite: http:\u002F\u002Fcomdb2.org\u002F",{"value":150,"source":76,"evidence":151},"Bedrock by Expensify",[152],{"id":153,"by":154,"text":155},"32292487","Something1234","Haven't you heard of bedrock by expensify?",{"value":157,"source":76,"evidence":158},"rqlite and dqlite",[159],{"id":138,"by":139,"text":140},{"comments":33,"answered":161,"key":162},7,[163,166,169],{"id":164,"text":165},"32289697","Yes it's correct! mvsqlite integrates as a custom VFS underlying SQLite's query engine, and SQLite ecosystem stuff can be used on top of it.",{"id":167,"text":168},"32293365","I think Kafka is enough for this use case? FDB should work too but sounds like overkill.",{"id":170,"text":171},"32291859","mvsqlite doesn't rely on the SQLite WAL or rollback journal for safety. Actually, it enforces journal_mode=memory! The atomic commit semantics is guaranteed by FDB instead. The…",{"commenters":173,"max_depth":32,"maker_replies":33,"first_comment_mins":174,"lifespan_hours":175},27,2865,271,[177,179,181,185,188,189,193,195,197,200,202,204,207,210,213,215,217,219,221,223,227,229,232,236,238,241,244,248,251,254,258,260,263,265,267,269,271,275,277,280,282,284],[127,43,35,178,128,43],"project\u002Fneutral\u002Fidea",[164,43,43,180,11,34],"maker\u002Fpositive\u002Fexecution",[182,43,43,183,184,43],"32289756","other\u002Fneutral\u002Fnone","robertsdionne",[186,43,43,183,187,43],"32292706","leetrout",[119,43,43,183,120,43],[190,34,43,191,192,43],"32293342","other\u002Fneutral\u002Fidea","endisneigh",[167,34,43,194,11,34],"maker\u002Fneutral\u002Fidea",[196,34,35,194,192,43],"32293546",[198,40,43,183,199,43],"32290086","dilyevsky",[201,40,43,183,187,43],"32292698",[203,40,43,183,199,43],"32293122",[205,40,43,183,206,43],"32293162","saghm",[208,40,43,183,209,43],"32294988","richieartoul",[211,40,43,183,212,43],"32393791","transactional",[79,35,46,214,80,43],"maker\u002Fpositive\u002Fidea",[98,39,34,216,99,43],"project\u002Fcritical\u002Fidea",[170,39,43,218,11,34],"maker\u002Fneutral\u002Fexecution",[105,39,34,220,99,43],"project\u002Fcritical\u002Fexecution",[222,39,43,218,11,34],"32292254",[224,39,35,225,226,43],"32295368","project\u002Fneutral\u002Fexecution","rockwotj",[228,39,43,218,11,34],"32295414",[230,39,35,231,99,43],"32309622","project\u002Fneutral\u002Fdesign",[233,39,35,234,235,43],"32291990","project\u002Fmixed\u002Fidea","mumoshu",[90,46,46,237,91,43],"project\u002Fpositive\u002Fidea",[239,32,34,216,240,43],"32290554","cmrdporcupine",[242,32,43,243,91,43],"32290858","commenter\u002Fcritical\u002Fidea",[245,32,43,246,247,43],"32294859","commenter\u002Fneutral\u002Fnone","_benedict",[249,161,35,231,250,43],"32289832","learndeeply",[252,161,43,253,11,34],"32289847","maker\u002Fneutral\u002Fdesign",[255,161,35,256,257,43],"32289895","maker\u002Fneutral\u002Fdocs","metadat",[259,161,43,256,11,34],"32289913",[261,33,46,262,257,43],"32289876","project\u002Fpositive\u002Fexecution",[264,33,43,256,11,34],"32289891",[266,33,35,256,257,43],"32289908",[112,268,46,262,113,43],9,[83,270,46,237,84,43],10,[272,273,46,237,274,43],"32328359",11,"ranjanprj",[146,276,43,183,147,43],12,[278,276,43,183,279,43],"32290625","wener",[138,281,35,178,139,43],13,[153,283,43,183,154,43],14,[285,283,43,183,286,43],"32292651","elktea",[288,291],{"id":289,"t":290,"points":40,"comments":35},"32253406",1658942652,{"id":4,"t":12,"points":14,"comments":15},[293,298,302,307,312,317],{"id":294,"name":295,"points":296,"category":297},"32266086","Parsnip",536,"learning_science",{"id":299,"name":300,"points":301,"category":20},"32303762","sqlite-zstd",420,{"id":303,"name":304,"points":305,"category":306},"32293178","PlayCode",397,"dev_tools",{"id":308,"name":309,"points":310,"category":311},"32331359","Adadot",325,"web_saas",{"id":313,"name":314,"points":315,"category":316},"32312413","Emery",261,"productivity",{"id":318,"name":319,"points":320,"category":321},"32269722","TensorDock Core GPU Cloud",147,"infrastructure",false,"v2",{"id":325,"name":5,"line":6,"ai":322,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":326,"top":18,"kw":327,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":328,"url":9,"mix":329,"praise":75,"objection":95,"sub":21},32269287,0.24,[24,25,26,27,28],"3000000300000051010333510030305035550030",[32,33,34,35],1794036623070]