Kysely orm 잠깐적용 후기
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에서 심각하게 욕을 먹던데… 버그도 많고 수정도 안되고 인플루언서 통해서 홍보만 한다고 홈페이지 인플루언서들 반응이 … 장난인 줄 알았는데 진짜인 것 같다.
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()