DB Cache 사용 및 활용
독점적 데이터 불러오기 및 새 데이터 추가 방법
독점적 불러오기 메서드는 Proud.CDbCacheClient2.RequestExclusiveLoadData 입니다. 로딩할 데이터를 검색하기 위해 인자 fieldName과 cmpValue에 찾을 조건을 넣어야 합니다.
사용 예시 입니다.
Proud.CDbCacheClient2.RequestExclusiveLoadNewData 메서드도 마찬가지로 독점적 불러오기 함수지만 RootTable 에 데이터를 추가한 뒤 바로 쓰실 때 사용합니다.
사용 예시 입니다.
일방적 데이터 변경하기
Proud.CDbCacheClient2.UnilateralAddData
Proud.CDbCacheClient2.UnilateralUpdateData
Proud.CDbCacheClient2.UnilateralRemoveData
이 메서드들은 DB cache 메모리에 변경을 반영하고 추후 DBMS에 비동기로 실제 기록을 하기에 호출 즉시 리턴합니다. 또한 응답 메서드 콜백이 없습니다.
DBMS에 먼저 반영되는 요청 응답형 메서드 및 blocked 메서드 사용
DBMS 에 먼저 반영되는 요청 응답형 메서드 및 blocked 메서드 사용은 요청 응답형 데이터 변경 을 위한 메서드 입니다. 호출 즉시 리턴하며, 변경 사항은 실제 DBMS에 기록이 완료된 후에야 DB cache의 메모리에도 반영됩니다.
메서드 호출 | 결과 콜백 |
---|---|
Proud.CDbCacheClient2.RequestAddData | Proud.IDbCacheClientDelegate2.OnAddDataFailed |
Proud.IDbCacheClientDelegate2.OnAddDataSuccess | |
Proud.CDbCacheClient2.RequestUpdateData | Proud.IDbCacheClientDelegate2.OnUpdateDataFailed |
Proud.IDbCacheClientDelegate2.OnUpdateDataSuccess | |
Proud.CDbCacheClient2.RequestRemoveData | Proud.IDbCacheClientDelegate2.OnRemoveDataFailed |
Proud.IDbCacheClientDelegate2.OnRemoveDataSuccess |
만약 요청 응답형이 아닌 blocked 호출을 원한다면 이들 메서드를 사용하십시오.
Proud.CDbCacheClient2.BlockedAddData
Proud.CDbCacheClient2.BlockedUpdateData
Proud.CDbCacheClient2.BlockedRemoveData
요청 응답형 SessionGuid
독점 Client 들이 각각 한 개의 Session을 가지게 되고, DB Cache Client는 각각의 Session들을 구분하기 위해 Guid 값을 사용합니다. 요청 시 Output 파라미터로 SessionGuid 값을 발급받고, 응답 Event의 CCallbackArgs::m_sessionGuid로 발급 받았던 값을 받게 됩니다. outSessionGuid를 저장했다가 비교하여 요청한 session을 확인할 수 있습니다.
요청
응답
요청의 outSessionGuid 는 응답의 args.m_sessionGuid 와 같습니다.
비독점적 데이터 접근 방법
비독점적 접근을 허락하기 위해 Proud.CDbCacheServer2StartParameter.m_allowNonExclusiveAccess를 설정해야 합니다.
메서드 호출 | 결과 콜백 |
---|---|
Proud.CDbCacheClient2.RequestNonExclusiveSnapshotData | Proud.IDbCacheClientDelegate2.OnNonExclusiveSnapshotDataFailed |
Proud.IDbCacheClientDelegate2.OnNonExclusiveSnapshotDataSuccess | |
Proud.CDbCacheClient2.RequestNonExclusiveAddData | Proud.IDbCacheClientDelegate2.OnNonExclusiveAddDataAck |
Proud.CDbCacheClient2.RequestNonExclusiveRemoveData | Proud.IDbCacheClientDelegate2.OnNonExclusiveRemoveDataAck |
Proud.CDbCacheClient2.RequestNonExclusiveSetValueIf | Proud.IDbCacheClientDelegate2.OnNonExclusiveSetValueIfFailed |
Proud.IDbCacheClientDelegate2.OnNonExclusiveSetValueIfSuccess | |
Proud.CDbCacheClient2.RequestNonExclusiveModifyValue | Proud.IDbCacheClientDelegate2.OnNonExclusiveModifyValueFailed |
Proud.IDbCacheClientDelegate2.OnNonExclusiveModifyValueSuccess |
비독점적 데이터 변경을 성공하면 해당 데이터의 변경사항이 독점적 로딩했던 DB cache client 에 신고됩니다. 신고를 위해 아래의 메서드가 콜백됩니다.
Proud.IDbCacheClientDelegate2.OnSomeoneAddData
Proud.IDbCacheClientDelegate2.OnSomeoneRemoveData
Proud.IDbCacheClientDelegate2.OnSomeoneModifyValue
Proud.IDbCacheClientDelegate2.OnSomeoneSetValue
쉽게 볼 수 있도록 각 요청과 응답 관계를 묶어 보면 다음과 같습니다.
Proud.CDbCacheClient2.RequestNonExclusiveSnapshotData : Snapshot 얻어오기
Proud.CDbCacheClient2.RequestNonExclusiveAddData : 데이터 추가하기
Proud.CDbCacheClient2.RequestNonExclusiveRemoveData : 데이터 제거하기
Proud.CDbCacheClient2.RequestNonExclusiveModifyValue : 데이터에 특정한 연산을 시킵니다.(+, -, *, /)
Proud.CDbCacheClient2.RequestNonExclusiveSetValueIf : 두 값을 비교하여 저장하도록요청합니다.
DB cache 사용 시 주의사항
일방형과 요청 응답형(독점 Data 요청 응답형 & Block형 & 비독점 데이터 접근) 혼용 시 주의사항입니다.
요청 응답형 메서드가 사용되는 동안 일방형 메서드를 사용하게 되면 Proud.IDbCacheClientDelegate2.OnAccessError 가 콜백될 수 있습니다.
변경한 Data에 대한 응답을 받지 못한 상태에서 일방형 메서드를 사용하게 되면 잘못된 Data가 들어갈 수 있습니다.
활용
DB Cache 활용법Last updated