From 1a4156c4e93d371f21c6ae044ee1d1a5eea21c9d Mon Sep 17 00:00:00 2001 From: James Arthur Date: Wed, 30 Oct 2024 22:32:18 +0100 Subject: [PATCH] docs: filled in missing reference pages. (#1890) --- website/data/literature.data.ts | 12 + website/data/literature/papers.yaml | 455 +++++++++++++++++++++++++ website/docs/reference/alternatives.md | 139 +++++++- website/docs/reference/literature.md | 32 +- 4 files changed, 636 insertions(+), 2 deletions(-) create mode 100644 website/data/literature.data.ts create mode 100644 website/data/literature/papers.yaml diff --git a/website/data/literature.data.ts b/website/data/literature.data.ts new file mode 100644 index 0000000000..cd2e3d453e --- /dev/null +++ b/website/data/literature.data.ts @@ -0,0 +1,12 @@ +import fs from 'node:fs' +import { parse } from 'yaml' + +export default { + watch: ['./literature/papers.yaml'], + + load (files) { + const contents = fs.readFileSync(files[0], 'utf-8') + + return parse(contents) + } +} diff --git a/website/data/literature/papers.yaml b/website/data/literature/papers.yaml new file mode 100644 index 0000000000..80986fe717 --- /dev/null +++ b/website/data/literature/papers.yaml @@ -0,0 +1,455 @@ +- year: 2011 + papers: + - title: Conflict-free Replicated Data Types (CRDTs) + authors: + - Nuno Preguiça + - Carlos Baquero + - Marc Shapiro + year: + url: 'https://hal.inria.fr/hal-00932836' + - title: >- + Don’t Settle for Eventual: Scalable Causal Consistency for Wide-Area Storage + with COPS + authors: + - Wyatt Lloyd + - Michael J. Freedman + - Michael Kaminsky + - David G. Andersen + url: 'https://www.cs.cmu.edu/~dga/papers/cops-sosp2011.pdf' + +- year: 2012 + papers: + - title: 'Making Geo-Replicated Systems Fast as Possible, Consistent when Necessary' + authors: + - Cheng Li + - Daniel Porto + - Allen Clement + - Johannes Gehrke + - Nuno Preguiça + - Rodrigo Rodrigues + url: 'https://doi.org/10.5555/2387880.2387906' + - title: 'Calvin: Fast Distributed Transactions for Partitioned Database Systems' + authors: + - Alexander Thomson + - Thaddeus Diamond + - Shu-Chun Weng + - Kun Ren + - Philip Shao + - Daniel J. Abadi + url: 'https://doi.org/10.1145/2213836.2213838' + +- year: 2013 + papers: + - title: 'Spanner: Google’s Globally-Distributed Database' + authors: + - James C. Corbett + - Jeffrey Dean + - Michael Epstein + - Andrew Fikes + - Christopher Frost + - J. J. Furman + - Sanjay Ghemawat + - Andrey Gubarev + - Christopher Heiser + - Peter Hochschild + - Wilson Hsieh + - Sebastian Kanthak + - Eugene Kogan + - Hongyi Li + - Alexander Lloyd + - Sergey Melnik + - David Mwaura + - David Nagle + - Sean Quinlan + - Rajesh Rao + - Lindsay Rolig + - Yasushi Saito + - Michal Szymaniak + - Christopher Taylor + - Ruth Wang + - Dale Woodford + url: 'https://doi.org/10.1145/2491245' + - title: 'Highly Available Transactions: Virtues and Limitations' + authors: + - Peter Bailis + - Aaron Davidson + - Alan Fekete + - Ali Ghodsi + - Joseph M. Hellerstein + - Ion Stoica + url: 'https://doi.org/10.14778/2732232.2732237' + - title: >- + SwiftCloud: Fault-Tolerant Geo-Replication Integrated all the Way to the + Client Machine + authors: + - Marek Zawirski + - Annette Bieniusa + - Valter Balegas + - Sérgio Duarte + - Carlos Baquero + - Marc Shapiro + - Nuno Preguiça + url: 'https://arxiv.org/abs/1310.3107' + +- year: 2014 + papers: + - title: Coordination Avoidance in Database Systems + authors: + - Peter Bailis + - Alan Fekete† + - Michael J. Franklin + - Ali Ghodsi + - Joseph M. Hellerstein + - Ion Stoica + url: 'https://arxiv.org/abs/1402.2237' + - title: Scalable Atomic Visibility with RAMP Transactions + authors: + - Peter Bailis + - Alan Fekete + - Ali Ghodsi + - Joseph M. Hellerstein + - Ion Stoica + url: 'https://doi.org/10.1145/2588555.2588562' + +- year: 2015 + papers: + - title: >- + Extending Eventually Consistent Cloud Databases for Enforcing Numeric + Invariants + authors: + - Valter Balegas + - Sérgio Duarte + - Carla Ferreira + - Mahsa Najafzadeh + - Nuno Preguiça + - Rodrigo Rodrigues + - Marc Shapiro + - Diogo Serra + url: 'https://doi.org/10.1109/SRDS.2015.32' + - title: >- + Feral Concurrency Control: An Empirical Investigation of Modern Application + Integrity + authors: + - Peter Bailis + - Alan Fekete + - Michael J. Franklin + - Ali Ghodsi + - Joseph M. Hellerstein + - Ion Stoica + url: 'https://doi.org/10.1145/2723372.2737784' + +- year: 2016 + papers: + - title: >- + Cause I’m Strong Enough: Reasoning about Consistency Choices in Distributed + Systems + authors: + - Alexey Gotsman + - Hongseok Yang + - Mahsa Najafzadeh + - Carla Ferreira + - Marc Shapiro + url: 'https://doi.org/10.1145/2837614.2837625' + - title: 'The CISE Tool: Proving Weakly-Consistent Applications Correct' + authors: + - Mahsa Najafzadeh + - Alexey Gotsman + - Hongseok Yang + - Carla Ferreira + - Marc Shapiro + url: 'https://doi.org/10.1145/2911151.2911160' + - title: 'Cure: strong semantics meets high availability and low latency' + authors: + - Deepthi Devaki Akkoorath + - Alejandro Z. Tomsic + - Manuel Bravo + - Zhongmiao Li + - Tyler Crain + - Annette Bieniusa + - Nuno Preguiça + - Marc Shapiro + url: 'https://doi.org/10.1109/ICDCS.2016.98' + - title: >- + Antidote: the highly-available geo-replicated database with strongest + guarantees + authors: + - Deepthi Devaki Akkoorath + - Annette Bieniusa + url: >- + https://pages.lip6.fr/syncfree/attachments/article/59/antidote-white-paper.pdf + - title: 'BigSets: Scaling CRDTs to large sizes in Riak' + authors: + - Russell Brown + - Torben Hoffmann + url: 'https://pages.lip6.fr/syncfree/index.php/2-uncategorised/53-big-sets.html' + +- year: 2017 + papers: + - title: Bringing Hybrid Consistency Closer to Programmers + authors: + - Gonçalo Marcelino + - Valter Balegas + - Carla Ferreira + url: 'https://doi.org/10.1145/3064889.3064896' + - title: Pure Operation-Based Replicated Data Types + authors: + - Carlos Baquero + - Paulo Sérgio Almeida + - Ali Shoker + url: 'https://arxiv.org/abs/1710.04469' + +- year: 2018 + papers: + - title: 'Just-Right Consistency: reconciling availability and safety' + authors: + - Marc Shapiro + - Annette Bieniusa + - Nuno Preguiça + - Valter Balegas + - Christopher Meiklejohn + url: 'https://arxiv.org/abs/1801.06340' + - title: >- + IPA: invariant-preserving applications for weakly consistent replicated + databases + authors: + - Valter Balegas + - Sérgio Duarte + - Carla Ferreira + - Rodrigo Rodrigues + - Nuno Preguiça + url: 'https://doi.org/10.14778/3297753.3297760' + - title: Delta State Replicated Data Types + authors: + - Paulo Sérgio Almeida + - Ali Shoker + - Carlos Baquero + url: 'https://doi.org/10.1016/j.jpdc.2017.08.003' + - title: 'Anna: A KVS For Any Scale' + authors: + - Chenggang Wu + - Jose M. Faleiro + - Yihan Lin + - Joseph M. Hellerstein + url: 'https://dl.acm.org/doi/10.1109/TKDE.2019.2898401' + - title: Interactive Checks for Coordination Avoidance + authors: + - Michael Whittaker + - Joseph M. Hellerstein + url: 'https://doi.org/10.14778/3275536.3275538' + - title: >- + ACGreGate: A Framework for Practical Access Control for Applications using + Weakly Consistent Databases + authors: + - Mathias Weber + - Annette Bieniusa + url: 'https://arxiv.org/abs/1801.07005' + +- year: 2019 + papers: + - title: 'CAnDoR: Consistency Aware Dynamic data Replication' + authors: + - Etienne Mauffret + - Flavien Vernier + - Sébastien Monnet + url: 'https://hal.inria.fr/hal-02274165' + - title: A Generic Replicated Data Type for Strong Eventual Consistency + authors: + - Kevin De Porre + - Florian Myter + - Christophe De Troyer + - Christophe Scholliers + - Wolfgang De Meuter + - Elisa Gonzalez Boix + url: 'https://doi.org/10.1145/3301419.3323974' + - title: 'Keeping CALM: When Distributed Consistency is Easy' + authors: + - Joseph M. Hellerstein + - Peter Alvaro + url: 'https://arxiv.org/abs/1901.01930' + - title: Invariant Safety for Distributed Applications" + authors: + - Sreeja Nair + - Gustavo Petri + - Marc Shapiro + url: 'https://doi.org/10.1145/3301419.3323970' + - title: LightKone Reference Architecture (LiRA) + authors: + - Ali Shoker + - Paulo Sergio Almeida + - Carlos Baquero + - Annette Bieniusa + - Roger Pueyo Centelles + - Pedro Akos Costa + - Vitor Enes + - Carla Ferreira + - Pedro Fouto + - Felix Freitag + - Bradley King + - Igor Kopestenski + - Giorgos Kostopoulos + - João Leitão + - Adam Lindberg + - Albert van der Linde + - Sreeja Nair + - Nuno Preguiça + - Mennan Selimi + - Marc Shapiro + - Peer Stritzinger + - Ilyas Toumlilt + - Peter Van Roy + - Dimitrios Vasilas + - Georges Younes + - Igor Zavalyshyn + - Peter Zeller + url: 'https://www.lightkone.eu' + - title: 'CDB: Geo-Replicated, Conflict-Free Document Database with Session Guarantees' + authors: + - Chetan Venkatesh + - Durga Gokina + - Christopher S. Meiklejohn + url: 'https://www.macrometa.com/global-data-network' + - title: 'A Tour of Gallifrey, a Language for Geodistributed Programming' + authors: + - Mae Milano + - Rolph Recto + - Tom Magrino + - Andrew C. Myers + url: 'https://doi.org/10.4230/LIPIcs.SNAPL.2019.11' + - title: 'Local-First Software: You Own Your Data, in spite of the Cloud' + authors: + - Martin Kleppmann + - Adam Wiggins + - Peter van Hardenberg + - Mark McGranaghan + url: 'https://www.inkandswitch.com/local-first/static/local-first.pdf' + +- year: 2020 + papers: + - title: Specification of a Transactionally and Causally-Consistent (TCC) database + authors: + - Saalik Hatia + - Marc Shapiro + url: 'https://hal.inria.fr/hal-02902474v1' + - title: >- + CScript: A distributed programming language for building mixed-consistency + applications + authors: + - Kevin De Porre + - Florian Myter + - Christophe Scholliers + - Elisa Gonzalez Boix + url: 'https://soft.vub.ac.be/~kdeporre/' + - title: 'Cloudburst: Stateful Functions-as-a-Service' + authors: + - Vikram Sreekanti + - Chenggang Wu + - Xiayue Charles Lin + - Johann Schleier-Smith + - Joseph E. Gonzalez + - Joseph M. Hellerstein + - Alexey Tumanov + url: 'https://doi.org/10.14778/3407790.3407836' + - title: Transactional Causal Consistency for Serverless Computing + authors: + - Chenggang Wu + - Vikram Sreekanti + - Joseph M. Hellerstein + url: 'https://doi.org/10.1145/3318464.3389710' + - title: >- + Conflict-Free Replicated Relations for Multi-Synchronous Database Management + at Edge + authors: + - Weihai Yu + - Claudia-Lavinia Ignat + url: 'https://hal.inria.fr/hal-02983557' + +- year: 2021 + papers: + - title: >- + Advanced Domain-Driven Design for Consistency in Distributed Data-Intensive + Systems + authors: + - Susanne Braun + - Annette Bieniusa + - Frank Elberzhager + url: 'https://doi.org/10.1145/3447865.3457969' + - title: >- + Tackling Consistency-related Design Challenges of Distributed Data-Intensive + Systems - An Action Research Study + authors: + - Susanne Braun + - Stefan Deßloch + - Eberhard Wolff + - Frank Elberzhager + - Andreas Jedlitschka + url: 'https://doi.org/10.1145/3475716.3475771' + - title: 'ECROs: Building Global Scale Systems from Sequential Code' + authors: + - Kevin De Porre + - Carla Ferreira + - Nuno Preguiça + - Elisa Gonzalez + url: 'https://doi.org/10.1145/3485484' + - title: >- + It’s about Thyme: On the design and implementation of a time-aware reactive + storage system for pervasive edge computing + authors: + - João A. Silva + - Filipe Cerqueira + - Hervé Paulino + - João M. Lourenço + - João Leitão + - Nuno Preguiça + url: 'https://doi.org/10.1016/j.future.2020.12.008' + - title: 'Thespis: Causally-consistent OLTP' + authors: + - Joseph G. Vella + - Vitezslav Nezval + url: 'https://doi.org/0.15439/2021F34' + - title: >- + AUTOGR: automated geo-replication with fast system performance and preserved + application semantics + authors: + - Jiawei Wang + - Cheng Li + - Kai Ma + - Jingze Huo + - Feng Yan + - Xinyu Feng + - Yinlong Xu + url: 'https://doi.org/10.14778/3461535.3461541' + - title: New Directions in Cloud Programming + authors: + - Alvin Cheung + - Natacha Crooks + - Joseph M. Hellerstein + - Mae Milano + url: 'https://arxiv.org/abs/2101.01159' + - title: Highly-Available and Consistent Group Collaboration at the Edge with Colony + authors: + - Ilyas Toumlilt + - Pierre Sutra + - Marc Shapiro + url: 'https://dl.acm.org/doi/abs/10.1145/3464298.3493405' + - title: >- + Towards a General Database Management System of Conflict-Free Repli- cated + Relations + authors: + - Iver Toft Tomter + url: 'https://munin.uit.no/bitstream/handle/10037/22344/thesis.pdf' + +- year: 2022 + papers: + - title: Building data-centric apps with a reactive relational database + authors: + - Nicholas Schiefer + - Geoffrey Litt + - Johannes Schickling + - Daniel Jackson + url: 'https://riffle.systems/essays/prelude' + - title: 'VeriFx: Correct Replicated Data Types for the Masses' + authors: + - Kevin De Porre + - Carla Ferreira + - Elisa Gonzalez Boix + url: 'https://arxiv.org/pdf/2207.02502.pdf' diff --git a/website/docs/reference/alternatives.md b/website/docs/reference/alternatives.md index 0114bbeaf4..d6b3f767c7 100644 --- a/website/docs/reference/alternatives.md +++ b/website/docs/reference/alternatives.md @@ -1,7 +1,144 @@ --- +title: Alternatives +description: >- + Alternative projects and systems for syncing data and building local-first applications. outline: deep --- # Alternatives -This page is under construction. \ No newline at end of file +There are many systems for syncing data and building local-first applications. + +> [!Tip] Add a project to this page +> If you'd like to suggest a project to add to this page, please feel free to +> [submit a pull‑request](https://github.com/electric-sql/electric/edit/main/website/docs/reference/alternatives.md). + +## Alternative projects + +We list a selection of projects below, including for example: + +- [InstantDB](https://www.instantdb.com) +- [Jazz](https://jazz.tools) +- [PowerSync](https://www.powersync.co) +- [Turso](https://turso.tech) +- [Zero](https://zerosync.dev) + +### Real-time and sync + +[Electric](/product/sync) is a sync-engine. It syncs subsets of data from Postgres, in real-time, into local apps and services. Other real-time streaming systems and sync engines include: + +- [Ably](https://ably.com) +- [Ampli-sync](https://ampliapps.com/sqlite-sync) +- [Convex](https://www.convex.dev) +- [Debezium](https://debezium.io/) +- [DriftDB](https://driftdb.com) +- [EDB BDR](https://www.enterprisedb.com/docs/pgd/4/bdr) +- [Fanout](https://www.fastly.com/products/fanout) +- [Feldera](https://www.feldera.com) +- [Firebase](https://firebase.google.com) +- [Hevo](https://hevodata.com/) +- [Litestream](https://litestream.io) +- [Liveblocks](https://liveblocks.io) +- [Materialize](https://materialize.com) +- [Mycelial](https://mycelial.com) +- [PartyKit](https://partykit.io) +- [pgEdge](https://www.pgedge.com) +- [PowerSync](https://www.powersync.co) +- [Pusher](https://pusher.com) +- [Prisma Pulse](https://www.prisma.io/data-platform/pulse) +- [Qlik](https://www.qlik.com/us/products/qlik-data-streaming-cdc) +- [Sequin](https://sequinstream.com) +- [SKDB](https://skdb.io) +- [SQLedge](https://github.com/zknill/sqledge) +- [SQLSync](https://github.com/orbitinghail/sqlsync) +- [Supabase Realtime](https://supabase.com/docs/guides/realtime) +- [Turso](https://turso.tech) + +### Embedded databases + +[PGlite](/product/pglite) is an embedded database. Other embedded databases include: + +- [CozoDB](https://www.cozodb.org) +- [DuckDB](https://duckdb.org) +- [libSQL](https://turso.tech/libsql) +- [SQlite](https://www.sqlite.org) +- [Tonbo](https://github.com/tonbo-io/tonbo) + +### Local-first + +Electric and PGlite are *components* that can be composed, with other tools, into a local-first stack. Other local-first libraries and frameworks include: + +- [Automerge](https://automerge.org) +- [Ditto](https://ditto.live) +- [DXOS](https://dxos.org) +- [Evolu](https://github.com/evoluhq/evolu) +- [Fireproof](https://fireproof.storage) +- [Homebase](https://homebase.io) +- [InstantDB](https://www.instantdb.com) +- [Jazz](https://jazz.tools) +- [Kinto](https://kinto-storage.org) +- [LiveStore](https://github.com/livestorejs) +- [Pocketbase](https://pocketbase.io) +- [Pouch](https://pouchdb.com) +- [remoteStorage.js](https://remotestorage.io) +- [Replicache](https://replicache.dev) +- [RxDB](https://rxdb.info) +- [Socket](https://socketsupply.co) +- [sqlite_crdt](https://github.com/cachapa/sqlite_crdt) +- [Synql](https://github.com/coast-team/synql) +- [TinyBase](https://tinybase.org) +- [Triplit](https://www.triplit.dev) +- [Verdant](https://github.com/a-type/verdant) +- [Vlcn](https://vlcn.io) / [cr-sqlite](https://github.com/vlcn-io/cr-sqlite) +- [Watermelon](https://nozbe.github.io/WatermelonDB) +- [Yjs](https://yjs.dev) +- [Zero](https://zerosync.dev) + +You can also find out more about local-first software development and discover other projects from a range of communities, including: + +- [lofi.software](https://lofi.software) +- [localfirst.fm](https://www.localfirst.fm) +- [Local-first Conf](https://www.localfirstconf.com) (*disclaimer: we're a co-organiser*) +- [crdt.tech](https://crdt.tech) + +### State transfer + +Other systems for managing state transfer: + +- [Apollo (GraphQL)](https://www.apollographql.com) +- [Relay (GraphQL)](https://relay.dev) +- [tRPC](https://trpc.io) + +### Postgres APIs + +Other tools for exposing data from Postgres: + +- [Hasura](https://hasura.io) +- [PostGraphile](https://www.graphile.org/postgraphile) +- [PostgREST](https://postgrest.org/en/stable) + +### Interesting projects + +Other interesting projects include: + +- [AntidoteDB](https://www.antidotedb.eu) +- [Beehive](https://www.inkandswitch.com/beehive) +- [Cambria](https://www.inkandswitch.com/cambria) +- [CockroachDB](https://www.cockroachlabs.com/product) +- [Concordant](https://github.com/concordant) +- [Dat-ecosystem](https://blog.dat-ecosystem.org/staying-connected) +- [Declarative Dataflow](https://github.com/comnik/declarative-dataflow) +- [Dqlite](https://dqlite.io) +- [Electric Clojure](https://github.com/hyperfiddle/electric) +- [Fauna](https://fauna.com) +- [Hydro Project](https://hydro.run/research) +- [Ink & Switch](https://www.inkandswitch.com) +- [IPFS](https://ipfs.tech) +- [Macrometa](https://www.macrometa.com) +- [MotherDuck](https://motherduck.com) +- [RainbowFS](https://rainbowfs.lip6.fr) +- [rqlite](https://github.com/rqlite/rqlite) +- [SOLID](https://solidproject.org) +- [Source](https://source.network) +- [Spanner](https://cloud.google.com/spanner/) +- [SyncFree](https://pages.lip6.fr/syncfree/index.php/crdt-resources.html) diff --git a/website/docs/reference/literature.md b/website/docs/reference/literature.md index 4507ecd7fb..bd4a56df54 100644 --- a/website/docs/reference/literature.md +++ b/website/docs/reference/literature.md @@ -1,7 +1,37 @@ --- +title: Literature +description: >- + A selection of research papers that relate to local-first software and distributed databases. outline: deep --- + + # Literature -This page is under construction. \ No newline at end of file +ElectricSQL builds on decades of research into distributed database technology. Some of which was authored by [our team and advisors](/about/team). + +> [!Tip] Edit this page +> If you'd like to suggest a paper or an edit to make to this page, please +> [submit a pull‑request](https://github.com/electric-sql/electric/edit/main/website/docs/reference/alternatives.md). + +## Research papers + +This page lists a non-exhaustive selection of papers that chart the development of some of the concepts and algorithms that ElectricSQL and [other systems](./alternatives) are based on. + +
+

+ {{ section.year }} + + ​

+ +
\ No newline at end of file