A Lispy Database

One of the key features missing in the Compiler Company core is a reliable DBMS. It's something that I've worked towards in Rust, and now in Common Lisp, but haven't gotten to a production-ready state.

1. SQL

sql-architecture.jpg

The first, and often only choice for this need in companies of today is a SQL RDBMS.

The SQL ecosystem has client-server systems like PostgreSQL, and embedded offerings like SQLite. Whatever lang you use you can basically always count on there being SQL support for your DB needs.

You might ask yourself, why choose anything else? We all know friendly neighborhood SQL and understand it. Many of us have never used anything else because we don't need to. You can represent fairly complex relationships in the RDBMS model and have an ecosystem that supports it wherever you go.

My answer is simply - just because SQL is good enough, doesn't mean it's always the best choice. It is designed for Table-oriented data and that is where it should remain according to the CC.

2. Prolog

wam.webp

3. Key-Value Stores

  1. RocksDB
    rocksdb.png
  2. Blobs
    blob.jpg

4. Objects

https://courses.cs.northwestern.edu/325/readings/clos.html

The ORM maps the object system of your lang to SQL tables, columns and rows and provides an API for you to manipulate the database in a more idiomatic way.

orm.png