Data Engineering(20)
-
데이터 분석의 경계에 선 엔지니어의 <인프런 BigQuery(SQL) 활용편>후기 (feat. 빠짝 스터디)🌱
들어가며 최근 업무에서 빅쿼리를 더 효과적으로 활용하는 방법을 고민하던 중 글또에서 성윤님(aka. 카일스쿨)의 인프런 강의 챌린지 소식을 듣게 되었어요. 일명 '빠짝 스터디'라는 이름으로 4주간 BigQuery 활용편 강의를 집중해 수강하는 프로그램이었는데요, 제가 관심있게 본 강의였고 30% 할인 쿠폰까지 제공되어 망설임 없이 신청했답니다.오늘은 강의를 선택한 이유와 스터디에서 배운 것들, 오프라인 모임에 다녀온 이야기까지 공유해보도록 할게요. 1. 강의를 듣게 된 이유 제가 속한 데이터 팀에는 분석가가 없어 직접 서비스의 지표를 구해야 하는 일이 종종 있어요. 일을 하다 보니 단순히 SQL 쿼리를 작성하는데 그치지 않고 데이터 분석의 개념과 흐름을 이해하고 싶은 생각이 들더라구요. 빅쿼리 활용편 ..
2024.11.24 -
PostgreSQL 핫 백업을 해보자 (feat. 젠킨스)
들어가며제가 속한 데이터 팀에서는 운영을 위한 별도의 PostgreSQL DB를 사용하고 있는데요, 지난 주 팀장님으로부터 DB의 백업 업무를 받게되었습니다. 오늘은 소중한 데이터를 불의의 사고(!)로 부터 지키기 위한 PostgreSQL 백업 방식과 이를 젠킨스로 자동화한 방법에 대해서 공유해보려고 합니다. 1. 콜드 백업과 핫 백업 처음 업무를 받았을 때 "콜드 백업이 아닌 핫 백업"으로 진행해달라는 요청이 있었습니다. RDB 백업은 처음이었기 때문에 용어부터 생소했던 기억이 나는데요 우선 개념을 알아보겠습니다. 1 ) 콜드 백업 데이터 베이스 서버를 내린 상태에서 진행하는 백업입니다. 오프라인 백업, 닫힌 백업이라고도 합니다. 주로 유지 관리 시간에 실행되며 백업을 하는 동안 서비스가 불가능합니다..
2024.11.10 -
이직 5개월 차의 BigQuery 최적화: 파티셔닝과 클러스터링으로 시작하기
들어가며 최근에 읽고 있는 『구글 빅쿼리 완벽 가이드』 7장 성능 및 비용 최적화에는 컴퓨터 과학자 도널드 커누스의 말이 나옵니다. "효율성은 향상시키려는 노력의 약 97%는 그 효과가 미비하므로 너무 집착해서는 안 된다. 성급한 최적화는 모든 문제의 근원만 될 뿐이다. 하지만 정말 중요한 3%의 최적화까지 포기해서는 안 된다." 빅쿼리를 사용한지도 어언 5개월입니다. 입사 초반에는 빅쿼리 UI에 뜨는 작은 바이트 수 변화 하나에도 집착하던 시기가 있었는데요, 아마 97%의 비효율적인 노력이 아니었나 싶습니다. 돌이켜보면 가장 빠르게 적용할 수 있고, 즉각적인 효과를 볼 수 있었던 3%의 가장 중요한 최적화는 파티셔닝과 클러스터링이었던 것 같아요. 오늘은 저와 같은 빅쿼리 초보자를 위한 파티셔닝과 ..
2024.10.27 -
[Datahub] 오픈소스 메타 데이터 플랫폼, 데이터 허브에 대해 알아보자 🙋♂️
🙇♂️ 들어가며사내 대시보드를 만들 때 모르는 컬럼이 있으면 슬랙에 검색하거나 팀에 문의해야 했습니다. 그 과정에서 헷갈린 사람이 저뿐만이 아니라는 것을 깨달았는데요, 이러한 문제를 해결할 수 있는 데이터 허브에 대해서 알아보겠습니다! DatahubLinkedIn에서 만든 오픈소스 메타 데이터 플랫폼으로 메타 데이터 관리, 데이터 검색 및 데이터 거버넌스를 위해 만들어졌습니다. Airflow, BigQuery, CSV, Mysql 등의 다양한 소스를 사용할 수 있습니다. 1. Data Ingestion가장 먼저 해야할 일은 메타데이터를 입력하는 것입니다. 데이터 허브의 UI를 이용하거나 YAML 형식으로 작성한 recipe를 작성해 메타 정보를 ingestion, 즉 섭취(?)할 수 있게 해줘야 합..
2024.09.21 -
[Spark] Apache Spark의 Hint에 대해서 알아보자 (Partitioning Hint 편) 🙋♂️
1. Spark의 Partition RDD나 Dataset를 구성하고 있는 최소 단위. 각 파티션은 클러스터의 여러 노드에 분산되어 저장될 수 있으며, 익스큐터에 의해 병렬로 처리된다. 너무 작은 파티션은 네트워크 오버헤드를 증가시키고 너무 큰 파티션은 작업 효율성에 문제가 있기 때문에 주의해야한다. Partition Key 란? 데이터를 파티션으로 분할하는 데 사용되는 열. 파티션 키를 지정할 때에는 고객 ID, 번호와 같이 카디널리티가 높은(중복도가 낮은) 값을 사용하지 않는 것이 좋다. 대신 데이터를 균일하게 나눌 수 있거나 필터 및 그룹화, 조인 작업에 주로 사용되는 값을 사용하는 것이 좋다. 2. Spark의 Hint Spark SQL이 특정한 방식으로 실행 계획을 만들도록 사용자가 제안하는 것..
2024.03.18