CDS 뷰 엔티티와 AMDP: 언제 DB에서 계산하고 언제 ABAP SQL로 충분한가
3줄 요약
CDS 뷰 엔티티는 DB(SAP HANA)에서 계산과 조인을 처리하는 데이터 모델이고, ABAP SQL
SELECT로 읽어요.AMDP는 ABAP 클래스 안에 SQLScript로 DB 프로시저/함수를 쓰고 HANA 에서만 실행하는 방식이에요.
치트시트는 ABAP SQL로 같은 일을 할 수 있으면 AMDP를 권하지 않아요. CDS로 안 되는 경우의 선택지로 보는 게 맞아요.
어떤 상황에서 쓰나요
데이터를 조회하고 계산할 때 ABAP SQL만으로 충분한지, CDS나 AMDP가 필요한지 고민하게 돼요. 이번 글에서는 CDS 뷰 엔티티와 AMDP의 역할을 나누어 알아보고, 각 기술을 선택할 때 확인할 조건을 살펴봐요.
계산을 DB로 옮기면 필요한 결과만 애플리케이션으로 가져오는 구조를 만들 수 있습니다. 아래 그림은 처리 위치의 차이를 보여 주며, CDS나 AMDP를 쓴다고 항상 더 빨라진다는 뜻은 아닙니다.
핵심 내용
CDS 뷰 엔티티
CDS(Core Data Services)는 AS ABAP의 표준 데이터베이스 위에서 데이터의 의미와 관계를 표현하는 데이터 모델을 정의하고 쓰는 기반이에요.
치트시트의 CDS 편은 짧아요. 예제 CDS 아티팩트의 목록을 안내하고, 거기서 볼 수 있는 기능은 다음과 같아요.
입력 파라미터, 데이터 소스의 필드 지정, 타입 있는/없는 리터럴, 세션 변수
식: 캐스트, 재사용, 산술,
CASE, 논리식내장 함수: 숫자, 문자열,
coalesce, 날짜·시간집계 표현식, 조인(내부, 왼쪽/오른쪽 외부, 크로스), 연관(association)
예제 뷰는 문법을 보여 주는 용도이고 CDS 뷰 설계의 모범이 아니라고 스스로 밝혀요.
읽는 방법은 ABAP SQL
SELECT로 CDS 뷰 엔티티에서 읽는 것이에요(ABAP SQL 연재 참고). 코드 푸시다운(복잡한 계산과 조인을 DB로 내려보내기)은 성능 체크리스트 글에도 나와요.
AMDP (ABAP Managed Database Procedures)
DB 프로시저(저장 프로시저)와 DB 함수를 클래스 기반으로 관리하고 호출하는 프레임워크예요. 구현은 DB 전용 언어로 쓰는데, 현재는 SAP HANA의 SQLScript만 지원해요.
AMDP 클래스는
IF_AMDP_MARKER_HDB인터페이스를 구현해야 하고, 일반 메서드와 AMDP 메서드가 섞여도 돼요. 선언부만 봐서는 AMDP 메서드를 구분할 수 없어요(예외 있음).프레임워크가 프로시저/함수를 DB에 복제하고, 메서드 호출은 DB로 전달돼요. SQLScript 코드는 AS ABAP가 아니라 HANA 에서만 실행돼요.
프로시저 선언의 특징: 매개변수는
VALUE(...)로 값 전달만 가능, 제네릭 타입 불가, 타입은 기본 데이터 타입이나 구조체 줄 타입의 테이블(컴포넌트는 기본 타입만),RETURNING불가, 선택 매개변수는 입력만 가능.구현부:
METHOD name BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING db_object.이고 본문이 비면 안 돼요.
METHOD amdp_meth
BY DATABASE PROCEDURE
FOR HDB
LANGUAGE SQLSCRIPT
OPTIONS READ-ONLY
USING db_object.
" SQLScript 코드
ENDMETHOD.AMDP 함수: 스칼라(단일 값)와 테이블 함수가 있고, CDS 테이블 함수를 AMDP 메서드로 구현할 수도 있어요.
치트시트의 권고: ABAP SQL로 같은 작업을 할 수 있다면 AMDP 사용은 권장하지 않아요. 또 AMDP 클래스는 ADT 에서만 편집할 수 있어요.
클라우드용 ABAP 에서의 AMDP
읽기만 허용돼서
OPTIONS READ-ONLY가 필수이고, SQLScript만 쓸 수 있고, 접근하는 데이터 소스는 클라우드용 ABAP에 릴리스된 것이어야 해요.ABAP SQL은 현재 클라이언트를 암묵적으로 처리하지만 네이티브 SQL(AMDP)은 그렇지 않아요. 그래서 AMDP는 클라이언트 안전(client-safe) 해야 하고, 한 클라이언트 데이터만 접근하거나 클라이언트 독립인 소스만 써야 해요.
USING목록의 객체도 모두 클라이언트 안전이어야 하고, 이를 위한 추가 구문과 주석이 있어요.
주의할 점
치트시트는 CDS와 AMDP의 성능을 비교하지 않아요. "CDS가 더 빠르다" 같은 말은 이 자료에서 확인한 내용이 아니에요. 선택은 데이터 크기와 측정으로 판단하세요.
AMDP는 HANA 전제이고 SQLScript 지식이 필요해요. 기존 시스템이 HANA가 아니면 쓸 수 없어요.
클라이언트 안전 관련 구체적인 추가 구문(
AMDP OPTIONS, 주석)은 이 글에서 다루지 않았어요. 치트시트의 해당 절을 보세요.치트시트는 계속 갱신되는 문서예요. AMDP 편의 첫 공개는 2022년 12월이고, 제가 읽은 판은 2026년 10월 기준이에요. 이 글은 읽고 정리한 것이고 예제를 직접 실행해 보지는 않았어요.
원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/12_AMDP.md
출처와 이용 안내
원문: ABAP Cheat Sheets - ABAP Managed Database Procedures AMDP and CDS View Entities · 작성자 SAP SE and contributors SAP-samples · 작성일 2022-12-30 · 기준 릴리스에 따라 다름 SAP HANA 데이터베이스 전제 · 확인일 2026-10-25
이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.
원문은 Apache-2.0 라이선스(https://www.apache.org/licenses/LICENSE-2.0)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.
설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.
SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.
댓글 0
아직 댓글이 없어요.
로그인하고 댓글 쓰기