Databases

Databases

This is a published deck. Feel free look around, review cards, or make changes, but you'll need to save it to save your progress.
Column View
Improvements to CouchDB
4
Custom DB
2

Replicache

replicache.dev
New

Initial load

One downside of a local-first approach is that the initial load of an app is often slower than a pure-cloud app.
New

Blitz.js

A “zero-api” framework. Backend actions can be "imported" and used in the front end. I guess this would be similar to using the same re-frame event in both the front-end and back-end.
New

RxDB GraphQL replication

The graphql replication works by storing a last updated_at timestamp on the client. The client then sends a request to the server for all documents updated past that timestamp. The same works for pushes from the client to the server.
New
New

CouchDB access control

Database per user

New

Asami

An in-memory graph database, for Clojure and ClojureScript.
New

Datalevin

Datalevin is a simple durable Datalog database.
New

Hasura access control

In Hasura access-control rules are defined on the row and column level.
New
New

Crux

Crux is a general purpose database with graph-oriented bitemporal indexes. Datalog, SQL & EQL queries are supported, and Java, HTTP & Clojure APIs are provided.
New

etebase

An end-to-end encrypted open source version of firebase.
New

hypercore

Hypercore is a secure, distributed append-only log.
New

Access Control

CouchDB

New

Caching

Datalog

New

Automerge

A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
New

CRDT

Conflict Free Replicated Datatype
New

Materialized views

A materialized view is a bit like a cached query that, in most cases, needs to be updated manually.
New

Materialize

Incrementally-updated materialized views - in ANSI Standard SQL and in real time.
New

Feeding data to components

It is a common pattern in React to create a data "provider" component that wraps a pure component. The impure data provider component grabs its data side band and passes it as props to the pure component.
New

Relay in CLJS

Sample of a relay-like system for building a query graph from component fragments.
New

Relay

A "GraphQL client for React." Built by facebook, the key insight of Relay is that is co-locates GraphQL fragments with the components that use them. The component tree is wrapped in a QueryRenderer which combines all of the fragments in the tree into a single GraphQL query.
New

Data prefetching

This refers to a technique in which application state is pre-fetched server-side and injected into a server-side rendered page. Many frameworks integrate with GraphQL to handle this automatically.
New

PostgREST

Similar to Hasura, PostgREST is a REST API over top of a Postgres database. It is used by supabase, an open source alternative to firebase.
New

Hasura

Hasura is a GraphQL API on top of a Postgresql database. It embraces the idea of the client querying the database directly.
New

CouchDB

CouchDB is a JSON Document store with robust replication capabilities. It is fairly common that each users has their own database when using CouchDB.
New

PouchDB

PouchDB is a javascript implementation of CouchDB that runs in the browser and node.
New

Datahike

Datahike is a Datalog databased based on datomic. It has a pluggable storage backend via konserve.
New

Datomic

New

re-frame

re-frame uses subscriptions to fetch data from the app-db. Subscriptions are reactive queries depending on their "input signals". The input signal can either be the app-db itself, or another query.
New

Event reduce

An algorithim that optimizes the re-running of queries based on some mutation event. It is used by rxdb to create reactive queries.
New

Reactive queries

Queries that can be watched and automatically re-run when the underlying data changes.
New

RxDB

A reactive database that supports reactive queries.
New

Datalog

New

Pathom

In a nutshell: GraphQL, but in Clojure.
New

GraphQL

New

Datomic pull syntax

Contrast to Datalog
New

EQL

EDN Query language is a bit like Datomic pull syntax or GraphQL.
New