데이터 애널리스트 업무 이해하기

[SNOWFLAKE/스노우플레이크 공부] Pro 자격증 준비에 필요한 토막 지식 정리_Streams

도쿄뱅 2024. 10. 12. 11:20
반응형

[SNOWFLAKE/스노우플레이크 공부] Pro 자격증 준비에 필요한 토막 지식 정리_Streams


 

 

Snowflake의 **Streams(스트림)**에 대해 알기 쉽게 설명해줄게요!

1. Streams란?

  • **Streams(스트림)**는 테이블에서 일어난 변경 사항을 추적할 수 있는 기능이에요.
  • 테이블에서 INSERT(추가), UPDATE(수정), **DELETE(삭제)**와 같은 데이터 변경 작업이 있을 때, 이 변경 내용을 기록하고 추적할 수 있어요.
  • 스트림을 사용하면, 테이블의 변경된 부분만 추출해서 데이터 처리 파이프라인을 만들거나, 변경된 데이터를 다른 테이블로 이동시킬 수 있어요.

2. Streams의 필요성

  • 변경 데이터 캡처(CDC): 데이터베이스에서 변경된 데이터를 캡처하고, 이를 바탕으로 실시간 분석이나 동기화 작업을 수행할 수 있어요.
  • 데이터 동기화 및 파이프라인 구축: 데이터를 다른 테이블이나 외부 시스템으로 전송하거나 복제할 때, 변경된 데이터만 처리해서 효율적으로 동기화할 수 있어요.
  • 변경된 데이터만 처리: 매번 전체 테이블을 스캔하지 않고, 변경된 부분만 처리할 수 있기 때문에, 처리 속도가 빨라지고 리소스 사용량도 줄일 수 있어요.

3. Streams 사용 예시

  • 예시: 스트림 생성 및 사용
    sql
    コードをコピーする
    CREATE OR REPLACE STREAM my_table_stream ON TABLE my_table;
    • my_table 테이블에서 데이터의 변경 사항을 추적하는 **my_table_stream**을 생성했어요.
    • 이제 my_table에 새로운 데이터가 추가되거나, 기존 데이터가 수정되거나 삭제될 때마다, my_table_stream이 변경 사항을 기록해요.
  • 특정 테이블에서 발생하는 모든 변경 사항을 추적하는 스트림을 생성해볼게요:
  • 스트림에서 변경 사항 조회
    sql
    コードをコピーする
    SELECT * FROM my_table_stream;
    • 이 쿼리를 실행하면 my_table에 발생한 INSERT, UPDATE, DELETE 작업을 보여줘요.
    • 예를 들어, 어떤 행이 추가되었는지, 삭제되었는지, 업데이트되었는지에 대한 정보와 변경된 데이터를 확인할 수 있어요.
  • 스트림에서 변경된 데이터를 조회해볼 수 있어요:

4. Streams의 주요 특징

  • Append-Only Stream: 기본적으로는 테이블에서 일어난 변경 사항만 추적하고, 실제 데이터를 수정하지는 않아요.
  • Change Tracking: 각 데이터의 변경 사항에 대해 INSERTED, UPDATED, DELETED와 같은 변경 유형과 변경된 데이터를 기록해요.
  • Consumable Streams: 스트림에서 변경 사항을 한 번 조회하면, 그 부분은 소모된 것으로 간주돼요. 다음 조회 시에는 새로운 변경 사항만 볼 수 있어요.

5. Streams의 구성 요소

  • Tracking 테이블: 스트림은 특정 테이블에 연결돼 있어, 그 테이블에서 발생하는 변경 사항을 추적해요.
  • Change Type: 변경된 데이터가 삽입된 데이터인지(INSERT), 수정된 데이터인지(UPDATE), **삭제된 데이터인지(DELETE)**에 대한 정보를 담고 있어요.
  • 추적된 데이터: 변경된 행의 이전 값과 새로운 값이 포함될 수 있어요. 이를 통해 변경된 필드를 정확히 확인할 수 있어요.

6. Streams와 Tasks를 함께 사용하기

  • Streams는 **Tasks(작업)**와 함께 사용하면 매우 강력해요.
  • Tasks는 특정 시간에 자동으로 실행되는 작업이에요.
  • 예를 들어, 매일 자정에 Streams에서 변경된 데이터를 조회하고, 변경 내용을 다른 테이블로 이동시키는 Task를 설정할 수 있어요.
    • 이 Task는 매일 자정에 my_table_stream에서 변경된 데이터를 가져와 processed_changes 테이블에 저장해요.
  • sql
    コードをコピーする
    CREATE OR REPLACE TASK process_changes WAREHOUSE = my_warehouse SCHEDULE = 'USING CRON 0 0 * * *' -- 매일 자정 실행 AS INSERT INTO processed_changes SELECT * FROM my_table_stream;

7. Streams 사용 시 주의점

  • 스토리지 사용: 스트림은 변경 사항을 저장하고 있어요. 변경 데이터가 많으면, 스토리지 사용량이 증가할 수 있어요.
  • 소모된 데이터: 스트림에서 데이터를 한 번 읽으면, 그 데이터는 소모된 것으로 간주되어 다시 조회할 수 없어요. 이를 잘 고려해 데이터 처리를 계획해야 해요.
  • 변경 사항 처리 순서: 스트림에서 가져온 데이터를 처리할 때는 변경된 순서를 고려해야 해요. 그렇지 않으면 데이터의 일관성을 유지하기 어려울 수 있어요.

8. Streams와 Change Tracking

  • 변경 사항을 기록할 때, 각 데이터의 **변경 유형(INSERT, UPDATE, DELETE)**과 변경된 시점이 기록돼요.
  • 이를 이용해 변경된 데이터를 특정 시점부터 조회하거나, 특정 유형의 변경만 필터링할 수 있어요.
    sql
    コードをコピーする
    SELECT * FROM my_table_stream WHERE METADATA$ACTION = 'INSERT';
  • 예를 들어, INSERT된 데이터만 보고 싶다면:

9. 비유로 이해하기

  • Streams는 마치 감시 카메라 같아요:
    • my_table이라는 가게에서 무슨 일이 일어나는지를 계속 감시하고 있어요.
    • 새로운 고객이 들어오거나(INSERT), 물건이 교체되거나(UPDATE), 고객이 나가는(DELETE) 등의 모든 움직임을 기록해요.
    • 나중에 감시 카메라의 영상을 확인하면, 가게에서 무슨 일이 있었는지 알 수 있는 것처럼, 스트림을 조회하면 테이블에서 어떤 데이터가 어떻게 변경되었는지 알 수 있어요.

10. Streams의 사용 사례

  • 데이터 복제: 데이터베이스의 일부 테이블에서 변경된 데이터를 실시간으로 다른 데이터베이스나 테이블에 복제할 때.
  • ETL(추출, 변환, 로드) 프로세스: 데이터를 실시간으로 변경 사항만 추출해, 다른 시스템으로 옮기거나 분석할 때.
  • 실시간 대시보드 업데이트: 특정 테이블의 데이터가 변경될 때마다, 이를 기반으로 실시간 대시보드를 업데이트하는 경우.

11. 정리

Streams는 Snowflake에서 테이블의 변경 사항을 추적하고, 이를 바탕으로 데이터 동기화실시간 분석을 할 수 있는 강력한 도구예요. 스트림을 활용하면 변경된 데이터만 효율적으로 처리할 수 있어, 데이터 파이프라인을 더 빠르고 유연하게 구성할 수 있어요. 특히, 데이터 변화에 민감한 애플리케이션에서는 Streams가 큰 도움이 된답니다!

 


[SNOWFLAKE/스노우플레이크 공부] Pro 자격증 준비에 필요한 토막 지식 정리_Streams

 

반응형