---
title: "Database Design and Management: A Comprehensive Skillset"
description: "Aleksandr Filippov blends relational database design in DBML and foundational SQL with hands-on work on the SQLite, PostgreSQL, MongoDB, and Chroma storage behind AI retrieval — pgvector, sqlite-vec, full-text, semantic, and hybrid search with rank fusion and reranking."
date: "2024-03-17T07:00:00Z"
last_updated: "2026-08-28"
build_time: "2026-09-01T11:00:09Z"
skill_name: "Databases"
skill_description: "Relational database design and SQL, plus hands-on work with the SQLite, PostgreSQL, MongoDB, and Chroma stores behind AI retrieval systems I build — pgvector and sqlite-vec, full-text, semantic, and hybrid search."
skill_category: ["rag-search"]
since: "2011-01-01"
last_used: "2026-07-27"
related_skills: ["system-analysis","rest-api"]
related_projects: ["mcp-context-server","air-api","aila"]
related_experience: ["head-of-technology-at-amega"]
keywords: ["Database Design","DBML","SQL","Document DB","Columnar DB","Vector DB","PostgreSQL","SQLite","MongoDB","pgvector","sqlite-vec","Chroma","Vector Search","Full-Text Search","Hybrid Search","Reciprocal Rank Fusion","Cross-Encoder Reranking"]
license: "https://creativecommons.org/licenses/by/4.0/"
canonical: "https://www.alexfeel.info/skills/databases/"
---

My database expertise encompasses the design of relational databases using DBML for versatile script generation across different database vendors and comprehensive documentation, coupled with foundational SQL skills for initial database seeding and the principles of columnar databases.

The work that keeps me closest to databases now is AI retrieval, and it runs on four stores. In **MCP Context Server**, the source-available memory layer for LLM agents I build and publish, I designed both storage backends — **SQLite** (WAL mode, the zero-configuration default) and **PostgreSQL** (MVCC, `asyncpg` pooling, JSONB indexing for high-concurrency deployments) — together with their vector extensions, **`sqlite-vec`** and **`pgvector`**, down to the dimension cap pgvector's HNSW index puts on uncompressed vectors and the storage-compression trade-off that works around it. In **AIR API**, the retrieval platform I built at Spotware, that job is split: **Chroma** holds the vectors behind a fully asynchronous wrapper I wrote over the LangChain client, **MongoDB** holds the parent documents behind an async store of my own, and PostgreSQL backs the ingestion record manager that tracks what has already been indexed. On top of storage sits the retrieval layer: full-text indexes (SQLite FTS5, PostgreSQL `tsvector`) ranked with BM25 or `ts_rank`, embeddings ranked by vector distance, the two fused with **Reciprocal Rank Fusion** — which I wrote from scratch in MCP Context Server and extended in AIR API to fuse several query formulations in one pass — and a cross-encoder reranker sharpening whatever survives the fusion. This diverse experience ensures robust and scalable data architecture solutions for complex analytical and operational requirements.


## Site index

- [llms.txt](https://www.alexfeel.info/llms.txt)
- [Complete index](https://www.alexfeel.info/llms-index.txt)
