# sql-database

Published articles for sql-database.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Using Dolt's Versioned SQL Database for Feature-Store Point-in-Time Reads

DevFeed: [Using Dolt's Versioned SQL Database for Feature-Store Point-in-Time Reads](<https://devfeed.tech/articles/what-if-the-feature-store-had-git-built-in-40139.md>)

Original publisher: [Read original article](<https://korbonits.com/blog/2026-05-15-what-if-the-feature-store-had-git-built-in/>)

Published: 2026-05-15T00:00:00Z

Content type: opinion

Language: en

Sources: [Alex Korbonits](<https://devfeed.tech/sources/alex-korbonits.md>)

Topics: [feature-store](<https://devfeed.tech/topics/feature-store.md>), [Git](<https://devfeed.tech/topics/git.md>), [reproducibility](<https://devfeed.tech/topics/reproducibility.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [dedupe](<https://devfeed.tech/tags/dedupe.md>), [feature-store](<https://devfeed.tech/tags/feature-store.md>), [git](<https://devfeed.tech/tags/git.md>), [reproducibility](<https://devfeed.tech/tags/reproducibility.md>), [rfc](<https://devfeed.tech/tags/rfc.md>), [row-number](<https://devfeed.tech/tags/row-number.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-database](<https://devfeed.tech/tags/sql-database.md>)

### AI overview

This article describes a prototype Feast offline-store plugin backed by Dolt, a version-controlled SQL database. It argues that Dolt's revision-based reads can provide point-in-time feature retrieval and reproducible training snapshots without the usual append-only log deduplication CTEs. Tests on toy datasets produced identical results with shorter queries, though the article presents this as an early spike rather than a production benchmark.

### Source excerpt

A weekend spike asked whether Dolt's AS OF reads could replace the ROW_NUMBER dedupe at the heart of every feature store's point-in-time join. Four weeks later, the RFC is quiet and the plugin's get_historical_features works end-to-end against a live Dolt server. Notes on building anyway.

## Refining SQL Data Models Without Breaking Legacy Code

DevFeed: [Refining SQL Data Models Without Breaking Legacy Code](<https://devfeed.tech/articles/refinement-without-specification-25504.md>)

Original publisher: [Read original article](<https://buttondown.com/hillelwayne/archive/refinement-without-specification/>)

Author: Hillel Wayne

Published: 2026-01-20T17:49:07Z

Content type: article

Language: en

Sources: [Newsletter feed for Hillel Wayne's Newsletter](<https://devfeed.tech/sources/newsletter-feed-for-hillel-wayne-s-newsletter.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [legacy](<https://devfeed.tech/topics/legacy.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [event-sourcing](<https://devfeed.tech/tags/event-sourcing.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-database](<https://devfeed.tech/tags/sql-database.md>)

### AI overview

This article explains how refinement mappings can support SQL schema changes while preserving compatibility with existing code. It applies the approach to migrating a boolean column to a timestamp, then to an event-sourcing-like model, and examines how mutability constraints affect whether the refinement remains valid.

### Source excerpt

Imagine we have a SQL database with a user table, and users have a non-nullable is_activated boolean column. Having read That Boolean Should Probably Be Something else, you decide to migrate it to a nullable activated_at column. You can change any of the SQL queries that read/update the user table but not any of the code that uses the results of these queries. Can we make this change in a way that preserves all external properties? Yes. If an update would set is_activated to true, instead set it to the current date. Now define the refinement mapping that takes a new_user and returns an old_user. All columns will be unchanged except is_activated, which will be f(new_user).is_activated = if new_user.activated_at == NULL then FALSE else TRUE Now new code can use new_user directly while legacy code can use f(new_user) instead, which will behave indistinguishably from the old_user. A little more time passes and you decide to switch to an event sourcing-like model. So instead of an activated_at column, you have a user_events table, where every record is (user_id, timestamp, event). So adding an activate event will activate the user, adding a deactivate event will deactivate the user. Once again, we can update the queries but not any of the code that uses the results of these queries. Can we make a change that preserves all external properties? Yes. If an update would change is_activated, instead have it add an appropriate record to the event table. Now, define the refinement mapping that takes newer_user and returns new_user. The activated_at field will be computed like this: g(newer_user).activated_at = # last_activated_event let lae = newer_user.events .filter(event = "activate" | "deactivate") .last, in if lae.event == "activate" then lae.timestamp else NULL Now new code can use newer_user directly while old code can use g(newer_user) and the really old code can use f(g(newer_user)). Mutability constraints I said "these preserve all external properties" and that was a

## Building a Semantic Search Engine with Qdrant & Encore.ts

DevFeed: [Building a Semantic Search Engine with Qdrant & Encore.ts](<https://devfeed.tech/articles/building-a-semantic-search-engine-with-qdrant-encore-ts-17832.md>)

Original publisher: [Read original article](<https://encore.dev/blog/qdrant-semantic-search>)

Author: Ivan Cernja

Published: 2025-05-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Encore Updates](<https://devfeed.tech/sources/encore-updates.md>)

Topics: [Qdrant](<https://devfeed.tech/topics/qdrant.md>), [AI search](<https://devfeed.tech/topics/ai-search.md>), [Embeddings](<https://devfeed.tech/topics/embeddings.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [code](<https://devfeed.tech/tags/code.md>), [embeddings](<https://devfeed.tech/tags/embeddings.md>), [openai](<https://devfeed.tech/tags/openai.md>), [search](<https://devfeed.tech/tags/search.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-database](<https://devfeed.tech/tags/sql-database.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [vector](<https://devfeed.tech/tags/vector.md>), [vector-database](<https://devfeed.tech/tags/vector-database.md>)

### AI overview

A tutorial for building a semantic search engine with OpenAI embeddings and the Qdrant vector database. It explains how natural-language queries can retrieve conceptually related documents and describes using Encore services with a SQL database for document metadata.

### Source excerpt

Create powerful semantic search using OpenAI embeddings and Qdrant vector database

## Bring Relational Power to Firebase with Firebase Data Connect

DevFeed: [Bring Relational Power to Firebase with Firebase Data Connect](<https://devfeed.tech/articles/bring-relational-power-to-firebase-with-firebase-data-connect-23883.md>)

Original publisher: [Read original article](<https://medium.com/firebase-developers/bring-relational-power-to-firebase-with-firebase-data-connect-e65e5c420ca8?source=rss----8e8b7dc6774d---4>)

Author: Nui Somjin

Published: 2024-12-17T14:09:33Z

Content type: tutorial

Language: en

Sources: [Firebase Developers - Medium](<https://devfeed.tech/sources/firebase-developers-medium.md>)

Topics: [Firebase](<https://devfeed.tech/topics/firebase.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [CRUD](<https://devfeed.tech/topics/crud.md>)

Tags: [cloud](<https://devfeed.tech/tags/cloud.md>), [database](<https://devfeed.tech/tags/database.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [firebase-database](<https://devfeed.tech/tags/firebase-database.md>), [firestore](<https://devfeed.tech/tags/firestore.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [migrations](<https://devfeed.tech/tags/migrations.md>), [permissions](<https://devfeed.tech/tags/permissions.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [schema](<https://devfeed.tech/tags/schema.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [sql-database](<https://devfeed.tech/tags/sql-database.md>)

### AI overview

This tutorial introduces Firebase Data Connect, a relational database offering that uses PostgreSQL on Google Cloud and a GraphQL interface. It explains how developers define schemas and connectors while Firebase generates database schemas, migrations, type-safe SDKs, CRUD API endpoints, and authorization mechanisms.

### Source excerpt

This article has been translated from its original blog post in Thai Many of us are familiar with Firebase as a robust Backend-as-a-Service, renowned for its NoSQL databases such as Realtime Database (since 2012) and Cloud Firestore (since 2017). However, both have limitations when handling complex queries. The Firebase community has long been requesting a SQL database solution to address redundancy and facilitate complex queries. At the recent Google I/O, Firebase introduced Firebase Data Connect, its first relational database offering 🎉 How Firebase Data Connect WorksApp data flow While Firebase Data Connect interacts with databases, it's more accurately described as an interface. Under the hood, it's leveraging PostgreSQL on GCP Cloud and providing a GraphQL-based bridge to connect clients with the SQL database. Firebase Data Connect capabilities that make working with PostgresSQL easier The Firebase team built Data Connect with the philosophy of 'You write the query, we do the rest.' Developers only need to define two things, and Firebase handles the rest, allowing developers to focus on their application's core logic. "You write the query, we do the rest"Firebase provides (in GraphQL): Data model (schema): This specifies the database schema, including the tables, columns, and data types. Connectors (queries & mutations): These define the operations for creating, reading, updating, and deleting data within the database. Firebase automatically creates: PostgresSQL schema: Generates the SQL commands to create the database structure in PostgreSQL, including migrations. Type-safe SDK: Provides a strongly-typed SDK for client applications (iOS, Android, Web, Flutter) to interact with the database. API Endpoints: Creates API endpoints for clients to perform CRUD operations on the database, complete with authorization mechanisms to control user permissions. For instance, all users might be able to view product listings, but only admins can add new products. We define D

## PostgreSQL Data Types: XML

DevFeed: [PostgreSQL Data Types: XML](<https://devfeed.tech/articles/postgresql-data-types-xml-34595.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2018/04/postgresql-data-types-xml/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2018-04-23T16:18:48Z

Content type: tutorial

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [XML](<https://devfeed.tech/topics/xml.md>), [data type](<https://devfeed.tech/topics/data-type.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [data-type](<https://devfeed.tech/tags/data-type.md>), [indexing](<https://devfeed.tech/tags/indexing.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-database](<https://devfeed.tech/tags/sql-database.md>), [sql-xml](<https://devfeed.tech/tags/sql-xml.md>), [stored-procedures](<https://devfeed.tech/tags/stored-procedures.md>), [transformation](<https://devfeed.tech/tags/transformation.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This article introduces PostgreSQL's XML data type and its SQL/XML support for storing and manipulating XML in a database. It also discusses PL/XSLT for XML processing and notes that PostgreSQL's XML processing and indexing capabilities are limited.

### Source excerpt

Continuing our series of PostgreSQL Data Types today we're going to introduce the PostgreSQL XML type. The SQL standard includes a SQL/XML which introduces the predefined data type XML together with constructors, several routines, functions, and XML-to-SQL data type mappings to support manipulation and storage of XML in a SQL database, as per the Wikipedia page.

## A tour of Postgres' Foreign Data Wrappers

DevFeed: [A tour of Postgres' Foreign Data Wrappers](<https://devfeed.tech/articles/a-tour-of-postgres-foreign-data-wrappers-41190.md>)

Original publisher: [Read original article](<https://www.craigkerstiens.com/2016/09/11/a-tour-of-fdws/>)

Author: Map

Published: 2016-09-11T20:55:56Z

Content type: tutorial

Language: en

Sources: [Craig Kerstiens](<https://devfeed.tech/sources/craig-kerstiens.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [etl](<https://devfeed.tech/topics/etl.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-database](<https://devfeed.tech/tags/sql-database.md>)

### AI overview

A practical overview of PostgreSQL foreign data wrappers (FDWs), which connect PostgreSQL to remote systems and let users query or join that data from PostgreSQL. The article explains setup, capabilities, tradeoffs versus ETL, and briefly discusses PostgreSQL and MySQL FDWs.

### Source excerpt

SQL can be a powerful language for reporting. Whether you're just exploring some data, or generating reports that show month over month revenue growth it's the lingua franca for data analysis. But, your data isn't always in a SQL database, even then if you're using Postgres you can still likely use SQL to analyze, query, even joing with that data. Foreign data wrappers have been around for years in Postgres, but are continuing to mature and be a great option for joining disparate systems. Overview of foreign data wrappers If you're unfamiliar, foreign data wrappers, or FDW, allow you to connect from within Postgres to a remote system. Then you can query them from directly within Postgres. While there is an official Postgres FDW that ships with Postgres itself, that allows you to connect from one Postgres DB to another, there's also a broad community of others. At the core of it Postgres provides certain APIs under the covers which each FDW extension can implement. This can include the ability to map SQL to whatever makes sense for a given system, push down various operators like where clauses, and as of Postgres 9.3 can even write data. To setup a FDW you first would install the extension, then provide the connection to the remote system, setup your schema/tables, and then you're off to the races-or well ready to query. If you've got more than 2-3 databases or systems in your infrastructure, you'll often benefit from FDWs as opposed to introducing a heavyweight ETL pipeline. Don't mistake FDWs as the most performant method for joining data, but they are often the developer time efficient means of joining these data sets. Let's look at just a few of the more popular and interesting ones. Postgres FDW The Postgres one is the easiest to get started with. First you'll just enable it with CREATE EXTENSION, then you'll setup your remote server: CREATE EXTENSION postgres_fdw; CREATE SERVER core_db FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'foo', dbname 'core_db', por