데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

 

Azure Synapse 와 DW 관련 일을 잠시 보게 되어서, 처음 Synapse를 접하면서 고민했던 부분을 정리.

Synapse? - Spark인지 SQL Database인지, Databricks인지, DW인지, ETL 파이프라인? - 차근차근 정리가 목표

 

Synapse란 무엇인가?

기업용 데이터 분석 서비스로, 데이터웨어하우스와 빅데이터 시스템을 포함. 기업용 데이터웨어하우스 "SQL" 기술과 "Spark"을 제공하며, 데이터 통합을 위한 pipeline 및 ETL/ELT 는 물론, CosmosDB, Power BI, AzureML 제공한다.

 

단일 Azure 서비스인데 뭔가 엄청 많은 기능을 제공한다.

Diagram of Azure Synapse Analytics architecture.

우선 SQL과 Spark - Analytics runtime 먼저 살펴본다.

 

Synapse - SQL 런타임

SQL 런타임에서는 Serverless 리소스 모델과 Dedicated 리소스 모델을 제공한다. 양쪽 모두 분석에 이용되지만 분석 대상과 과금 구조는 판이하게 다르다.

Servrerless

주로 Azure Data Lake Storage나 CosmosDB에 적재된 데이터를 리뷰하거나 조회할때 사용한다. 비용이 저렴하지만, 응답속도나 사용목적 상 제한이 있다. 아래에서 더 상세히 다룬다.

Dedicated

기존 SQL DW와 유사하다. Dedicated SQL Pool을 생성해 SQL 테이블 저장소 등으로 사용하며, DW 기능이 제공되고, Dedicated 서비스이기 때문에 성능이 보장된다.

 

Synapse - Spark 런타임

익숙한 분들이 많을 Databricks와 비슷한 모델로 제공된다. Spark의 분석 플랫폼 기능을 모두 제공한다.

SparkML이나 AzureML과 연동되며, delta lake를 지원한다. 그외의 기능은 databricks와 비슷하다. 아래에서 Databricks와의 비교 내용을 상세하게 다룬다.

 

Synapse 데이터 통합(integration)

Azure에서 제공하는 ETL 서비스인, ADF(Azure Data Factory)의 기능이 그대로 Synapse와 통합된다. ADF를 그대로 지원하기 때문에 ADF가 제공하는 데이터 소스 연결과 데이터 오케스트레이션 기능을 그대로 가져와 Synapse에서 통합 처리된다.

 

그렇다면, 이미 제공하는 서비스들이 많은데 Synapse와 기존의 서비스는 어떻게 다른가? 차이점을 비교하면서 알아본다.

 

(구)SQL Data warehouse와 Synapse dedicated pool 비교

What is dedicated SQL pool (formerly SQL DW)? - Azure Synapse Analytics | Microsoft Docs

Dedicated SQL pool (formerly SQL DW) in relation to Azure Synapse

 

- Synapse에서의 Dedicated SQL pool은 분석 리소들의 컬렉션을 의미하며, 스케일은 DWU(Data Warehouse Unit)으로 설정 가능하다. 즉, 기존 서비스보다 확장성과 통합 기능에 많은 향상을 제공하며, 분산 처리 기술을 제공한다.

- Synapse에서 Dedicated SQL Pool을 이용해 분산 쿼리를 실행, 고성능 분석 처리가 가능하다. 

 

기존 SQL DW와의 큰 차이라고 보면 좋고, 상세 내용은 위의 문서를 참고하자.

 

Synapse serverless SQL Pool과 Dedicated SQL Pool의 차이

그렇다면, serverless와 dedicated의 차이는 무엇인가? 우선 상당히 이질적이고 예상과 많이 틀리다.

가장 큰 차이는, serverless SQL Pool은 data lake에 쿼리를 제공하는 서비스이며, 로컬 스토리지가 따로 없다.(오잉?)

로컬 스토리지가 없다면 뭘하라는 것인지 처음에 매우 혼란스러웠다.

 

Design tables using Synapse SQL - Azure Synapse Analytics | Microsoft Docs

synapse01.png

 

Serverless는 저장소가 없기 때문에, data lake에서 조회 후 사용할 데이터를 리뷰한 다음, spark에서 처리하는 패턴으로 사용되는 것이 일반적이다. 즉, Spark과 연계해서 사용하는 것이 일반적인 패턴이다. 

 

Synapse spark에서 만든 테이블을 Synapse srverless pool에서 조회 가능하며, Power BI 연동도 가능해 DW 패턴을 이렇게 두 서비스를 연동해 이용도 가능하다. 이러한 패턴이 serverless SQL Pool과 spark 조합으로 spark에 익숙한 분들이라면 훌륭하게 사용될 것이다. 

Azure Synapse Studio notebooks - Azure Synapse Analytics | Microsoft Docs

 

Synapse와 분석의 차별화 포인트? Power BI와의 연동?

Synapse 데이터 분석은 항상 Power BI가 함께 따라 나온다. Power BI와의 통합성이 훌륭하고, native 수준으로 여러 기능을 제공하는 것이 특징이다. 그렇다면, 어떤 차이가 Synapse + Power BI 조합을 만드는지 더 살펴보자.

 

Power BI가 데이터를 로드하는 두가지 방식 - DirectQuery와 Import

DirectQuery

이름에서 느껴지는 것처럼, Power BI에서 데이터를 조회할때 실시간으로 직접 서버에 쿼리하는 것을 말한다. 실시간 분석이 가능하며 동적 로딩을 제공해 서버의 부하도 줄일 수 있으며, 데이터가 자주 변경될때 훌륭한 선택이다.

수기가 단위의 데이터 분석시, 로컬 Power BI 저장소로 import하는것은 좋은 선택이 아니다.

Using DirectQuery in Power BI - Power BI | Microsoft Docs

 

Import

데이터가 작을 경우 좋은 선택이다. 하지만, 실시간 분석이 어렵고(다시 import 전까지는 로컬의 데이터를 조회) 데이터가 클 경우 로컬작업 환경에 따라 어려움이 있을 수 있다.

 

DirectQuery를 지원하는 서비스

느낌처럼, DirectQuery가 다수의 분석가가 사용하는 기업환경에서는 최선의 선택으로 보인다. 그렇다면, 서버쪽에서 어떤 서비스가 이 DirectQuery를 "잘" 지원할까? - 이 문서의 목표이기도 하다.

Azure SQL Database, Azure Synapse Analytics (formerly SQL Data Warehouse), Redshift, or Snowflake Data Warehouse that use DirectQuery. 

DirectQuery 지원 서비스 : Power BI data sources - Power BI | Microsoft Docs

여러 데이터베이스들이 지원하지만, 역시 Power BI를 가장 native하게 잘 지원하는 것은 Synapse가 아닐까 예상된다.

 

Databricks와 Synapse serverless Spark Pool의 "Spark" 차이점

여기까지 보셨다면, Synapse의 Spark Pool과 Databricks의 유사점이 많이 보일 것이다.

Databricks와 Synapse 모두 하루가 멀다하고 기능이 추가되며 무섭게 성장하는 중이다. 2021년 9월 현재 아래 내용이 유용하지만, 이후에는 직접 판단해야 할 것이다.

 

개인적으로, 아래 문서가 이해하는데 많은 도움 되었다.

When to use Azure Synapse Analytics & Azure Databricks? (element61.be)

 

Databricks는

- 여러 spark runtime과 GPU 클러스를 지원

- MLFlow로 pipeline을 잘 제공한다.

- SQL 엔진은 제공하지 않는다.

정도가 큰 차이로 보인다.

 

SparkML 머신러닝으로 GPU 분산 트레이닝을 할 경우 현재는 Databricks가 유용할 것이다.

지원하는 version의 spark runtime도 Databricks가 다양하게 지원하나, SQL 엔진 통합은 Synapse가 우월하다.

양쪽 모두 pipeline을 지원해 오케스트레이션이 가능하다.

하지만 기존 여러 Azure 서비스와의 통합과 ADF를 통한 ETL/ELT는 Synapse가 우월할 것으로 판단된다.

 

Synapse Studio home page

 

개인적으로 잠시 ADX + Synapse + Power BI를 보는 중이라 포스트가 길어졌다. 다음 내용은 ADX + Synapse.

 

참고자료: 

What is Azure Synapse Analytics? - Azure Synapse Analytics | Microsoft Docs

What is dedicated SQL pool (formerly SQL DW)? - Azure Synapse Analytics | Microsoft Docs

Design tables using Synapse SQL - Azure Synapse Analytics | Microsoft Docs

Using DirectQuery in Power BI - Power BI | Microsoft Docs

What is Delta Lake - Azure Synapse Analytics | Microsoft Docs

What is Azure Databricks? | Microsoft Docs

When to use Azure Synapse Analytics & Azure Databricks? (element61.be)

 

No. Subject Author Date Views
2193 Azure Synapse - COPY INTO로 대용량 데이터 분산 로드 코난(김대우) 2021.10.21 16
2192 Azure SQL Database로 CSV 파일 BULK INSERT - Python 코난(김대우) 2021.09.27 58
» Azure Synapse - Spark와 SQL Data warehouse 서비스 file 코난(김대우) 2021.09.16 70
2190 Azure에서 제공하는 데이터베이스 서비스 종류, AWS 및 GCP와 제품 비교 코난(김대우) 2020.12.25 513
2189 SQL Server 트랜잭션 로그 복원시 복원 시간이 오래 걸리는 현상 jevida(강성욱) 2020.02.28 1337
2188 SQL Server 2019 temp table을 사용한 워크로드에서 recompile 감소 jevida(강성욱) 2019.09.24 1658
2187 Azure SQL Managed Instance 및 SQL Server 2016 Later에서 대기 통계 분석 jevida(강성욱) 2019.09.24 1250
2186 SQL Server 2019에서 동기 통계 업데이트시 발생하는 쿼리 Blocking 확인 jevida(강성욱) 2019.09.21 1212
2185 SQL Server 2019 Log Writer Workers jevida(강성욱) 2019.09.21 1402
2184 SQL Server Login Timeout 디버깅 jevida(강성욱) 2019.09.19 1810
2183 SQL Server Worker Thread 기본 계산 jevida(강성욱) 2019.09.18 1337
2182 SQL Linux의 fsync 및 버퍼된 IO (버퍼된 쓰기중 오류가 발생하였을때 파일은 유효할까?) jevida(강성욱) 2019.09.17 1212
2181 SQL Server와 SQL Linux에서 인스턴스 파일 초기화 차이점 jevida(강성욱) 2019.09.14 1241
2180 BCP 실행시 동일 세션에서 여러개의 BULK INSERT 문으로 표시되는 이유 jevida(강성욱) 2019.09.13 1322
2179 삭제된 AD 그룹 계정으로 SQL Server 로그인 사례 (로그인 그룹 삭제 후 조치해야할 사항) jevida(강성욱) 2019.09.12 1129
2178 QPI(Query Performance Insights) 라이브러리를 사용하여 Azure SQL Managed Instance의 로그쓰기 사용량 확인 jevida(강성욱) 2019.09.11 1034
2177 ODBC 드라이버를 사용하여 SQL Server에서 Azure CosmosDB 쿼리 실행 jevida(강성욱) 2019.09.10 1086
2176 Azure SQL Managed Instance에서 로컬 스토리지 사용량 모니터링 jevida(강성욱) 2019.09.09 1101
2175 SQL Server Enterprise Edition 에서 CPU를 40 Core 이상 사용하지 못하는 현상 jevida(강성욱) 2019.09.04 1240
2174 SQL Server Agent Job에서 sysploicy_purge_history 작업실패 jevida(강성욱) 2019.09.04 1283





XE Login