클론코더

Prisma와 SQLite 차이: ORM과 데이터베이스는 무엇이 다를까

Prisma와 SQLite는 둘 다 데이터베이스 기술처럼 보이지만 역할이 다릅니다. SQLite는 데이터를 저장하는 데이터베이스이고, Prisma는 코드에서 데이터베이스를 다루게 해 주는 ORM입니다. 데이터 흐름과 코드 예제로 비교합니다.

클론코더·· 수정·2분

SQLite는 데이터를 실제로 저장하는 데이터베이스이고, Prisma는 코드에서 그 데이터베이스를 다루게 해 주는 ORM입니다. 처음 개발을 시작하면 두 이름이 늘 같이 나와서 비슷한 기술처럼 보이지만, 맡은 일이 다릅니다.

SQLite는 창고이고, Prisma는 창고 관리 시스템입니다.


Prisma와 SQLite는 무엇이 다른가요?

구분SQLitePrisma
역할데이터베이스 (저장소)ORM (코드와 DB 사이의 다리)
하는 일데이터를 파일에 실제로 저장코드로 DB에 읽고 쓰게 해 줌
ORM이란?

ORM(Object-Relational Mapping)은 데이터베이스의 표(테이블)를 코드의 객체처럼 다루게 해 주는 도구입니다. SQL 문장을 직접 쓰는 대신 함수를 부르면, ORM이 그 함수를 SQL로 바꿔 데이터베이스에 보냅니다.


데이터는 어떻게 흘러가나요?

데이터 흐름
[내 코드] ←→ [Prisma] ←→ [SQLite / PostgreSQL / MySQL]
             (번역기)       (실제 데이터 저장소)

JavaScript나 TypeScript로 코드를 쓰면, Prisma가 그 코드를 데이터베이스가 알아듣는 SQL로 바꿔 줍니다. 그래서 Prisma 뒤에 있는 데이터베이스는 SQLite일 수도 있고, PostgreSQL이나 MySQL일 수도 있습니다.


코드로 비교하면 어떻게 다른가요?

같은 사용자를 이메일로 찾는 코드입니다. SQLite에 SQL을 직접 쓰면 이렇습니다.

sql
SELECT * FROM users WHERE email = 'test@example.com';

Prisma를 쓰면 이렇게 됩니다.

typescript
const user = await prisma.user.findUnique({
  where: { email: "test@example.com" },
});

두 코드의 결과는 같습니다. 다만 Prisma 쪽은 에디터가 user, email 같은 이름을 자동완성해 주고, 없는 컬럼 이름을 쓰면 실행하기 전에 타입 에러로 알려 줍니다.


왜 Prisma를 같이 쓰나요?

  1. SQL을 몰라도 시작할 수 있습니다. 자주 쓰는 읽기 · 쓰기는 함수로 처리합니다. 복잡한 조회는 결국 SQL을 알아야 편합니다.
  2. 자동완성이 됩니다. 테이블과 컬럼 이름을 에디터가 알려 줍니다.
  3. 타입으로 실수를 미리 잡습니다. 잘못된 쿼리는 실행 전에 에러가 납니다.
  4. 스키마 변경을 기록합니다. 테이블 구조를 바꾸면 마이그레이션 파일로 남겨 다른 환경에도 똑같이 적용할 수 있습니다.
Prisma는 SQLite를 대신하지 않습니다. SQLite 같은 데이터베이스와 함께 씁니다.