Enjoyer of Go, Rust, Python, Databases & SQL

Latest

2025 Jan 14

[Note] Creating a DuckDB Table Function Extension

Alternatively: A DuckDB Table Function Extension Starter Code

2025 Jan 02

[Note] PostgreSQL to Iceberg Snapshot Sync (Using DuckDB)

Query PG using DuckDB, copy table data into iceberg

2024 Dec 28

[Note] Arrays, Constraints & Immutable Functions

Tightening what kinds of values array columns can hold using constraints and immutable functions

2024 Dec 24

Fine-grained Authorization with Row Level Security in PostgreSQL

Tutorial on RLS

2024 Dec 24

Multi-Tenancy Models in PostgreSQL

Overview of various approaches for multi-tenancy implementation in Postgres

2024 Dec 10

PostgreSQL: Managing Roles, Attributes and Privileges

Using roles for permissions and authorization for users and groups in PG

2024 Nov 29

Timeseries and ASOF Joins

Pairing up timeseries data when the timestamps don’t match exactly (in Pandas, Polars, DuckDB, Postgres & QuestDB)

2024 Nov 15

Archiving Time-Series Data from PostgreSQL into Parquet

Keeping your database lean

Featured

2024 Dec 24

Fine-grained Authorization with Row Level Security in PostgreSQL

Tutorial on RLS

2024 Oct 17

Graph Query Interfaces: A Comparison Between SQL and Cypher

Featuring DuckDB & KuzuDB

2024 Jun 04

Larger-Than-Memory Data Management

For when the database exceeds the main memory size

2024 Apr 04

DuckDB JIT Compiled UDFs with Numba

JIT compiling your vectorized UDFs with Numba. Plus pure SQL is plenty fast if you can figure out how to write it

2023 Aug 22

Logging in Go

Best practices, Logging levels, structured logging, Logging & Telemetry (Metrics, Tracing), Audit logs

2023 Jul 08

Parquet + Zstd: Smaller faster data formats

Often, parquet files have to be compressed. For fast compression, use LZ4 or Snappy. For the highest data compression ratio, use brotli. For both, zstd

2020 Jan 06

Back To Basics: The foundation of Joins in SQL

Writing SQL joins without using joins at all. A quick history of Database Models, Schemas, Constraints, Cross-products and everything in between