# Object-relational mapping

Object-relational mapping is a computing technique for mapping object-oriented program data to relational database tables and rows.

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

## Use Drizzle ORM with Appwrite Postgres

DevFeed: [Use Drizzle ORM with Appwrite Postgres](<https://devfeed.tech/articles/use-drizzle-orm-with-appwrite-postgres-16474.md>)

Original publisher: [Read original article](<https://appwrite.io/blog/post/drizzle-orm-appwrite-postgres>)

Author: Atharva Deosthale

Published: 2026-09-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [Appwrite Blog](<https://devfeed.tech/sources/appwrite-blog.md>)

Topics: [Appwrite](<https://devfeed.tech/topics/appwrite.md>), [Drizzle](<https://devfeed.tech/topics/drizzle.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [drizzle](<https://devfeed.tech/tags/drizzle.md>), [migration](<https://devfeed.tech/tags/migration.md>), [migrations](<https://devfeed.tech/tags/migrations.md>), [orm](<https://devfeed.tech/tags/orm.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [schema](<https://devfeed.tech/tags/schema.md>), [sql](<https://devfeed.tech/tags/sql.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

A tutorial showing how to connect Drizzle ORM to Appwrite Postgres, define tables and queries in TypeScript, generate and apply SQL migrations, seed data, and evolve a schema while preserving existing records.

### Source excerpt

Connect Drizzle ORM to Appwrite Postgres, query data with TypeScript, and apply SQL migrations as your schema changes.

## Use Prisma ORM with Appwrite Postgres

DevFeed: [Use Prisma ORM with Appwrite Postgres](<https://devfeed.tech/articles/use-prisma-orm-with-appwrite-postgres-16503.md>)

Original publisher: [Read original article](<https://appwrite.io/blog/post/prisma-orm-appwrite-postgres>)

Author: Atharva Deosthale

Published: 2026-09-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [Appwrite Blog](<https://devfeed.tech/sources/appwrite-blog.md>)

Topics: [Appwrite](<https://devfeed.tech/topics/appwrite.md>), [Prisma](<https://devfeed.tech/topics/prisma.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [migration](<https://devfeed.tech/topics/migration.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [migration](<https://devfeed.tech/tags/migration.md>), [migrations](<https://devfeed.tech/tags/migrations.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [prisma](<https://devfeed.tech/tags/prisma.md>), [schema](<https://devfeed.tech/tags/schema.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

A practical guide to using Prisma ORM with Appwrite Postgres in a TypeScript project. It covers creating the PostgreSQL database, configuring the connection and TLS settings, defining models, generating and applying migrations, generating Prisma Client, and connecting to the database through a driver adapter.

### Source excerpt

Model your data with Prisma ORM, generate a typed client, and test schema migrations against Appwrite Postgres.

## How ORM N+1 Queries Create Hidden Request Latency

DevFeed: [How ORM N+1 Queries Create Hidden Request Latency](<https://devfeed.tech/articles/your-orm-issued-400-queries-and-the-p99-looked-fine-until-it-didn-t-39588.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/36-orm-n-plus-one-queries-hidden-latency/>)

Author: hello@ankit-rana.com

Published: 2026-08-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [lazy loading](<https://devfeed.tech/topics/lazy-loading.md>), [Database](<https://devfeed.tech/topics/database.md>), [connection pool](<https://devfeed.tech/topics/connection-pool.md>)

Tags: [connection-pool](<https://devfeed.tech/tags/connection-pool.md>), [database](<https://devfeed.tech/tags/database.md>), [database-performance](<https://devfeed.tech/tags/database-performance.md>), [hibernate](<https://devfeed.tech/tags/hibernate.md>), [latency](<https://devfeed.tech/tags/latency.md>), [lazy-loading](<https://devfeed.tech/tags/lazy-loading.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [n-plus-one](<https://devfeed.tech/tags/n-plus-one.md>), [observability](<https://devfeed.tech/tags/observability.md>), [orm](<https://devfeed.tech/tags/orm.md>), [query](<https://devfeed.tech/tags/query.md>), [request](<https://devfeed.tech/tags/request.md>)

### AI overview

This article explains how ORM lazy loading can turn a loop over orders into an N+1 query pattern. Individual queries may remain fast and avoid slow-query alerts, while the accumulated network round trips increase request latency and hold connection-pool resources. It recommends monitoring queries per request and asserting query counts in tests.

### Source excerpt

N+1 queries hide from monitoring because no individual query is slow. Four hundred queries at 0.4ms each never appear in the slow query log, never move p99 query latency, and still cost the request 300ms because the expense is the round trip rather than the execution. The metric that catches it is queries per request, and the only durable fix is asserting on that count in tests, since the code that causes it looks like a field access rather than I/O.

## When Clean Architecture Overhead Is Justified in Larger Projects

DevFeed: [When Clean Architecture Overhead Is Justified in Larger Projects](<https://devfeed.tech/articles/clean-architecture-is-overhead-26177.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/clean-architecture-is-overhead>)

Author: Valentina Jemuović

Published: 2026-07-28T06:01:50Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [clean-architecture](<https://devfeed.tech/tags/clean-architecture.md>), [database](<https://devfeed.tech/tags/database.md>), [databases](<https://devfeed.tech/tags/databases.md>), [developer](<https://devfeed.tech/tags/developer.md>), [developers](<https://devfeed.tech/tags/developers.md>), [orm](<https://devfeed.tech/tags/orm.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

The article argues that Clean Architecture adds real overhead through extra interfaces, abstractions, indirection, and separate domain and ORM entities. It contends that this trade-off becomes worthwhile as midsize and enterprise projects grow, because decoupling business logic from infrastructure and database structures makes change easier.

### Source excerpt

Stop counting lines of code

## Learning a few things about running SQLite

DevFeed: [Learning a few things about running SQLite](<https://devfeed.tech/articles/learning-a-few-things-about-running-sqlite-21130.md>)

Original publisher: [Read original article](<https://jvns.ca/blog/2026/07/17/learning-about-running-sqlite/>)

Author: Julia Evans

Published: 2026-07-17T00:00:00Z

Content type: article

Language: en

Sources: [Julia Evans](<https://devfeed.tech/sources/julia-evans.md>)

Topics: [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Django](<https://devfeed.tech/topics/django.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [Statistics](<https://devfeed.tech/topics/statistics.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [django](<https://devfeed.tech/tags/django.md>), [orm](<https://devfeed.tech/tags/orm.md>), [search](<https://devfeed.tech/tags/search.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [statistics](<https://devfeed.tech/tags/statistics.md>)

### AI overview

A personal account of operating SQLite in production for a small Django website. The article describes how running ANALYZE dramatically improved an SQLite FTS5 query and discusses the difficulty of cleaning up large numbers of rows without blocking other database writers.

### Source excerpt

Hello! I've been working on a Django site recently, and I decided to use SQLite as the database. When I was getting started with using SQLite as database for a website I read a bunch of blog posts about how it is totally fine to use SQLite in production for a small site and I think it is totally fine, but what I did not fully appreciate is that SQLite is still a database, databases are complicated, and I do not know a lot about operating databases. So here are a couple of small things I've been learning about running SQLite. This is the 4th website I've used SQLite for, and I think this one is harder because with the power of the Django ORM I've been making the database do more work than I was previously without Django. I started by turning on WAL mode like all the blog posts said to do and hoping for the best. ANALYZE is apparently important Today I was running a query (using SQLite's FTS5 for full-text search) on a table with 4000 rows and it took 5 seconds. That seemed wrong to me: computers are fast! It turned out that what I needed to do was to run ANALYZE! Immediately the problem query went from taking 5 seconds to like 0.05 seconds (or some other number small enough that I didn't care to investigate further). I still don't know exactly what went wrong in the query plan, but my best guess is that it was some sort of accidentally quadratic thing. ANALYZE generates "statistics" (I guess about the number of rows in each table? and presumably other things?) so that the query planner can make better choices. Maybe one day I'll learn to read a query plan. cleaning up the database is tricky Occasionally I've run into situations where I accidentally put a bunch of rows in my database that I don't want to be there (for example completed tasks from django-tasks-db), and I want to clean them up. What's happened to me a few times in this case is: I run some kind of command to clean up the rows The command takes more than 5 seconds, since there are a lot of rows (though I

## Clean Architecture Mistake: ORM ≠ Domain

DevFeed: [Clean Architecture Mistake: ORM ≠ Domain](<https://devfeed.tech/articles/clean-architecture-mistake-orm-domain-26178.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/clean-architecture-mistake-orm-domain>)

Author: Valentina Jemuović

Published: 2026-07-09T06:02:30Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Object-relational mapping](<https://devfeed.tech/topics/orm.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [clean-architecture](<https://devfeed.tech/tags/clean-architecture.md>), [orm](<https://devfeed.tech/tags/orm.md>)

### AI overview

The article warns that ORM entities should not be confused with domain entities.

### Source excerpt

Do NOT confuse ORM entities with domain entities.

## OpenAPI, ORM, SVG and Lottie

DevFeed: [OpenAPI, ORM, SVG and Lottie](<https://devfeed.tech/articles/openapi-orm-svg-and-lottie-19231.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/build-time-codegen/>)

Author: Shai Almog

Published: 2026-06-01T00:00:00Z

Content type: release

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [JSON](<https://devfeed.tech/topics/json.md>), [XML](<https://devfeed.tech/topics/xml.md>), [SVG](<https://devfeed.tech/topics/svg.md>), [ASP.NET Core](<https://devfeed.tech/topics/asp-net-core.md>), [FastAPI](<https://devfeed.tech/topics/fastapi.md>), [Nest](<https://devfeed.tech/topics/nestjs.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [fastapi](<https://devfeed.tech/tags/fastapi.md>), [http](<https://devfeed.tech/tags/http.md>), [java](<https://devfeed.tech/tags/java.md>), [json](<https://devfeed.tech/tags/json.md>), [lottie](<https://devfeed.tech/tags/lottie.md>), [maven-plugin](<https://devfeed.tech/tags/maven-plugin.md>), [net](<https://devfeed.tech/tags/net.md>), [openapi](<https://devfeed.tech/tags/openapi.md>), [orm](<https://devfeed.tech/tags/orm.md>), [rest](<https://devfeed.tech/tags/rest.md>), [spring](<https://devfeed.tech/tags/spring.md>), [svg](<https://devfeed.tech/tags/svg.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

A Codename One release follow-up describes a shared build-time code generation pipeline for OpenAPI client generation, a SQLite ORM, JSON and XML mappers, SVG and Lottie transcoders, and a declarative router. The pipeline emits typed Java from annotations or declarative source files without reflection.

### Source excerpt

An OpenAPI client generator, a JPA-shaped SQLite ORM, JAXB-shaped JSON / XML mappers, build-time SVG / Lottie transcoders, and a declarative router with deep links. All on the same build-time codegen pipeline.

## NetBox Config Templates Tip: Query Objects Efficiently with .filter()

DevFeed: [NetBox Config Templates Tip: Query Objects Efficiently with .filter()](<https://devfeed.tech/articles/netbox-config-templates-tip-query-objects-efficiently-with-filter-30858.md>)

Original publisher: [Read original article](<https://www.packetcoders.io/netbox-config-templates-tip-query-objects-efficiently-with-filter/>)

Author: Rick Donato

Published: 2026-03-10T08:00:07Z

Content type: tutorial

Language: en

Sources: [Packet Coders - Learn Network Automation](<https://devfeed.tech/sources/packet-coders-learn-network-automation.md>)

Topics: [NetBox](<https://devfeed.tech/topics/netbox.md>), [Django](<https://devfeed.tech/topics/django.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>)

Tags: [config](<https://devfeed.tech/tags/config.md>), [django](<https://devfeed.tech/tags/django.md>), [filter](<https://devfeed.tech/tags/filter.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [netbox](<https://devfeed.tech/tags/netbox.md>), [orm](<https://devfeed.tech/tags/orm.md>), [query](<https://devfeed.tech/tags/query.md>), [templates](<https://devfeed.tech/tags/templates.md>), [tips](<https://devfeed.tech/tags/tips.md>)

### AI overview

A short tutorial showing how to use .filter() in NetBox Config Templates to query objects during lookups and conditional logic through the Django ORM QuerySet interface.

### Source excerpt

Use .filter() in Config Templates to query objects during lookups and conditional logic. This exposes the Django ORM QuerySet filter directly in your templates. Here's an example: {% for iface in device.interfaces.filter(enabled=True, name__startswith="ge-") %} interface {{ iface.name }} {% endfor %}

## Some notes on starting to use Django

DevFeed: [Some notes on starting to use Django](<https://devfeed.tech/articles/some-notes-on-starting-to-use-django-21124.md>)

Original publisher: [Read original article](<https://jvns.ca/blog/2026/01/27/some-notes-on-starting-to-use-django/>)

Author: Julia Evans

Published: 2026-01-27T00:00:00Z

Content type: article

Language: en

Sources: [Julia Evans](<https://devfeed.tech/sources/julia-evans.md>)

Topics: [Django](<https://devfeed.tech/topics/django.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Website](<https://devfeed.tech/topics/website.md>), [Database](<https://devfeed.tech/topics/database.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Laravel](<https://devfeed.tech/topics/laravel.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [django](<https://devfeed.tech/tags/django.md>), [framework](<https://devfeed.tech/tags/framework.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [orm](<https://devfeed.tech/tags/orm.md>), [rails](<https://devfeed.tech/tags/rails.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

A developer shares notes from starting to use Django after previously trying Rails. They find Django's explicit project structure easier to return to after long breaks, appreciate its built-in and customizable admin interface, and are enjoying its ORM for expressing database relationships and queries with less code.

### Source excerpt

Hello! One of my favourite things is starting to learn an Old Boring Technology that I've never tried before but that has been around for 20+ years. It feels really good when every problem I'm ever going to have has been solved already 1000 times and I can just get stuff done easily. I've thought it would be cool to learn a popular web framework like Rails or Django or Laravel for a long time, but I'd never really managed to make it happen. But I started learning Django to make a website a few months back, I've been liking it so far, and here are a few quick notes! less magic than Rails I spent some time trying to learn Rails in 2020, and while it was cool and I really wanted to like Rails (the Ruby community is great!), I found that if I left my Rails project alone for months, when I came back to it it was hard for me to remember how to get anything done because (for example) if it says resources :topics in your routes.rb, on its own that doesn't tell you where the topics routes are configured, you need to remember or look up the convention. Being able to abandon a project for months or years and then come back to it is really important to me (that's how all my projects work!), and Django feels easier to me because things are more explicit. In my small Django project it feels like I just have 5 main files (other than the settings files): urls.py, models.py, views.py, admin.py, and tests.py, and if I want to know where something else is (like an HTML template) is then it's usually explicitly referenced from one of those files. a built-in admin For this project I wanted to have an admin interface to manually edit or view some of the data in the database. Django has a really nice built-in admin interface, and I can customize it with just a little bit of code. For example, here's part of one of my admin classes, which sets up which fields to display in the "list" view, which field to search on, and how to order them by default. @admin.register(Zine) class ZineAdmin(adm

## The Hidden Cost of Convenience: Rethinking Old ORM Patterns for Scale

DevFeed: [The Hidden Cost of Convenience: Rethinking Old ORM Patterns for Scale](<https://devfeed.tech/articles/the-hidden-cost-of-convenience-rethinking-old-orm-patterns-for-scale-20459.md>)

Original publisher: [Read original article](<https://eng.wealthfront.com/2025/12/08/the-hidden-cost-of-convenience-rethinking-old-orm-patterns-for-scale/>)

Author: Andrew Houts

Published: 2025-12-08T22:06:50Z

Content type: article

Language: en

Sources: [Wealthfront](<https://devfeed.tech/sources/wealthfront.md>)

Topics: [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Code](<https://devfeed.tech/topics/code.md>), [data](<https://devfeed.tech/topics/data.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>), [Database](<https://devfeed.tech/topics/database.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [code](<https://devfeed.tech/tags/code.md>), [data](<https://devfeed.tech/tags/data.md>), [database](<https://devfeed.tech/tags/database.md>), [flame-graph](<https://devfeed.tech/tags/flame-graph.md>), [orm](<https://devfeed.tech/tags/orm.md>), [parallelism](<https://devfeed.tech/tags/parallelism.md>), [performance](<https://devfeed.tech/tags/performance.md>), [profiling](<https://devfeed.tech/tags/profiling.md>), [sql](<https://devfeed.tech/tags/sql.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [wealthfront-engineering](<https://devfeed.tech/tags/wealthfront-engineering.md>)

### AI overview

Wealthfront examines performance problems in an aging portfolio balance calculation system whose overnight batch processing scaled poorly as client growth and assets under management increased. The article describes profiling the job with command-line and sampling-profiler tools, using collected data and flame graphs to investigate where runtime was spent.

### Source excerpt

Ever been here before? Stuck with a job that needs to be continually revisited because its performance gets worse with every passing day, and each attempt at improving said performance yields diminishing returns? This is the situation we found ourselves in with the portfolio balance calculation system--the code responsible for aggregating data from multiple sources... Read more

## Neon Launchpad: A Tool For Instant Postgres, No Login Needed

DevFeed: [Neon Launchpad: A Tool For Instant Postgres, No Login Needed](<https://devfeed.tech/articles/neon-launchpad-a-tool-for-instant-postgres-no-login-needed-5667.md>)

Original publisher: [Read original article](<https://neon.com/blog/neon-launchpad>)

Author: Atila Fassina

Published: 2025-06-06T17:57:34Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Provisioning](<https://devfeed.tech/topics/provisioning.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [building](<https://devfeed.tech/tags/building.md>), [cli](<https://devfeed.tech/tags/cli.md>), [company](<https://devfeed.tech/tags/company.md>), [developer](<https://devfeed.tech/tags/developer.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [orm](<https://devfeed.tech/tags/orm.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [product](<https://devfeed.tech/tags/product.md>), [provisioning](<https://devfeed.tech/tags/provisioning.md>), [tool](<https://devfeed.tech/tags/tool.md>)

### AI overview

Neon Launchpad provides real hosted Postgres databases in seconds without requiring setup, login, or configuration. It is designed for developer tools, templates, platforms, open-source projects, scaffolding tools, and AI agents that need on-demand databases. Users receive a connection string compatible with Postgres tools, frameworks, ORMs, and SQL clients; databases last 72 hours by default and can later be claimed through a Neon account.

### Source excerpt

If you're building a dev tool, template, or platform where users need a database, you're probably familiar with the pain: you can either ask them to bring their own, or build a full provisioning flow yourself. Beyond just provisioning it, your users will need to set up their sche...

## Migrating From PostgreSQL to MongoDB in a .NET EF Core Application

DevFeed: [Migrating From PostgreSQL to MongoDB in a .NET EF Core Application](<https://devfeed.tech/articles/migrating-from-postgresql-to-mongodb-in-a-net-ef-core-application-21837.md>)

Original publisher: [Read original article](<https://www.thepolyglotdeveloper.com/blog/2025/05/migrating-from-postgresql-to-mongodb-in-a-net-ef-core-application/>)

Author: Luce Carter

Published: 2025-05-01T12:00:00Z

Content type: tutorial

Language: en

Sources: [Nic Raboy](<https://devfeed.tech/sources/nic-raboy.md>)

Topics: [MongoDB](<https://devfeed.tech/topics/mongodb.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [.NET](<https://devfeed.tech/topics/net.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [azure](<https://devfeed.tech/tags/azure.md>), [dotnet](<https://devfeed.tech/tags/dotnet.md>), [efcore](<https://devfeed.tech/tags/efcore.md>), [genai](<https://devfeed.tech/tags/genai.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mongodb](<https://devfeed.tech/tags/mongodb.md>), [net](<https://devfeed.tech/tags/net.md>), [orm](<https://devfeed.tech/tags/orm.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [relational-databases](<https://devfeed.tech/tags/relational-databases.md>)

### AI overview

This tutorial explains how to migrate a .NET application using PostgreSQL and Entity Framework Core to MongoDB with the MongoDB EF Core Provider. It also describes using Relational Migrator to transform relational data and model it for MongoDB collections.

### Source excerpt

For many reasons--including scalability, flexibility, and modernization--more and more development teams are looking to migrate away from PostgreSQL to MongoDB. In the past, these teams might have been ... The post Migrating From PostgreSQL to MongoDB in a .NET EF Core Application appeared first on DEV.

## Scaling Nextdoor's Datastores: Part 3

DevFeed: [Scaling Nextdoor's Datastores: Part 3](<https://devfeed.tech/articles/scaling-nextdoor-s-datastores-part-3-20342.md>)

Original publisher: [Read original article](<https://engblog.nextdoor.com/scaling-nextdoors-datastores-part-3-e9b4dd8a9393?source=rss----5e54f11cdfdf---4>)

Author: Ronak Shah

Published: 2025-03-19T15:08:43Z

Content type: article

Language: en

Sources: [Nextdoor](<https://devfeed.tech/sources/nextdoor.md>)

Topics: [Caching](<https://devfeed.tech/topics/caching.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [schema-evolution](<https://devfeed.tech/topics/schema-evolution.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Django](<https://devfeed.tech/topics/django.md>), [Python](<https://devfeed.tech/topics/python.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [valkey](<https://devfeed.tech/topics/valkey.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [cache](<https://devfeed.tech/tags/cache.md>), [cache-invalidation](<https://devfeed.tech/tags/cache-invalidation.md>), [caching](<https://devfeed.tech/tags/caching.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [database](<https://devfeed.tech/tags/database.md>), [django](<https://devfeed.tech/tags/django.md>), [lua](<https://devfeed.tech/tags/lua.md>), [python](<https://devfeed.tech/tags/python.md>), [redis](<https://devfeed.tech/tags/redis.md>), [schema](<https://devfeed.tech/tags/schema.md>), [serialization-format](<https://devfeed.tech/tags/serialization-format.md>), [thundering-herd](<https://devfeed.tech/tags/thundering-herd.md>), [valkey](<https://devfeed.tech/tags/valkey.md>)

### AI overview

Part 3 of Nextdoor's datastore-scaling series explains how applications serialize database objects for Redis or Valkey look-aside caches. It describes compatibility problems caused by runtime, package, and schema changes, including cache misses and thundering-herd effects during migrations.

### Source excerpt

In this part of the Scaling Nextdoor's Datastores blog series, we'll explore how the Core-Services team at Nextdoor serializes database data for caching while ensuring forward and backward compatibility between the cache and application code. In part 1 of this series we discussed how ORMs, object-relational mapping frameworks, help abstract away database specific schemas and queries from application code. Developers simply utilize objects in their application's language to access database data. Here's a simple example of using Python's Django ORM to define a model: from django.db import models class Users(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) The associated SQL create table would look like: CREATE TABLE users ( "id" bigint NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL ); Developers would then access database data like this: user_id = 123 user = User.objects.get(id=user_id) print(user.first_name)Object Byte Serialization for Caching An issue arises when adding a look-aside cache such as Redis/Valkey to an application: How do you store what you got from the database in the cache? A common solution to caching complex objects, such as those from ORMs, is object byte serialization. This process converts language objects into bytes before storing them in the cache. When reading from the cache the process is done in reverse where the byte data is turned into language objects. For instance in Python this is often done with the pickle package. The interaction between the application, database, and the cache looks like this: Look-Aside Cacheimport pickle # Try getting from cache ('None' if not in cache) user_bytes = cache.get("user_123") if user_bytes is not None: # Read bytes using pickle user = pickle.loads(user_bytes) else: # Fetch from database user = User.objects.get(id=123) # Convert to bytes user_bytes = pickle.dumps(user) # Sto

## Scaling Nextdoor's Datastores: Part 2

DevFeed: [Scaling Nextdoor's Datastores: Part 2](<https://devfeed.tech/articles/scaling-nextdoor-s-datastores-part-2-20341.md>)

Original publisher: [Read original article](<https://engblog.nextdoor.com/scaling-nextdoors-datastores-part-2-513922e4b4b1?source=rss----5e54f11cdfdf---4>)

Author: Tushar Singla

Published: 2025-03-19T15:08:32Z

Content type: article

Language: en

Sources: [Nextdoor](<https://devfeed.tech/sources/nextdoor.md>)

Topics: [Database](<https://devfeed.tech/topics/database.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [Django](<https://devfeed.tech/topics/django.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [race-condition](<https://devfeed.tech/topics/race-condition.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>)

Tags: [consistency](<https://devfeed.tech/tags/consistency.md>), [database](<https://devfeed.tech/tags/database.md>), [database-scalability](<https://devfeed.tech/tags/database-scalability.md>), [django](<https://devfeed.tech/tags/django.md>), [orm](<https://devfeed.tech/tags/orm.md>), [race-condition](<https://devfeed.tech/tags/race-condition.md>), [rdbms](<https://devfeed.tech/tags/rdbms.md>), [read-replica](<https://devfeed.tech/tags/read-replica.md>), [replication](<https://devfeed.tech/tags/replication.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

The second installment of Nextdoor's datastore-scaling series examines the consistency problems caused by database read replicas. It describes how routing decisions became obscured by Django ORM abstractions, leading to read-after-write races, and explains how transactions were used as a workaround with negative effects on database load.

### Source excerpt

In the second installment of Nextdoor's "Scaling Nextdoor's Datastores" blog series, the Core-Services team discusses challenges faced after implementing database read replicas. Adding read replicas to an existing database is a very common pattern as applications or products evolve to handle increased demand. Typically, the implementation details are hand waved and it's assumed that this strategy will work. However, that is rarely the case, and we'll dive into some more of the intricacies around the implementation. Initial Attempt When replicas were first introduced in the Nextdoor stack, we gave the product engineers latitude to choose when they wanted to have their query routed to a read replica or to the primary. This was done by leveraging the existing routing mechanism in our ORM, Django. This seemed like the right idea at the time because the product engineers had the most context around consistency requirements within their changes and load characteristics of their product feature. Therefore, they would have the best ability to judge which node to send their query to. However, as our business logic evolved and became more feature-rich, product engineers began to add abstraction layers to help abstract complex operations away from business logic. In this design evolution there is a high frequency read, followed by a low frequency conditional write, followed by a read. The read performed after the write should be routed to the primary, but that may get buried in abstractions and this requirement regressed. The explicit routing decisions engineers made became buried and subsequently created a serious problem for users of these abstractions. If one abstraction method was performing a write and another a read, they could not safely be used together due to read-after-write consistency issues. Due to replication lag between the primary and replica databases, a race condition arises when the application attempts to read data from a replica after performing a write. W

## Announcing Laravel Support and PHP PDO Interface

DevFeed: [Announcing Laravel Support and PHP PDO Interface](<https://devfeed.tech/articles/announcing-laravel-support-and-php-pdo-interface-5889.md>)

Original publisher: [Read original article](<https://turso.tech/blog/announcing-laravel-support>)

Author: Levy Albuquerque

Published: 2025-01-09T00:00:00Z

Content type: release

Language: en

Sources: [Turso Blog](<https://devfeed.tech/sources/turso-blog.md>)

Topics: [Laravel](<https://devfeed.tech/topics/laravel.md>), [Turso](<https://devfeed.tech/topics/turso.md>), [PHP](<https://devfeed.tech/topics/php.md>), [libSQL](<https://devfeed.tech/topics/libsql.md>), [PHP Data Objects (PDO)](<https://devfeed.tech/topics/pdo.md>), [Composer](<https://devfeed.tech/topics/composer.md>), [Eloquent ORM](<https://devfeed.tech/topics/eloquent.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Embeddings](<https://devfeed.tech/topics/embeddings.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [embeddings](<https://devfeed.tech/tags/embeddings.md>), [features](<https://devfeed.tech/tags/features.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [libsql](<https://devfeed.tech/tags/libsql.md>), [orm](<https://devfeed.tech/tags/orm.md>), [php](<https://devfeed.tech/tags/php.md>), [recommendation-system](<https://devfeed.tech/tags/recommendation-system.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [sdks](<https://devfeed.tech/tags/sdks.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [turso](<https://devfeed.tech/tags/turso.md>)

### AI overview

Turso announces official Laravel support through the open-source libsql-laravel adapter and PHP PDO interface. The technical preview integrates with Laravel's database layer, supports local SQLite and Turso configurations, and removes the need for custom PHP extensions. The article also demonstrates migrations, Eloquent models, vector embeddings, and similarity searches for a movie recommendation system.

### Source excerpt

Use Turso natively with Laravel through our new 'libsql-laravel' adapter and PHP PDO interface. No custom PHP extensions, just a database URL and auth token.

## Announcing Inertia 2.0: Redefining Frontend Development for Laravel

DevFeed: [Announcing Inertia 2.0: Redefining Frontend Development for Laravel](<https://devfeed.tech/articles/announcing-inertia-2-0-redefining-frontend-development-for-laravel-3579.md>)

Original publisher: [Read original article](<https://laravel.com/blog/announcing-inertia-20-redefining-frontend-development-for-laravel>)

Author: Joe Tannenbaum

Published: 2024-12-13T19:28:00Z

Content type: release

Language: en

Sources: [Laravel Blog](<https://devfeed.tech/sources/laravel-blog.md>)

Topics: [Laravel](<https://devfeed.tech/topics/laravel.md>), [frontend development](<https://devfeed.tech/topics/frontend-development.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [Single-page application (SPA)](<https://devfeed.tech/topics/spa.md>), [React](<https://devfeed.tech/topics/react.md>), [Svelte](<https://devfeed.tech/topics/svelte.md>), [Vue.js](<https://devfeed.tech/topics/vue.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>), [Core Web Vitals](<https://devfeed.tech/topics/core-web-vitals.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [core-web-vitals](<https://devfeed.tech/tags/core-web-vitals.md>), [deferred](<https://devfeed.tech/tags/deferred.md>), [frontend-development](<https://devfeed.tech/tags/frontend-development.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [lazy-loading](<https://devfeed.tech/tags/lazy-loading.md>), [orm](<https://devfeed.tech/tags/orm.md>), [performance](<https://devfeed.tech/tags/performance.md>), [react](<https://devfeed.tech/tags/react.md>), [release](<https://devfeed.tech/tags/release.md>), [routing](<https://devfeed.tech/tags/routing.md>), [svelte](<https://devfeed.tech/tags/svelte.md>), [vue](<https://devfeed.tech/tags/vue.md>)

### AI overview

Inertia 2.0 is a stable release that adds asynchronous requests, deferred props, prefetching, and polling to Laravel frontend development. These features support more responsive applications while avoiding the complexity of maintaining a separate API.

### Source excerpt

Inertia 2.0 brings powerful new features to Laravel frontend development including async requests, deferred props, prefetching, and polling. Learn how these improvements help you build faster, more responsive applications without the complexity of maintaining a separate API.

## Is Postgres RLS for Everything and Everyone?

DevFeed: [Is Postgres RLS for Everything and Everyone?](<https://devfeed.tech/articles/is-postgres-rls-for-everything-and-everyone-5472.md>)

Original publisher: [Read original article](<https://neon.com/blog/is-postgres-rls-for-everything-and-everyone>)

Author: David Gomes

Published: 2024-11-15T17:32:58Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Authorization](<https://devfeed.tech/topics/authorization.md>), [Multitenancy](<https://devfeed.tech/topics/multitenancy.md>), [Per-user Database](<https://devfeed.tech/topics/per-user-database.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Security](<https://devfeed.tech/topics/security.md>), [Drizzle](<https://devfeed.tech/topics/drizzle.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>)

Tags: [authorization](<https://devfeed.tech/tags/authorization.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [database](<https://devfeed.tech/tags/database.md>), [drizzle](<https://devfeed.tech/tags/drizzle.md>), [multitenancy](<https://devfeed.tech/tags/multitenancy.md>), [orm](<https://devfeed.tech/tags/orm.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [security](<https://devfeed.tech/tags/security.md>), [sql](<https://devfeed.tech/tags/sql.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article examines whether PostgreSQL Row-Level Security (RLS) should express an application's entire authorization model. It recommends a project-per-user pattern for multitenancy when possible, while describing RLS as a way to prevent cross-tenant access in a shared database. It discusses RLS's dense syntax, recursion errors, policy behavior, security settings, optimizer considerations, and testing difficulties, and notes that Drizzle ORM can simplify some TypeScript usage.

### Source excerpt

In Neon, we recommend using a project-per-user pattern for multitenancy whenever possible. If this doesn't work for you and you're placing all your tenants within a single Postgres database, you should at least use RLS to prevent cross-tenant access--but expressing your entire aut...

## Modelling Authorization for a Social Network with Postgres RLS and Drizzle ORM

DevFeed: [Modelling Authorization for a Social Network with Postgres RLS and Drizzle ORM](<https://devfeed.tech/articles/modelling-authorization-for-a-social-network-with-postgres-rls-and-drizzle-orm-5575.md>)

Original publisher: [Read original article](<https://neon.com/blog/modelling-authorization-for-a-social-network-with-postgres-rls-and-drizzle-orm>)

Author: David Gomes

Published: 2024-11-11T19:21:18Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Authorization](<https://devfeed.tech/topics/authorization.md>), [Drizzle](<https://devfeed.tech/topics/drizzle.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Security](<https://devfeed.tech/topics/security.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [code](<https://devfeed.tech/tags/code.md>), [drizzle](<https://devfeed.tech/tags/drizzle.md>), [github](<https://devfeed.tech/tags/github.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [orm](<https://devfeed.tech/tags/orm.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [product](<https://devfeed.tech/tags/product.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

This article models authorization for a Twitter-inspired social network using Postgres Row-Level Security and Drizzle ORM. It explains access policies for users, profiles, posts, comments, and private chats, along with authentication through the pg_session_jwt Postgres extension.

### Source excerpt

Postgres's Row-Level Security feature allows us to set up the access rules for our data. In other words, it can be used to declare the authorization model for an application or a service. As I've been trying to better understand RLS and its pros and cons, I decided to work on an...

## Looking at How Replit Agent Handles Databases

DevFeed: [Looking at How Replit Agent Handles Databases](<https://devfeed.tech/articles/looking-at-how-replit-agent-handles-databases-5516.md>)

Original publisher: [Read original article](<https://neon.com/blog/looking-at-how-replit-agent-handles-databases>)

Author: Sam Harrison

Published: 2024-11-08T17:59:23Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Repl.it](<https://devfeed.tech/topics/replit.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Database Migration](<https://devfeed.tech/topics/database-migration.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [SQLAlchemy](<https://devfeed.tech/topics/sqlalchemy.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Flask](<https://devfeed.tech/topics/flask.md>), [Python](<https://devfeed.tech/topics/python.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [API](<https://devfeed.tech/topics/api.md>), [Front end](<https://devfeed.tech/topics/frontend.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [applications](<https://devfeed.tech/tags/applications.md>), [code](<https://devfeed.tech/tags/code.md>), [database-migration](<https://devfeed.tech/tags/database-migration.md>), [databases](<https://devfeed.tech/tags/databases.md>), [development](<https://devfeed.tech/tags/development.md>), [flask](<https://devfeed.tech/tags/flask.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [orm](<https://devfeed.tech/tags/orm.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [product](<https://devfeed.tech/tags/product.md>), [python](<https://devfeed.tech/tags/python.md>), [sqlalchemy](<https://devfeed.tech/tags/sqlalchemy.md>), [web](<https://devfeed.tech/tags/web.md>), [web-applications](<https://devfeed.tech/tags/web-applications.md>)

### AI overview

This article examines how Replit Agent uses natural-language prompts and AI to build and evolve a full-stack TODO application. It focuses on coordinating Flask, SQLAlchemy, Alembic migrations, and a managed Neon PostgreSQL database while updating the API, schema, and frontend together.

### Source excerpt

Replit Agent is a powerful tool within the Replit development environment that allows you to offload coding tasks using natural language and AI. By interacting with the Replit Agent, you can generate code, create applications, and modify existing features simply by asking for wha...

## How Drizzle Leverages Turso for Its Products and Services

DevFeed: [How Drizzle Leverages Turso for Its Products and Services](<https://devfeed.tech/articles/how-drizzle-leverages-turso-for-its-products-and-services-5960.md>)

Original publisher: [Read original article](<https://turso.tech/blog/how-drizzle-leverages-turso-for-its-products-and-services>)

Author: Aleksandr Blokh

Published: 2024-10-17T00:00:00Z

Content type: article

Language: en

Sources: [Turso Blog](<https://devfeed.tech/sources/turso-blog.md>)

Topics: [Drizzle](<https://devfeed.tech/topics/drizzle.md>), [Turso](<https://devfeed.tech/topics/turso.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Multitenancy](<https://devfeed.tech/topics/multitenancy.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [Latency](<https://devfeed.tech/topics/latency.md>)

Tags: [drizzle](<https://devfeed.tech/tags/drizzle.md>), [latency](<https://devfeed.tech/tags/latency.md>), [multitenancy](<https://devfeed.tech/tags/multitenancy.md>), [orm](<https://devfeed.tech/tags/orm.md>), [performance](<https://devfeed.tech/tags/performance.md>), [replication](<https://devfeed.tech/tags/replication.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [turso](<https://devfeed.tech/tags/turso.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

Drizzle explains how it uses Turso in production for data-centric applications, including Drizzle Studio themes, web analytics, an internal analytical back office, and a game. The article highlights Turso's SQLite foundation, schema capabilities, vector support, transparent pricing, replication, recovery, multi-region support, and scalability.

### Source excerpt

Drizzle ORM is a longtime user of Turso to power various products and services it offers. Here's how they use it.

## Introducing the Drizzle Session Storage Adapter for Shopify App Developers

DevFeed: [Introducing the Drizzle Session Storage Adapter for Shopify App Developers](<https://devfeed.tech/articles/introducing-the-drizzle-session-storage-adapter-for-shopify-app-developers-5986.md>)

Original publisher: [Read original article](<https://turso.tech/blog/introducing-the-drizzle-session-storage-adapter-for-shopify-app-developers>)

Author: Jamie Barton

Published: 2024-04-03T00:00:00Z

Content type: article

Language: en

Sources: [Turso Blog](<https://devfeed.tech/sources/turso-blog.md>)

Topics: [Drizzle](<https://devfeed.tech/topics/drizzle.md>), [Shopify](<https://devfeed.tech/topics/shopify.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Turso](<https://devfeed.tech/topics/turso.md>), [libSQL](<https://devfeed.tech/topics/libsql.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>)

Tags: [drizzle](<https://devfeed.tech/tags/drizzle.md>), [github](<https://devfeed.tech/tags/github.md>), [libsql](<https://devfeed.tech/tags/libsql.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [orm](<https://devfeed.tech/tags/orm.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [turso](<https://devfeed.tech/tags/turso.md>)

### AI overview

Turso and Drizzle collaborated on a native Shopify App Session Storage Adapter for SQLite. The adapter lets Shopify app developers use Drizzle to define session-storage schemas and store session data in SQLite, with a libSQL client compatible with Turso. The article also notes Drizzle support for MySQL and Postgres and directs readers to installation guidance and community support.

### Source excerpt

More and more developers are using Turso to build Shopify Apps. We noticed that developers using Turso and Drizzle ORM to build Shopify Apps were configuring "session storage" using workarounds and sometimes, alternate ORMs because there was no native adapter for Drizzle and Shopify. Turso are huge fans of Drizzle, so it made sense to collaborate with them to create a new Shopify App Session Storage Adapter for SQLite.

## How we built a custom permissions DSL at Figma

DevFeed: [How we built a custom permissions DSL at Figma](<https://devfeed.tech/articles/how-we-built-a-custom-permissions-dsl-at-figma-9813.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/how-we-rolled-out-our-own-permissions-dsl-at-figma/>)

Author: Jorge Silva

Published: 2024-03-13T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [Authorization](<https://devfeed.tech/topics/authorization.md>), [Figma](<https://devfeed.tech/topics/figma.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [developer](<https://devfeed.tech/tags/developer.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [orm](<https://devfeed.tech/tags/orm.md>), [performance](<https://devfeed.tech/tags/performance.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

Figma describes how it replaced a complex permissions system with a custom permissions domain-specific language, a cross-platform logic engine, and migrated rules. The redesign addressed bugs and project delays while improving performance, accuracy, and developer ergonomics. The article also explains how permissions govern file sharing, roles, links, access levels, passwords, and organizational constraints within Figma's Ruby backend.

### Source excerpt

When our permissions system came apart at the seams, everything came to a halt. This is the story of how we fixed it while improving performance, accuracy, and developer ergonomics.

## Better Postgres with Prisma Experience

DevFeed: [Better Postgres with Prisma Experience](<https://devfeed.tech/articles/better-postgres-with-prisma-experience-5028.md>)

Original publisher: [Read original article](<https://neon.com/blog/better-postgres-with-prisma-experience>)

Author: Raouf Chebri

Published: 2024-03-07T14:17:20Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Prisma](<https://devfeed.tech/topics/prisma.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Serverless](<https://devfeed.tech/topics/serverless.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [AWS Lambda](<https://devfeed.tech/topics/aws-lambda.md>), [Vercel](<https://devfeed.tech/topics/vercel.md>)

Tags: [aws-lambda](<https://devfeed.tech/tags/aws-lambda.md>), [backend](<https://devfeed.tech/tags/backend.md>), [community](<https://devfeed.tech/tags/community.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [migration](<https://devfeed.tech/tags/migration.md>), [orm](<https://devfeed.tech/tags/orm.md>), [prisma](<https://devfeed.tech/tags/prisma.md>), [process](<https://devfeed.tech/tags/process.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [vercel](<https://devfeed.tech/tags/vercel.md>)

### AI overview

Neon describes improvements that make Postgres work more seamlessly with Prisma ORM. The changes support schema migrations through pooled connections, allow Neon's default connection string to be used for scaling serverless applications, remove the need for multiple database URLs and a query parameter, and add prepared-statement support across Neon, PgBouncer, and Prisma.

### Source excerpt

We're Neon. We're building Postgres that helps you confidently ship reliable and scalable apps. We made Postgres on Neon work seamlessly with Prisma. This article explains how we did it. We love Prisma, and so do developers. Prisma ORM makes it easy to perform schema migrations a...

## When to choose an ORM for your Database

DevFeed: [When to choose an ORM for your Database](<https://devfeed.tech/articles/when-to-choose-an-orm-for-your-database-6109.md>)

Original publisher: [Read original article](<https://turso.tech/blog/when-to-choose-an-orm-for-your-database-11a05b42>)

Author: Jamie Barton

Published: 2023-12-06T00:00:00Z

Content type: article

Language: en

Sources: [Turso Blog](<https://devfeed.tech/sources/turso-blog.md>)

Topics: [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [developer-experience](<https://devfeed.tech/tags/developer-experience.md>), [orm](<https://devfeed.tech/tags/orm.md>), [programming](<https://devfeed.tech/tags/programming.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

The article explains when to choose an object-relational mapper for database work. It contrasts ORM-based development, which simplifies database interactions and can provide type safety, with raw SQL, which offers greater control and efficiency for performance-critical or smaller projects. It also describes how ORMs map application objects to relational data, generate code for common operations, and support schemas, relationships, constraints, and migrations.

### Source excerpt

Choosing an ORM for your project can be particularly advantageous in several scenarios, but could it be more hassle than it's worth?

[Next page](<https://devfeed.tech/topics/orm.md?cursor=WyIyMDIzLTEyLTA2VDAwOjAwOjAwKzAwOjAwIiwgImYxOGZhODUxLWExOGYtNDhjMi04ZDcxLWMyYzdjNDg3NDEwZSJd>)