snowflake 성능 및 비용 테스트 결과 ( aws athena 와 비교 )

2024. 2. 6. 09:04it

반응형

오늘은 snowflake와 aws athena 성능과 비용을 비교해보겠다. snowflake는 클라우드를 기반의 데이터 저장 및 분석 서비스를 제공한다. 기업들은 클라우드를 통해 데이터를 저장하고 분석할 수 있다. 주요 기능으로는 기업 고객에게 맞는 스토리지와 컴퓨팅을 분리하여 제공하는 것이 있다. 이는 필요에 따라 컴퓨팅 파워를 즉시 확장할 수 있는 기능이며, 데이터 공유, 데이터 복제 기능을 제공한다. 

 

[ 데이터 소개 ]

데이터 : 베트남 공장 데이터 12월 1달 데이터

총 건수 : 233,870 건

 

728x90

 

 

1. 실험 쿼리

SELECT A.SPC_1,
        A.SPC_2,
        A.SPC_3,
        A.SPC_4,
        A.SPC_5,
        A.SPC_6,
        A.SPC_7,
        A.SPC_8,
        A.SPC_9,
        A.SPC_0
FROM vtn_plc A
INNER JOIN MES B
ON 1=1 
AND A."brdno" = B."brd_no"
where 1=1
AND '20231201000000' <= A."dtm"
AND A."dtm" < '20241208000000'

 

 

 

2. 실험 코드

for row in range(10)  : 
    # 커서 생성
    # Snowflake 연결 설정
    conn = snowflake.connector.connect(
        user=snowflake_user,
        password=snowflake_password,
        account=snowflake_account,
        warehouse="my_warehouse",
    #     role=snowflake_role,
        database=snowflake_database,
        schema=snowflake_schema
    )


    cs = conn.cursor()
    cs.execute("ALTER SESSION SET USE_CACHED_RESULT = FALSE")

    cursor = conn.cursor()

    # 실행할 쿼리 작성
    query = """
    SELECT A.SPC_1,
            A.SPC_2,
            A.SPC_3,
            A.SPC_4,
            A.SPC_5,
            A.SPC_6,
            A.SPC_7,
            A.SPC_8,
            A.SPC_9,
            A.SPC_0
    FROM vtn_plc A
    INNER JOIN MES B
    ON 1=1 
    AND A."brdno" = B."brd_no"
    where 1=1
    AND '20231201000000' <= A."dtm"
    AND A."dtm" < '20241208000000'
    """

    start = datetime.datetime.now() 

    # 쿼리 실행
    cursor.execute(query)
    # 결과 가져오기
    results = cursor.fetchall()
    df = pd.DataFrame( results ) 

    end = datetime.datetime.now() 

    # # 결과 출력
    # for row in results:
    #     print(row)

    # 연결 및 커서 닫기
    cs.close()
    cursor.close()
    conn.close()
    
    print( end - start )

 

 

3. 성능평가

3-1. snow flake MES + MFT 조인 후, 조회 성능

 

 

3-2. snow flake 조인 된 한개의 테이블을 만든 후, 조회 성능

 

반응형

 

 

 

3-3. Athena 조인 된 한개의 테이블을 만든 후, 조회 성능

 

3-4. SnowFlake Table Storage VS Aws S3 용량 비교

 

용량의 경우, 전반적으로 S3가 사이즈가 더 작은 것을 알 수 있다. SnowFlake 가 자랑하는 데이터 압축률은 MES 테이블에서만 한정적으로 적용되는 것으로 보인다. MFT와 vtn_plc + mes의 경우, 조회 성능을 향상 시키기 위해, 피봇한 데이터이다. 이 경우에는 S3 대비 압축률이 떨어지는 것으로 추측된다.

 

 

 

4. 비용

 

 

비용의 경우, 즉시 빌링에 적용되지 않아, 쿼리 개별 비용을 계산하는데 한계가 있었다. 따라서 테스트 당시 수행했던 모든 쿼리의 수와 비용의 합계를 계산한 후, 쿼리의 사용 요금을 추정해 계산했다. 해당 쿼리의 결과는 다양한 쿼리가 수행되어 있어서, 개별 쿼리의 비용을 정확하게 계산하는데 한계가 있다.

 

5. 결론

 

조회 성능의 경우 태그 1개의 기준으로 스노우플레이크가 평균 2,006% 성능이 더 빠르며, 태그 10개의 기준으로 1,249% 이상 성능이 빠르다.

현재 회사에서 사용하는 대용량 데이터를 조회하는 기능에만 사용하는 경우,  Athena의 경우 현재 무료로 운영이 되고 있으며, snowflake를 사용할 경우 월 10달러 이하의 비용이 발생할 걸로 예상이 된다.

반응형