Database (69) 썸네일형 리스트형 3. Airflow + Astronomer Cosmos + dbt airflow + dbt를 테스트한 dag의 모습입니다.dbt 초기엔 Airflow에서 BashOperator 하나로 dbt run/dbt test를 돌리며, GCS→BigQuery 적재는 staging/mart 두 계층으로 나눠 관리했습니다.문제는 빌드가 실패했을 때 어느 모델에서 깨졌는지 빠르게 추적하기 어렵고, retry도 잡 전체를 다시 돌려야 한다는 점이었습니다.Cosmos를 붙이면 Airflow 그래프에 dbt 모델이 각각의 태스크로 나타나니,실패 지점이 정확히 어느 모델인지 즉시 보이고,그 모델만 부분 재시도 / 부분 실행(select) 할 수 있어 운영이 쉬워집니다. 왜 Cosmos?Airflow에서 dbt 모델을 개별 태스크로 쪼개서 보이고, 의존성 그래프도 자동 생성 → 문제 지점 파악.. Trino로 서로 다른 DB 조인하기 (MySQL ↔ PostgreSQL) 이 글은 Trino를 이용해 서로 다른 데이터베이스(여기서는 MySQL과 PostgreSQL)를 하나의 쿼리로 조인하는 최소 예제를 그대로 따라 할 수 있도록 정리했습니다. trinoTrino는 여러 저장소(예: MySQL, PostgreSQL, Hive, BigQuery 등)에 흩어진 데이터를 단일 SQL로 다룰 수 있게 해 주는 분산 쿼리 엔진입니다. 이기종 조인: postgresql.sales.orders와 mysql.crm.customers처럼 서로 다른 시스템의 테이블을 직접 조인할 수 있습니다.커넥터-카탈로그 모델: Trino는 커넥터를 통해 외부 시스템에 접속하며, 각 커넥터 인스턴스를 카탈로그로 노출합니다. 중요 제약: 트랜잭션을 시스템으로 보장하지 않습니다. 또한 조인 시 네트워크 I.. MySQL id 범위 조건 하나로 10분 → 2분 시간대 필터만 있는 쿼리와 id 조건을 함께 건 쿼리의 실행 시간이 극적으로 달랐습니다. 같은 테이블에서 같은 시간 범위를 조회했지만, 전자는 10분이 넘었고 후자는 2분도 걸리지 않았습니다. 문제 상황두 쿼리는 선택 컬럼과 시간 범위가 동일합니다. 차이는 id 조건의 유무입니다.-- A 조건explainSELECT id, user_id, lotto_round_id, lottery_numbers, created_atFROM lotto_lotteriesWHERE created_at >= '2025-05-22 00:00:00' AND created_at -- B 조건explainSELECT id, user_id, lotto_round_id, lottery_numbers, created_atFRO.. elastic search ingest 이 글은 Elasticsearch에서 Ingest Pipeline을 이용해 색인 전에 로그를 전처리하고, 이를 단건 색인과 벌크 색인에 적용하는 예시이다. Ingest 파이프라인 정의Logstash 없이도 간단한 파싱과 정규화를 클러스터 내부에서 처리해, 인덱스 스키마를 안정적으로 유지 할 수 있다.수집한 로그를 색인 전에 일관된 스키마로 가공한다. 예제 파이프라인은 다음을 수행한다.message가 JSON이면 루트로 펼친다(json).색인 시각을 ingested_at에 기록한다(set).문자열 log_time을 @timestamp로 변환한다(date).user_agent를 구조화한다(user_agent).client_ip로 GeoIP 정보를 붙인다(geoip).숫자형이 필요한 필드를 변환한다(con.. [논문] Presto: SQL on Everything / A Decade of SQL Analytics at Meta / History-based Query Optimizer https://trino.io/Presto_SQL_on_Everything.pdfhttps://www.vldb.org/pvldb/vol17/p4077-shankhdhar.pdfhttps://scontent-icn2-1.xx.fbcdn.net/v/t39.8562-6/338697424_1576642486169536_1067048833935401645_n.pdf NTRODUCTION Presto(프레스토)는 Meta(메타, 이전 Facebook)에서 개발되어 2012년에 프로덕션에 도입된 오픈 소스 분산 SQL 쿼리 엔진입니다. 현재 Uber, Netflix, Alibaba, Bloomberg, LinkedIn 등 여러 대기업에서 사용되고 있으며, Amazon Athena와 같은 서비스의 기반으로 활용되기도 .. 3. MySQL CDC 데이터를 Debezium을 통해 Pub/Sub으로 전송하기 서비스 운영 중에는 데이터베이스에 수많은 INSERT, UPDATE, DELETE가 발생한다.이 데이터를 다른 시스템에서 즉시 활용해야 할 때가 있다. 예를 들어:사용자 활동을 기반으로 한 실시간 추천재고 변경 알림주문 상태 업데이트실시간 데이터 파이프라인 구축전통적인 방식에서는 주기적으로 MySQL을 폴링(polling)하거나, 애플리케이션 코드에서 변경 이벤트를 직접 발행해야 한다. 하지만 이런 방식은 지연이 크고, DB와 애플리케이션 모두에 불필요한 부하를 준다. Debezium은 CDC(Change Data Capture) 도구로 MySQL의 binlog를 읽어 데이터 변경 이벤트를 추출하고, 이를 메시지 큐나 스트리밍 시스템으로 보낸다. MySQL → Debezium → Pub/Sub 구조는.. 2. mysql master - slave Replication MySQL Master-Slave Replication 구성 및 테스트이번 글에서는 Docker Compose를 이용해 MySQL Master-Slave 구조를 구성하고, 복제가 제대로 작동하는지 확인하는 방법을 소개한다.1. docker-compose.yml 구성version: '3.8'services: master: image: mysql:5.7 platform: linux/amd64 container_name: mysql-master restart: always environment: MYSQL_ROOT_PASSWORD: root volumes: - ./master/my.cnf:/etc/mysql/conf.d/my.cnf - ./ma.. 1. mysql binlog MySQL Binary Log(binlog) 설정 및 분석 실습MySQL에서 Binary Log(이하 binlog)는 데이터 변경 이력을 기록하는 중요한 기능이다. 주로 Replication, Point-in-Time Recovery, Change Data Capture 등에 활용된다. 이 글에서는 Docker 환경에서 binlog를 활성화하고, 데이터 변경 내용을 직접 로그로 확인하는 과정을 다룬다. 1. Docker로 binlog 활성화된 MySQL 구성먼저 Docker Compose로 binlog가 활성화된 MySQL을 실행합니다. 다음의 커맨드를 추가해야 binlog를 사용할수 있다. --log-bin=mysql-bin: binlog 활성화--binlog-format=ROW: row-level.. 이전 1 2 3 4 ··· 9 다음