공통 [FireDAC Skill Sprints] 1. FireDAC 소개
2015.04.01 02:54
엠바카데로에서 FireDAC Skill Sprint 웨비나(1월 23일 ~ 3월 27일: 매주 금요일 10시)를 진행하고 있습니다.
이 글에서는 웨비나 다시보기와 함께 웨비나 일부 내용을 샘플코드와 함께 소개합니다. 하단 온라인 기술 도움말 링크를 통해 더 자세한 내용을 추가학습하시기 바랍니다.
1회차에서는 FireDAC을 소개하고 연결하는 과정으로 진행합니다.
FireDAC 소개
FireDAC은 델파이, C++빌더에서 멀티-디바이스 데이터베이스 애플리케이션을 개발할 수 있는 범용(Universal) 데이터 액세스 컴포넌트입니다.
FireDAC은 서로 다른 기술을 사용해야 하는 다양한 데이터베이스를 제어할 수 있는 통합 API를 제공합니다. 또한 데이터베이스 별 고유 기능을 사용하고, 최적의 성능을 발휘할 수 있는 DBMS 별 네이티브 데이터베이스 드라이버를 지원합니다.
FireDAC을 사용 시 아래의 장점이 있습니다.
- 데이터베이스의 복잡한 상호작용에 신경쓰지 않고 애플리케이션 개발에 집중 할 수 있습니다.
- 모든 주요 RDBMS 환경에 대응하는 풍부한 기능을 갖고 있는 컴포넌트가 준비되어 있습니다.
- 한번 개발된 FireDAC 소스코드는 지원되는 모든종류의 RDBMS와 연결해 재사용 가능합니다.
- 다음 비용절감 효과를 기대 할 수 있습니다.
- DBMS 별 개별 라이브러리 학습에 필요한 시간 단축
- 다양한 데이터베이스를 대상으로 하는 경우 애플리케이션 설계와 개발의 단순화
- 기본 컴포넌트로 별도 외부 라이브러리 구매 비용절감
더 자세한 소개는 데브기어 FireDAC 소개페이지와 FireDAC 기술문서 - Overview를 참고하기 바랍니다.
FireDAC Skill Sprints 동영상과 샘플로 이해하기
2. FireDAC으로 DBMS 사용 내역 추적, 모니터링 하기 >> 바로가기
FireDAC 추적기능을 이용하면 애플리케이션과 데이터베이스 사이의 통신내용을 상세하게 보거나 기록할 수 있습니다. 이 추적 정보에는 이벤트 발생시간, API 호출내역, DB로 전송된 SQL 문, 파라메터와 필드 값, 오류와 경고 등이 기록되어 여러분의 DB 애플리케이션의 문제점을 디버깅하고 해결하는데 유용하게 사용할 수 있습니다.
샘플에서는 데이터 조회(테이블 오픈) 시 애플리케이션과 DBMS의 통신내용을 모니터링 유틸리티(FireDAC Monitor)로 확인하고, DB 애플리케이션 디버깅 시 유용한 메터데이터(DBMS 객체 정보)를 이용해 테이블, 필드, 제너레이터, 스토어드 프로시저 목록을 조회해 봅니다.
3. 캐쉬를 이용한 업데이트와 자동증가필드(Identity) 적용 >> 바로가기
캐쉬 업데이트는 애플리케이션의 메모리 영역(즉, 데이터셋)에 업데이트 내역을 기록하고, DBMS에 한번에 업데이트(또는 일괄취소) 할 수 있는 기능입니다.
캐쉬 업데이트를 사용하면 작업내용을 로컬에서 관리하므로 DBMS와의 트래픽을 줄일 수 있고, 사용자는 통신속도와 관계없이 빠른 작업이 가능합니다. 그리고 작업이력을 확인(변경된 레코드 조회, 변경된 항목의 이전 값 확인 등)하고, 작업 변경취소(마지막 작업 변경취소, 선택한 레코드 변경취소 등)을 FireDAC에서 제공하는 메소드를 이용해 손쉽게 구현할 수 있습니다.
샘플에서는 캐쉬 업데이트를 이용해 조회한 데이터를 메모리 상에서 편집(입력, 수정, 삭제) 후 업데이트 목록 표시, 변경취소, 일괄적용/취소 기능을 구현해 봅니다.
Array DML은 DBMS에 업데이트할 데이터를 배열 형태의 파라메터로 한번에 전송해 아주 빠르게 데이터를 입력할 수 있는 기능입니다.
Array DML을 사용하면 DBMS와 애플리케이션 사이의 통신비용을 줄이고 DBMS에 전송하는 요청 횟수를 현격히 줄입니다. 그 결과 실행 속도를 대폭 향상시킬 수 있습니다.
예를 들면, 1만건의 데이터 입력 시 반복 입력 작업을 트랜젝션으로 묶으면 20배 빨라지고, Array DML을 사용하면 다시 10배가 더 빨라집니다. 샘플을 통해 결과를 직접 확인해 보기 바랍니다.
FireDAC에는 검색옵션, 형식옵션, 업데이트옵션, 리소스옵션, 트랜젝션옵션 등의 수많은 옵션을 제공합니다.
이 글에서는 주요 옵션을 살펴봅니다. 주요 옵션을 살펴보고 필요한 옵션은 상세확인 해 여러분의 애플리케이션을 향상해 보기 바랍니다.
샘플에서는 데이터 지연 조회(DetailDelay), 데이터 페이징 단위 조회(RecsSkip, RecsMax)과 같은 고급 기능을 FireDAC 옵션을 이용해 손쉽게 구현해 봅니다.
커맨드 텍스트 전처리는 SQL 명령을 데이터베이스에 전달하기 전 파라메터를 치환하고, FireDAC 매크로 함수를 DBMS에 맞도록 치환하는 기능입니다.
전처리 기능은 아래 3 종류의 매크로 명령을 제공합니다.
- 매개변수를 확장할 수 있는 대체변수
- 한번 작성 후 다양한 DBMS에서 사용할 수 있는 SQL문 작성하는 이스케이프 시퀀스
- 연결된 DBMS에 따라 조건부로 실행되는 SQL문을 작성하는 조건부 대체
FireDAC의 ETL은 Extract, Transform, Load의 약자로 아래의 역할을 의미합니다.
- Extract(추출) : 같은 종 또는 이기종 데이터 소스로부터 데이터를 추출
- Transform(변환) : 추출한 데이터를 분석용 데이터 형식 또는 입력쿼리로 변환
- Load(로드) : 최종 목적(데이터베이스, 운용 데이터 저장소, 데이터 마트, 또는 데이터 창고)으로 로드
FireDAC ETL로 아래의 기능을 구현할 수 있습니다.(몇가지 예시입니다.)
- Query문으로 조회한 데이터를 엑셀에서 사용할 수 있는 CSV 파일로 내보내기
- 텍스트파일의 데이터를 데이터베이스 테이블로 가져오기
- 데이터베이스에서 다른 데이터베이스로 데이터 이동하기
8. TFDMemTable: 메모리 기반 데이터셋 사용하기 >> 바로가기
TFDMemTable은 메모리 기반 데이터셋입니다. 즉, 데이터베이스 연결 없이 파일 데이터나 코드로 추가한 데이터를 메모리에 올려 데이터셋의 기능(필터링, 정렬 등)을 사용할 수 있습니다.
TFDMemTable은 아래 기능을 할 수 있습니다.
- 디자인타임과 런타임 시 파일 불러오기(Load File), 파일로 내보내기(Save File), 다른 데이터셋의 데이터가져오기(Assign Data) 기능 사용
- 런타임 시 파일과 스트림으로 데이터 내보내기, 불러오기 기능을 사용할 수 있으며, JSON, XML, Binary 포맷 선택 가능
- 멀티티어 애플리케이션(REST 클라이언트, 데이터스냅 등)에서 수신 데이터를 보관하는 데이터셋 역할
- 내부에서 데이터 보관할 시 컬랙션객체(TList, TStringList) 대신 메모리테이블 사용 시 데이터셋의 기능(UI 컨트롤에 데이터바인딩, Local SQL, 필터링, 정렬 등)을 사용해 다양한 기능 손쉽게 구현가능
- Local SQL을 이용해 메모리테이블(데이터셋)에서 쿼리 실행
- ETL 기능으로 다른 데이터소스(텍스트, CSV 등)에서 가져온 데이터 보관
Local SQL은 DB로부터 애플리케이션의 메모리 상으로 가져온 데이터(데이터셋: TDataSet을 상속받은 객체)를 대상으로 다시 SQL 쿼리를 할 수 있는 기능입니다. Local SQL은 아래와 같이 사용할 수 있습니다.
- 여러 이기종 DB들에 대한 쿼리 : 다양한 DB에서 가져온 여러 데이터셋을 대상으로 원하는 데이터 쿼리(조인 가능)
- 인 메모리 데이터베이스 : TFDMemTable은 메모리상에 있는 데이터셋의 역할
- 오프라인 모드 쿼리 : 원격 DB에 연결할 수 없는 경우에도, 이미 가져온 데이터셋을 대상으로 쿼리 실행
- 데이터스냅 클라이언트 쿼리 : 데이터스냅 서버(미들웨어)에서 받아온 데이터셋을 대상으로 쿼리 실행
- 간편한 마이그레이션 : 애플리케이션 내에서 써드파티를 통해 가져온 데이터셋 객체를 대상으로 쿼리 실행
델파이 7 프로젝트를 델파이 XE7으로 마이그레이션하는 작업을 따라하기로 진행합니다. 특히 BDE 컴포넌트를 FireDAC 컴포넌트로 변경하는 작업을 reFind.exe(텍스트 치환도구)를 이용해 일괄변경해 자동화 합니다.
따라하기에는 아래 내용을 익힐 수 있습니다.
- 이전버전 델파이(델파이 7)를 최신버전(델파이 XE7)으로 마이그레이션 작업을 직접 진행해봅니다.
- BDE 기술을 사용하는 프로젝트를 FireDAC 기술로 마이그레이션 해봅니다.
- 마이그레이션의 대부분을 차지하는 컴포넌트 변경과 속성 변경 작업을 변환툴(reFind.exe)을 이용해 작업 시간을 대폭 줄여줍니다.
(reFind.exe는 reFind.exe: 마이그레이션 작업에서 수작업을 줄여주는 도구 글을 통해 알아보기 바랍니다.)