Django 5.2에서 선언적 테이블 파티셔닝 사용해본 케이스 공유

도둑맞은사슴 @thiefbird@hackers.pub

이 글은 Django ORM을 사용하여 PostgreSQL의 선언적 파티셔닝을 구현하는 과정을 소개한다. 대용량 데이터 처리의 필요성에 따라 테이블 파티셔닝을 도입하려 했으나, Django가 PostgreSQL의 선언적 파티셔닝을 직접 지원하지 않는 문제에 직면했다. 초기에는 raw SQL과 `RunSQL`을 사용하여 파티셔닝을 구현하려 했지만, 최신 Django 버전의 복합 PK 지원을 활용하여 ORM 수준에서 파티셔닝을 관리하는 방법으로 전환했다. PostgreSQL 파티셔닝의 제약 사항인 파티션 키를 primary key에 포함해야 한다는 점을 고려하여 모델을 설계하고, `managed=True` 상태로 ORM 모델을 관리하면서도 PostgreSQL의 내장 스케줄러를 활용한 쿼리가 가능하도록 구현했다. 이 접근 방식은 여전히 마이그레이션 파일에 SQL문을 추가해야 하지만, ORM의 이점을 최대한 활용할 수 있다는 장점이 있다. 향후 data retention 정책 관리 등 개선의 여지가 있지만, 현재로서는 만족스러운 해결책이다.

Read more →
4

❤️

4 people reacted.

Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub!

Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다.

FedifyHolloBotKit、そしてこのサイト、Hackers' Pubを作っています。

嗨,我是 FedifyHolloBotKit 以及這個網站 Hackers' Pub 的開發者!

Neovim Super villain. 풀스택 엔지니어 내지는 프로덕트 엔지니어라고 스스로를 소개하지만 사실상 잡부를 담당하는 사람. CLI 도구를 만드는 것에 관심이 많습니다.

Hackers' Pub에서는 자발적으로 바이럴을 담당하고 있는 사람. Hackers' Pub의 무궁무진한 발전 가능성을 믿습니다.

그 외에도 개발자 커뮤니티 생태계에 다양한 시도들을 합니다. 지금은 https://vim.kr / https://fedidev.kr 디스코드 운영 중

슈티를 함께 만들 팀을 만들고 있습니다. 관심 있으신 분, 또는 잘 모르겠지만 이야기를 나눠보고 싶은 분도 bgl@gwyng.com으로 편하게 연락주세요.