엠바카데로에서 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 동영상과 샘플로 이해하기 시리즈를 통해 확인해 보시기 바랍니다.

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문을 작성하는 조건부 대체 
 
샘플에서는 매크로 대체변수를 이용해 데이터 탐색기를 만들고, 이스케이프 시퀀스로 작성된 통합 SQL문이 실제 DBMS에 전달 시 어떻게 변환되는지 확인해 봅니다.

FireDAC의 ETL은 Extract, Transform, Load의 약자로 아래의 역할을 의미합니다. 

  • Extract(추출) : 같은 종 또는 이기종 데이터 소스로부터 데이터를 추출 
  • Transform(변환) : 추출한 데이터를 분석용 데이터 형식 또는 입력쿼리로 변환
  • Load(로드) : 최종 목적(데이터베이스, 운용 데이터 저장소, 데이터 마트, 또는 데이터 창고)으로 로드 

FireDAC ETL로 아래의 기능을 구현할 수 있습니다.(몇가지 예시입니다.) 

  • Query문으로 조회한 데이터를 엑셀에서 사용할 수 있는 CSV 파일로 내보내기
  • 텍스트파일의 데이터를 데이터베이스 테이블로 가져오기
  • 데이터베이스에서 다른 데이터베이스로 데이터 이동하기
 
샘플에서는 위 3가지 기능을 직접구현해 봅니다. 컴포넌트 구성과 컴포넌트 속성을 참고할 수 있습니다.

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에 연결할 수 없는 경우에도, 이미 가져온 데이터셋을 대상으로 쿼리 실행 
  • 데이터스냅 클라이언트 쿼리 : 데이터스냅 서버(미들웨어)에서 받아온 데이터셋을 대상으로 쿼리 실행 
  • 간편한 마이그레이션 : 애플리케이션 내에서 써드파티를 통해 가져온 데이터셋 객체를 대상으로 쿼리 실행
샘플에서는 Local SQL을 이용해 dbExpress, REST Client, 메모리테이블 등 총 5종류의 이기종의 데이터셋을 조인한 데이터를 그리드에 출력합니다.

 

델파이 7 프로젝트를 델파이 XE7으로 마이그레이션하는 작업을 따라하기로 진행합니다. 특히 BDE 컴포넌트를 FireDAC 컴포넌트로 변경하는 작업을 reFind.exe(텍스트 치환도구)를 이용해 일괄변경해 자동화 합니다. 

따라하기에는 아래 내용을 익힐 수 있습니다.

  • 이전버전 델파이(델파이 7)를 최신버전(델파이 XE7)으로 마이그레이션 작업을 직접 진행해봅니다.
  • BDE 기술을 사용하는 프로젝트를 FireDAC 기술로 마이그레이션 해봅니다.
  • 마이그레이션의 대부분을 차지하는 컴포넌트 변경과 속성 변경 작업을 변환툴(reFind.exe)을 이용해 작업 시간을 대폭 줄여줍니다.
    (reFind.exe는 reFind.exe: 마이그레이션 작업에서 수작업을 줄여주는 도구 글을 통해 알아보기 바랍니다.)
 

관련링크


FireDAC Skill Sprints 관련 글


번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14354
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13021
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15529
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21047
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22296
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17929
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38219
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173732
483 [XE8] 네이티브 iOS 컨트롤 지원 Humphery 2015.04.13 813
482 [XE8] iOS 64bit 앱개발과 유니버설(armv7 + arm64) 앱개발 [1] Humphery 2015.04.13 1383
481 [XE8] Android 단말기 연결안될때 SDK 확인 및 설치 Humphery 2015.04.11 1961
480 reFind.exe: 마이그레이션 작업에서 수작업을 줄여주는 도구 Humphery 2015.04.09 3948
479 모바일 앱 라이프사이클 이벤트 처리하기 Humphery 2015.04.09 1557
478 모바일 앱 라이프 사이클 이벤트 처리하기(앱 완전 구동 후 실행하기) [1] Humphery 2015.04.09 940
477 웹에서 어플리케이션 구동하기(ActiveX 사용않고) Humphery 2015.04.09 1423
476 iOS 64bit 배포 시 ITMS-90092 오류 대응 [1] file Humphery 2015.04.09 1552
475 [무료 세미나] 초대합니다! RAD Studio XE8 출시 세미나!(서울&대구) 관리자 2015.04.08 3706
474 [FireDAC Skill Sprints] 8. TFDMemTable: 메모리 기반 데이터셋 사용하기 Humphery 2015.04.06 2467
473 [FireDAC Skill Sprints] 9. LocalSQL: DB에서 가져온 데이터(데이터셋)를 대상으로 다시 SQL쿼리 실행하기 Humphery 2015.04.01 1882
472 [FireDAC Skill Sprints] 7. FireDAC ETL: 데이터 내보내기, 가져오기 기능 구현하기 Humphery 2015.04.01 2108
» [FireDAC Skill Sprints] 1. FireDAC 소개 험프리 2015.04.01 1572
470 [다음 버전 정보] 비콘(Beacon)으로 접근감지하기 Humphery 2015.03.26 2790
469 "모바일 앱" 개발 또는 유지관리, 데브기어와 해결하세요! file 관리자 2015.03.26 12723
468 최신 업데이트와 패치정보 확인하는 방법 file Humphery 2015.03.26 856
467 이 달의 기술자료 - 2015년 04월 험프리 2015.03.26 5669
466 [다음 버전 정보] iOS 용 64비트 앱 만들고 배포하기 file Humphery 2015.03.25 1087
465 [따라하기] FireDAC으로 오라클(Oracle) DB와 연결하기 험프리 2015.03.24 3025
464 아이들이 재미있어 할만한 델파이(파이어몽키) 프로젝트 동영상 따라하기 Humphery 2015.03.24 1160