[Django] Django ORM.. 계속 써야할까?

ARA JO·2020년 12월 21일
0

Simtime 개발일지

목록 보기
1/7

ORM?

ORM(Object-relatinal mapping) : 객체-관계형 모델 사이에서 적절한 SQL을 자동 생성하여 불일치 해결.

장점
  • DB 종속성을 낮출 수 있다.
  • 객체 지향적 코드로 직관적 -> 코드 가독성 좋음
  • 비즈니스 로직에 집중할 수 있음

단점
  • 100% ORM으로만 구현하는 것은 어려움
  • 프로젝트 복잡성이 클수록 난이도 상승
  • 잘못 구현하는 경우 성능 저하 (..raw sql문도 마찬가지 )
  • 이미 프로시저가 많은 곳은 ORM의 장점을 활용하기 어려움

Django ORM

  • Record Approach

Django ORM의 대안(sqlAlchemy, psycopg)

1. sqlalchemy

  • ORM
  • Data Mapper
  • vs Django ORM
    Django ORM에서는 불가능한 Composite Primary Key 가능.
    직관적인 method명과 사용법.
    복잡한 sql 작성에 보다 용이하다.
    더 거대한 커뮤니티
    +) mysql 사용시 sqlalchemy를 사용하면 fully support 된다!
    (django orm은 postgresql을 권장하고 있다.)

참고
https://stackoverflow.com/questions/18199053/example-of-what-sqlalchemy-can-do-and-django-orm-cannot
https://dzone.com/articles/django-vs-sqlalchemy-which-python-orm-is-better
https://dzone.com/articles/merging-django-orm-with-sqlalchemy-for-easier-data

2. psycopg

  • ORM이 아닌 DB connection Driver.
  • 즉, DB 서버에 접속, 직접 작성한 쿼리를 보낸다.
  • vs Django ORM
    빠르다.
    DBMS가 제공하는 고유의 기능 전부 사용(ORM의 단점)

결론

  • SIMTIME은 복잡하지 않은 기본적인 CRUD만 필요하다. 따라서 다른 라이브러리를 추가하기 보다는 쓰던대로 django ORM으로 적절한 쿼리를 작성할 수 있도록 빠르게 익히자. raw sql로 훨씬 간단하게 해결할 수 있지만, 그래도 django 시작한 이상 기초적인 것들을 알고 가는게 좋을 것 같다. 심지어 learning curve도 낮다고 한다.(난 왜이렇게 어렵게 느껴지는거징TT)

  • 지금 이 시점에 굳이 SQLAlchemy와 같은 ORM을 추가로 깊이 공부할 필요가 있을까?
    없다. ORM은 철저히 개발자의 생산성에 초점을 맞춘 방식인듯하다. 어차피 일정 수준이상 복잡한 로직이나 성능 이슈를 해결하기 위해서는 SQL과 DB 자체로 돌아가게 된다고 한다.
    게다가 나는 아직 초급...도 아닌 '백수 개발자 지망생'이니까ㅋㅋ django ORM으로 ORM에 대한 개념 정도로만 익혀두고, 나중에 실무에 투입되면 환경에 따라 필요하면 추가로 배우는 것이 맞다고 생각한다. 그 시간에 sql을 더 공부해서 성능 좋은 SQL을 짤 수 있도록 하자.


Django ORM query 공부하기

profile
Sin prisa pero sin pausa (서두르지 말되, 멈추지도 말라)

0개의 댓글