Web/Database 3

데이터 파이프라인 회고 (SQL + Python)

안녕하세요. 이번에는 퇴사 기념(?)으로 마지막 프로젝트에서 작업한 내용을 피드백해보려고 합니다. 잘못된 원천 데이터를 제공받아 몇 번 재작업한 일이 있었습니다. (지난 글에서 몇 억 건 데이터 포함입니다 ㅎㅎ..) 그럴 때마다 재작업을 하는데 아무리 기록하고 조심해도 데이터에 실수가 있었습니다. "데이터에는 테스트 코드가 없나?" 생각하다가 찾아보니 데이터 파이프라인을 위한 Python 라이브러리 Luigi가 있었습니다. 또한 데이터 엔지니어링에서 자주 보이는 ETL이라는 단어도 알게 되었습니다.기존 데이터 파이프라인 구축 방식기존 방식의 문제점Luigi의 소개와 장점향후 데이터 파이프라인 개선 방안위 단계를 따라 피드백을 해보려 합니다. 인수인계를 준비하면서 제가 작업했던 흐름을 보니 실수를 체크하기..

Web/Database 2024.06.08

PostgreSQL에서 3억개의 원천 데이터를 효율적으로 통계 데이터로 변환하기

데이터 중심 애플리케이션 개발에서, 원천 데이터를 유용한 통계 정보로 변환하는 과정은 핵심적인 작업 중 하나입니다. 특히, 대량의 데이터를 다루는 경우, 이 과정은 성능 최적화와 직결되며, 개발자는 이를 위해 다양한 전략을 고민해야 합니다. 본 글에서는 PostgreSQL을 사용하여 3억 개의 데이터를 효과적으로 통계 데이터로 변환하는 과정을 소개합니다. 오픈월드 MMORPG를 예시로 들겠습니다. 유저들이 어느 장소에서 가장 오래 대기하는지 알아보는 통계를 내려고 합니다. 1. 인덱싱 전략 첫 번째 접근 방법은 데이터에 인덱싱을 적용하는 것입니다. 인덱스는 데이터베이스에서 데이터 검색 속도를 향상시키는 데이터 구조입니다. 특정 컬럼에 대해 생성되어, 빠른 데이터 검색을 가능하게 합니다. 실제로, 인덱싱을..

Web/Database 2024.03.17

대용량 테이블의 행 수 추정: PostgreSQL

저는 요즘 회사에서 개발.. 을 하지 않고 분석, 설계 일을 서포트하고 있습니다. 분석을 위한 데이터가 워낙 커서 여러 고민을 했습니다. 그중에서 테이블에 행 수를 어떻게 빨리 볼 수 있을까 하는 고민을 했고, 과정을 공유하고자 합니다. 2.8억 개가 맞는지 하나씩 세어보도록 제가 다루고 있는 데이터 중 가장 큰 테이블은 2.8억 개의 행을 가지고 있습니다. -- 20분 넘게.. 걸려서 중지.. select count(*) from very_big_table; -- 풀스캔으로 학대 중 평소에는 아무 생각 없이 테이블의 행 수를 보기 위해 사용한 이 쿼리가 20분이나 넘게 돌아가고 있었습니다. 이 테이블은 21~23년도 데이터인데, 월별로 파티셔닝 했습니다. 약 7,500만의 데이터를 가진 테이블이 36개..

Web/Database 2024.02.19