기술블로그-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 비교도 추가해드릴 수 있습니다. 😊