Search code examples
javascripttypescriptpostgresqlormdrizzle

Which Database JavaScript Client that works alongside Drizzle ORM is better for pooling, pg, postgres or node-postgres?


I'm working on a JavaScript/TypeScript backend project using drizzle and PostgreSQL where I came across pooling for the first time. I found there are several ways to integrate pooling with drizzle ORM but they each rely on different libraries.

There is the pg/node-postgres method which goes like this:

import { drizzle } from 'drizzle-orm/node-postgres';
import { Pool } from 'pg';

const pool = new Pool({
  connectionString: process.env.DATABASE_URL as string,
    max: 10
})

export const db = drizzle(pool, {
  schema: schema,
  logger: true,
});

And the Postgres.js version which goes like this:

import postgres from 'postgres';
import { drizzle } from 'drizzle-orm/postgres-js';

const pool = postgres(process.env.DATABASE_URL as string, { max: 10 });
export const db = drizzle(pool, {
  schema: schema,
  logger: true,
});

Is there a difference in performance between these two methods? If so, which one is the better option?

Note the project uses TypeScript


Solution

  • I found this benchmark on github: https://github.com/porsager/postgres-benchmarks?tab=readme-ov-file

    It shows that postgres-js is the fastest postgres driver, but take it with a grain of salt, because its 4 years old.

    benchmark results