Kysely orm 잠깐적용 후기

less than 1 minute read

prisma 로딩시에 오류나는거 짜증나서 다른걸로 바꾸면서 몇개 적용 및 검토 해 보면서 든 생각

  • prisma 35.5k
  • kysely 8.2k
  • sequalize 28.7k
  • typeorm 32.7k
  • drizzle 15.9k

비슷한걸 왜 자꾸 만드는걸까

drizzle은 뭔가랑 합쳐졌다는 것 같았다. typeorm과 sequalize도 사용법만 보면 거의 유사해보이는데 왜 두개가 따로 있는걸까 node계열에 디비 컨트롤 라이브러리가 굉장히 많은데 다 비슷비슷하고 에러도 비슷비슷하게 나고 제대로 된게 안 보인다.

prisma는 조금 나은듯..?

prisma

조금 낫긴 한데 prisma generate, prisma db push 할 때 오류가 많이 난다. 직접 경험한건 아니었지만 성능이슈로 얘기가 나오긴 한든데.. 개선되는 중인 것 같다.

단점이라고 생각되는건… schema.prisma파일이 너무 거대해진다는 점… 분리가 되야 할 것 같은데

https://github.com/akirarika/code-outline

커뮤니티의 커뮤니티 라이브러리가 나오긴 했는데… prisma 본체에서는 언제 추가되려나

drizzle

reddit에서 심각하게 욕을 먹던데… 버그도 많고 수정도 안되고 인플루언서 통해서 홍보만 한다고 홈페이지 인플루언서들 반응이 … Alt text 장난인 줄 알았는데 진짜인 것 같다.

kysely 쿼리 빌더와 string

쿼리 빌더에서 테이블명, 컬럼명을 string으로 쓴다면… prisma에서 로우쿼리를 쓰는게 낫지 않나? 제 역할을 못 하는 것 같아서 적용하다가 빼버렸다.

import { Kysely, sql } from 'kysely'

export async function up(db: Kysely<any>): Promise<void> {
  await db.schema
    .createTable('person')
    .addColumn('id', 'serial', (col) => col.primaryKey())
    .addColumn('first_name', 'varchar', (col) => col.notNull())
    .addColumn('last_name', 'varchar')
    .addColumn('gender', 'varchar(50)', (col) => col.notNull())
    .addColumn('created_at', 'timestamp', (col) =>
      col.defaultTo(sql`now()`).notNull()
    )
    .execute()