Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[DocWiki 번역] 옵션 설정하기 (FireDAC)


Recommended Posts

Docwiki에 있는 "Setting Options (FireDAC)"를 번역한 글 (번역일: 2022년 3월 15일)

위로 가기: [DocWiki 번역] 연결(connection)을 가지고 작업하기 (FireDAC)

이 글은 옵션 설정이 왜 그리고 얼마나 FireDAC이 유연한 데이터베이스 프레임워크가 되도록 하는 지, 그리고 옵션을 어떻게 사용하는 지를 설명한다. FireDAC에는 옵션이 매우 다양하며, 계층식 옵션 체계로 정돈되어 있다. 옵션 대부분은 기본 설정 그대로 두어도 된다.

목차


주제 (Topics)

주제 설명
[DocWiki 번역] 데이터 타입 맵핑 (FireDAC) FireDAC에는 유연하게 조절할 수 있는 데이터 타입 맵핑 시스템이 있다. 데이터 타입 맵핑을 활용하면, FireDAC으로 마이그레이션하는 작업을 단순화할 수 있고,  데이터 표현을 최적화할 수 있다.  

 

설명 (Description)

FireDAC 옵션은 다섯(5) 그룹으로 정돈되어 있다.

  • FetchOptions(담아오기 옵션) - FetchOptions는 컴포넌트와 물리적 레이어 명령(Command)이 어떻게 DBMS로 부터 데이터를 가져오는 지를 통제한다. 예를 들어, 레코드 전체를 한번에 가져올 수도 있고, 필요할 때 레코드를 가져오도록 할 수도 있다.
  • FormatOptions(포맷 옵션) - FormatOptions는 DBMS 데이터 타입과 FireDAC 데이터 타입이 서로 어떻게 맵핑되는 지를 통제할 수 있다. 예를 들어, 프로그래머는 Oracle의 NUMBER (38) 데이터 타입을 dtBCD 또는 dtInt64로 맵핑할 수 있다. 더 자세한 내용은 [DocWiki 번역] 데이터 타입 맵핑 (FireDAC) 참조
  • UpdateOptions(업데이트 옵션) - UpdateOptions는 FireDAC이 DBMS에게 어떻게 업데이트를 전달하는 지를 통제한다. 예를 들어, FireDAC은 업데이트할 때 테이블에 있는 모든 필드를 업데이트 할 수 있고, 변경된 필드만 업데이트하도록 할 수도 있다.
  • ResourceOptions(리소스 옵션) - ResourceOptions는 시스템 리소스를 어떻게 사용하는 지, 데이터셋을 유지할 것인지 등등을 통제한다. 예를 들어, FireDAC 물리적 레이어 명령(Command)은 비동기로 수행되거나 블럭 단위로 수행될 수 있다.
  • TxOptions(트랜잭션 옵션) - TxOptions는 트랜젝션이 어떻게 수행되는 지를 통제한다. 예를 들어, ReadCommitted 격리 모드로 수행할 수 있다. TxOptions는 옵션 값 상속이 사용되지 않는다는 점에 유의하자.

FireDAC에는 옵션이 매우 많기 때문에 데이터셋(Dataset)이나 명령(Command)마다 각각 설정을 하면 프로그래밍이 복잡해지고 실수를 하기 쉽다. FireDAC은 이런 이슈를 해소하기 위해 "부모-자식 옵션 값 상속" 모델을 도입했다. 부모의 옵션 값을 지정하면, 자식에게 하향 전파된다. 즉, 특정 수준에 명시적으로 할상된 옵션 값이 없으면 자신보다 상위 수준에 있는 값을 취한다. 만약 바로 위에 있는 수준에도 옵션 값이 할당되어 있지 않으면, 결국 최상위 수준의 값을 취하게 된다. FireDAC의 옵션 값 설정 수준은 다음과 같이 3 단계로 되어 있다.

매니저(Manager) 수준이 가장 높은 수준이다. 연결(Connection) 수준은 중간 수준이다. 그리고 명령(Command) / 데이터셋(Dataset) 수준은 가장 낮은 수준이다. 따라서 매니저 또는 연결 옵션을 설정하면 여기에 해당하는 모든 데이터셋(Dataset)에 그 값들이 상속된다. 데이터셋 옵션에 프로그래머가 명시적으로 값을 지정하지 않는 한 그렇다. 

TxxxOptions.AssignedValues 플래그가 이런 상속 체계 통제한다. 어느 수준에서 옵션 값 하나가 변경되면, 이에 대응하는 플래그가 AssignedValues에 포함된다. 옵션 플래그가 포함되지 않은 옵션 값은 자신보다 상위에 있는 수준에서 값을 상속받는다. 옵션 플래그가 AssignedValues에서 빠져서 포함되지 않게 되면, 해당 옵션 값은 다시 자신의 상위에 있는 값을 상속받는다.

이 옵션은 FDExplorer를 사용하여 영속 연결 정의 (persistent connection definition) 안에서 지정될 수 있다. 해당 연결이 설정되고 나면, 해당 옵션 설정이 TFDCustomConnection 옵션에 반영된다.

 

예제 1

데이터 타입 맵핑은, DBMS 타입을 FormatOptions에 정의된 대로 클라이언트 타입으로 맵핑한다. 아래와 같이 설정한 옵션은 해당 연결(Connection)을 사용하는 모든 명령(Command)에 상속된다.

with oConnection.Options.FormatOptions do begin
  OwnMapRules := True;
  MapRules.Clear;
  with MapRules.Add do begin
    PrecMax := 19;
    PrecMin := 4;
    SourceDataType := dtFmtBCD;
    TargetDataType := dtCurrency;
  end;
end;

 

예제 2

데이터 웨어하우스 애플리케이션에서는 고속으로  데이터 가져오기(fetching) 모드 설정을 할 수도 있다. 이때는 매니저(Manager) 수준에서 FetchOptions를 설정한다. 이렇게 하면 이 매니저를 사용하는 모든 연결(Connection)과 그 연결을 사용하는 모든 명령(Command)에 이 옵션이 상속된다.

with FDManager.FetchOptions do begin
  Items := [];
  Cache := [];
  RowsetSize := 1000;
end;

 

기타 자료 (See Also)

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.