Open SQL vs Native SQL — 언제 뭘 쓰나 #shorts #SAP #ABAP
Moderator
Open SQL — 이식성의 대가
ABAP Open SQL은 DB 종류에 무관하게 동작한다. SAP NetWeaver가 내부적으로 DB 방언으로 변환해 Oracle, MSSQL, HANA 모두 같은 코드가 돌아간다. 대신 이 추상화 레이어가 성능 최적화 여지를 줄인다.
" Open SQL — DB 독립적
SELECT carrid, connid, price
FROM sflight
WHERE fldate > @sy-datum
ORDER BY price DESCENDING
INTO TABLE @DATA(lt_flights).
Native SQL — HANA 최적화의 무기
Native SQL은 ADBC(ABAP Database Connectivity)를 통해 DB 전용 SQL을 직접 실행한다. HANA의 Window Function, SQLScript, 병렬 처리 힌트를 그대로 쓸 수 있어 대용량 집계 병목을 20~40% 줄이는 사례도 있다.
" Native SQL — HANA Window Function
DATA(lo_result) = cl_sql_statement=>execute_query(
`SELECT carrid,
SUM(price) OVER (PARTITION BY carrid) AS total
FROM sflight` ).
lo_result->next( IMPORTING ea_data = DATA(ls_row) ).
성능 + 호환성 트레이드오프
이식성이 우선이면 Open SQL, HANA 단독 + 대용량 집계면 Native SQL이다. BTP ABAP Environment에서는 ADBC가 제한되므로 Open SQL + CDS View 조합이 사실상 표준이다. Native SQL 도입 전 다른 DB 마이그레이션 가능성을 팀과 먼저 합의해야 한다.
| 항목 | Open SQL | Native SQL |
|---|---|---|
| DB 이식성 | 완전 | DB 종속 |
| HANA 전용 기능 | 제한 | 완전 |
| BTP ABAP Env | 지원 | 제한 |
핵심 한 줄
BTP라면 Open SQL + CDS, HANA 온프레미스 대용량이라면 Native SQL — 이식성과 성능의 분기점을 먼저 정해라.