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 SQLNative SQL
DB 이식성완전DB 종속
HANA 전용 기능제한완전
BTP ABAP Env지원제한

핵심 한 줄

BTP라면 Open SQL + CDS, HANA 온프레미스 대용량이라면 Native SQL — 이식성과 성능의 분기점을 먼저 정해라.