changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > org > blog / draft/a-lispy-database.org

changeset 21: 1204cefcfd28
parent: 889759cafcc2
child: 8a6b4b2f68cb
author: Richard Westhaver <ellis@rwest.io>
date: Sat, 08 Jun 2024 00:21:48 -0400
permissions: -rw-r--r--
description: style updates
1 #+title: A Lispy Database
2 #+options: toc:t h:1
3 #+setupfile: ../../clean.theme
4 
5 One of the key features missing in the Compiler Company [[https://vc.compiler.company/comp/core][core]] is a
6 reliable [[https://en.wikipedia.org/wiki/Category:Database_management_systems][DBMS]]. It's something that I've worked towards in Rust, and
7 now in Common Lisp, but haven't gotten to a production-ready state.
8 * SQL
9 The first, and often /only/ choice for this need in companies of
10 today is a SQL RDBMS.
11 
12 The SQL ecosystem has client-server systems like PostgreSQL, and
13 embedded offerings like SQLite. Whatever lang you use you can
14 basically always count on there being SQL support for your DB needs.
15 
16 You might ask yourself, why choose anything else? We all know friendly
17 neighborhood SQL and understand it. Many of us have never used
18 anything else because we /don't need to/. You can represent fairly
19 complex relationships in the RDBMS model and have an ecosystem that
20 supports it wherever you go.
21 
22 My answer is simply - just because SQL is good enough, doesn't mean
23 it's always the best choice. It is designed for Table-oriented data
24 and that is where it should remain according to the CC.
25 * Prolog
26 * Key-Value Stores
27 ** RocksDB
28 ** Blobs
29 * Objects
30 - [[https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping][ORM]]
31 The ORM maps the object system of your lang to SQL tables, columns and
32 rows and provides an API for you to manipulate the database in a more
33 idiomatic way.