기술블로그-Fastapi편

📌 ORM과 EdgeDB의 차이점 정리

Chansman 2025. 5. 28. 10:48

📌 ORM과 EdgeDB의 차이점 정리

1. ORM이란 무엇인가요?

ORM(Object Relational Mapping)은 객체지향 언어(Python 등)와 관계형 데이터베이스(MySQL, PostgreSQL 등)를 연결해주는 도구입니다.

✅ 예를 들어, Django ORM을 사용하면 아래처럼 쓸 수 있습니다.

class Movie(models.Model):
    title = models.CharField(max_length=100)

movie = Movie.objects.get(title="Dune")
print(movie.title)
  • Movie 클래스는 데이터베이스의 movie 테이블과 매핑됩니다.
  • movie.title처럼 객체의 속성으로 데이터를 읽을 수 있습니다.
  • 내부적으로는 SQL 쿼리(SELECT, INSERT 등)를 자동으로 생성하고 실행해줍니다.

➡️ 즉, ORM은 SQL 없이도 객체 지향 코드로 데이터베이스를 제어할 수 있게 해주는 도구입니다.


2. EdgeDB는 어떻게 다른가요?

💡 EdgeDB는 PostgreSQL 기반의 차세대 객체지향 데이터베이스입니다.

  • 유명 Python 컨트리뷰터들이 만든 MagicStack에서 개발
  • ORM 없이도 객체처럼 데이터를 다룰 수 있음
  • EdgeQL이라는 전용 쿼리 언어 제공 (SQL보다 직관적이고 객체지향적)
  • 쿼리 결과가 자동으로 객체처럼 리턴

✅ 예시:

movie = await client.query_single('''
    select Movie {
        title
    }
    filter .title = <str>$title;
''', title="Dune")

print(movie.title)  # ORM 없이도 객체처럼 접근 가능!
  • 중간에 Movie 클래스를 정의하지 않아도 됩니다.
  • SQL 또는 ORM 없이 직접 EdgeQL을 실행하며, 결과는 객체처럼 다룰 수 있습니다.

3. Django ORM vs EdgeDB 비교표

기능 Django ORM (ORM 사용) EdgeDB (ORM 없이도 객체처럼)

✅ 모델 정의 class Movie(models.Model) ❌ 없음 (esdl로 정의)
✅ 데이터 삽입 Movie.objects.create(...) insert Movie { ... }
✅ 단일 조회 Movie.objects.get(...) select Movie { ... } filter ...
✅ 필드 접근 방식 movie.title movie.title
✅ 쿼리 언어 ORM이 SQL 생성 EdgeQL 직접 작성
✅ 쿼리 결과 Python 클래스 인스턴스 Python 객체 (자동 매핑)
✅ 마이그레이션 makemigrations / migrate edgedb migration create / migrate

🔍 핵심 요약

  • ORM은 파이썬 클래스를 정의하고, 내부적으로 SQL을 대신 처리해주는 도구입니다.
  • EdgeDB는 ORM 없이도 객체처럼 데이터를 다룰 수 있는 데이터베이스입니다.
    • EdgeQL을 직접 작성하고
    • 쿼리 결과가 자동으로 Python 객체처럼 리턴됩니다.

➡️ 결론: EdgeDB는 ORM의 역할을 자체적으로 흡수한 형태로, 더 단순하고 고성능의 객체 지향 쿼리 작성을 지원합니다.


필요하다면 관계형 데이터 처리 예시나 update/delete 비교도 추가해드릴 수 있습니다. 😊