본문 바로가기

ABAP 프로그래밍 개념/Architecture of SAP System

2-3. SAP Implementation Overview : Database Server/Relational Database Management System: Database Layer

각 SAP 시스템은 application data, administration data, customizing settings, and ABAP source code를 포함한 전체 데이터 집합이 저장된 중앙 데이터베이스로 구성됩니다. 데이터베이스 레이어는 RDBMS로 구성됩니다.

이전에 언급한 대로 SAP는 SAP HANA, Oracle, MSSQL, IBM Db2, SAP liveCache 및 SAP MaxDB와 같은 다양한 데이터베이스 시스템을 지원합니다. SAP NetWeaver 7.5는 SAP HANA를 최적화하여 SAP HANA를 기본 데이터베이스로 사용하고 SAP HANA에 대한 애플리케이션 최적화를 용이하게 합니다. SAP HANA에 대해서은 추후 글을 통해 다루도록 하겠습니다.

RDBMS를 사용하면 데이터를 여러 테이블에 분산시키고 Foreign Key(외래 키)를 사용하여 테이블을 연결할 수 있습니다. 테이블은 열 (Column : 필드)과 행 (Row : 레코드)으로 구성됩니다. 각 테이블에는 행을 고유하게 식별하는 키가 포함됩니다.

예를 들어, 상품의 세부 정보를 데이터베이스 테이블 TB_ITEM에 저장하려고 합니다. 테이블은 아래 표에 표시된 ITEM_ID, DESCRIPTION, QUANTITY 및 UoM (Unit of Measure) 네 개의 열로 구성됩니다.

ITEM_ID DESCRIPTION QUANTITY UoM
1 연필 10 Box
2 15 PC
3 종이 20 KG

위 표의 각 행은 ITEM_ID 필드로 고유하게 식별될 수 있기 때문에, 우리는 테이블의 키 필드로 ITEM_ID를 유지할 것입니다. 이것은 기본 정보 저장에 대해서는 괜찮아 보입니다. 그러나 SAP 시스템은 다국어를 지원하기 때문에 사용자들은 서로 다른 언어로 된 품목 설명을 보고 싶어합니다. 이 테이블을 다른 언어의 설명을 수용하도록 어떻게 확장할 수 있을 까요? 하나의 방법은 LANGUAGE 필드를 추가하여 다국어로 아래 표와 같이 설명을 유지보수 하는 것입니다.

ITEM_ID LANGUAGE DESCRIPTION QUANTITY UoM
1 English Pensil 10 Box
1 German Bleistift 10 Box
2 English Pen 15 PC
2 German Stift 15 PC
3 English Paper 20 KG
3 German Papier 20 KG

ITEM_ID 필드가 더 이상 고유하지 않습니다. 테이블의 기본 키(Primary Key)는 항상 고유해야 하므로, 이 테이블의 기본 키는 LANGUAGE 필드를 포함하여 확장되어야 합니다. 따라서, Table 2.3의 기본 키는 ITEM_ID와 LANGUAGE 필드의 조합입니다.

ITEM_ID" 필드의 데이터는 개별적으로 n번 반복될 수 있고, "LANGUAGE" 필드의 데이터도 n번 반복될 수 있지만, 이 두 필드의 조합은 항상 고유해야 합니다.

Table 2.3에서 여러 언어를 수용하기 위해 같은 데이터를 여러 번 반복하고 있는 것을 알 수 있습니다. 그러나 더 많은 언어가 추가될수록 중복 데이터가 발생하게 됩니다.만약 설명을 분리하여 별도의 테이블에 유지하고 외래 키를 사용하여 이 테이블과 연결할 수 있다면 어떨까요?

아래 두개의 표는 데이블을 분리하여 외래키로 연결한 예시입니다. 이렇게 테이블을 배열하면 데이터 중복이 피해지며, 이제 외래 키를 통해 테이블을 연결하므로, 상단 테이블의 ITEM_ID 필드를 사용하여 하단 테이블에서 원하는 언어의 설명을 조회할 수 있습니다.

ITEM_ID QUANTITY UoM
1 10 Box
2 15 PC
3 20 KG
ITEM_ID LANGUAGE DESCRIPTION
1 English Pensil
1 German Bleistift
2 English Pen
2 German Stift
3 English Paper
3 German Papier

이것이 SAP 시스템에서 데이터를 모델링하는 방법입니다. 예를 들어, 자재 마스터 데이터는 테이블 MARA에 저장되며, 여러 언어의 자재 설명은 테이블 MAKT에 저장되며, 자재의 플랜트 데이터는 테이블 MARC에 저장됩니다. 이러한 배열을 사용하여 외래 키 개념을 사용하여 자재에 대한 다양한 정보를 가져올 수 있는 다른 테이블을 쿼리할 수 있습니다.

2장 정리

SAP System: Overview of Three Layers

Application Server 에는 자주 액세스되지만 드물게 변경되는 데이터를 저장할 수있는 캐시(cache)처럼 작동하는 버퍼(buffer)라는 특수한 영역이 포함됩니다. 이를 통해 데이터를 로컬 버퍼에서 액세스할 수 있기 때문에 응용 프로그램의 성능을 개선할 수 있습니다. 또한 버퍼는 동일한 정보에 대해 Application Server가 데이터베이스에 반복적으로 액세스하지 않아도 되므로 데이터베이스 및 네트워크 부하를 줄이는 데 도움이됩니다.

데이터가 테이블에서 자주 변경되지 않고 최신 데이터에 대한 액세스가 응용 프로그램에 중요하지 않을 때 데이터를 버퍼링(Buffering)하는 것이 좋습니다. 데이터베이스 테이블에서 어떤 데이터가 변경되면 백그라운드 프로세스가 일정 간격으로 버퍼를 업데이트합니다. 이는 자주 변경되는 테이블을 버퍼링하는 것이 비생산적이라는 것을 의미합니다.

반응형