PIT와 PET로 다루는 시간 기반 데이터 조회와 추적

PIT와 PET의 시간 차원 데이터 관리 방식, 조회·복원·감사 추적 활용과 분산 및 클라우드 환경의 구현 고려사항을 정리한다.

2026-08-14 · 최초 발행 2025-05-25

과거 상태와 입력 이력을 분리해 다루는 이유

시간 기반 데이터 관리는 의사결정, 감사, 규제 준수와 연결된다. 단순히 현재 값만 보관하면 특정 시점의 상태를 증명하기 어렵고, 실제 사건이 발생한 때와 시스템에 기록된 때가 달랐을 때도 추적이 복잡해진다.

PIT(Point In Time)와 PET(Point of Entry and Time)는 이 문제를 서로 다른 관점에서 푼다. PIT는 과거의 상태를 조회하거나 복원하는 데 초점을 맞추고, PET는 데이터의 발생 시점과 입력 시점을 함께 남겨 이력과 책임소재를 따라간다.

PIT는 특정 시점의 상태를 되살린다

PIT는 지정한 날짜와 시간을 기준으로 당시 데이터가 어떤 상태였는지 조회하거나 복원하는 기능이다. 시간에 따른 변화 추세를 분석하고, 장애 이후 특정 시점으로 데이터를 되돌리며, 과거 상태를 증명해야 하는 상황에 사용할 수 있다.

구현은 전체 상태를 주기적으로 저장하는 스냅샷 방식, 변경 이력을 시간 순으로 기록하는 변경 로그 방식, 유효 시작·종료 시간을 데이터와 함께 보관하는 시간 차원 테이블 방식으로 나뉜다. 선택한 방식에 따라 변경 이력의 저장량과 조회 방식이 달라진다.

Oracle에서는 Flashback Query로 시점 조회를 구성할 수 있다.

-- Oracle Flashback Query를 사용한 PIT 조회
SELECT * FROM employees
AS OF TIMESTAMP
TO_TIMESTAMP('2023-01-15 14:30:00', 'YYYY-MM-DD HH24:MI:SS');

시간 차원 테이블을 사용하는 SQL Server 조회는 다음과 같다.

-- 시간 차원 테이블을 사용한 PIT 조회
SELECT * FROM employees
WHERE '2023-01-15 14:30:00' BETWEEN valid_from AND COALESCE(valid_to, '9999-12-31');

PET는 사건 시간과 기록 시간을 함께 보관한다

PET는 데이터가 실제로 발생한 시간인 Business Time과 시스템에 들어온 시간인 System Time을 모두 관리한다. 발생 후 늦게 입력된 데이터를 구분할 수 있고, 데이터의 출처와 변경 이력을 추적하며, 감사와 컴플라이언스에서 변경 책임을 확인하는 데 쓸 수 있다.

예를 들어 금융 거래에서는 거래가 발생한 시점과 시스템 입력 시점을 분리해 기록한다.

-- 거래 발생 시점과 시스템 입력 시점 모두 기록
INSERT INTO transactions (
    transaction_id,
    event_time,     -- 거래 발생 시점
    system_time,    -- 시스템 입력 시점
    transaction_type,
    amount,
    user_id
) VALUES (
    1001,
    '2023-05-10 09:15:00',  -- 실제 거래 발생 시점
    CURRENT_TIMESTAMP,      -- 시스템에 입력된 시점
    'DEPOSIT',
    5000.00,
    'USER123'
);

PIT가 단일 시간 차원에서 과거 상태를 확인하는 접근이라면, PET는 발생 시점과 입력 시점이라는 이중 시간 차원을 다룬다. PIT는 데이터 복원과 과거 상태 분석에 적합하고, PET는 감사, 데이터 계보 추적, 지연 입력 처리에 더 직접적으로 쓰인다. PET는 더 많은 메타데이터를 저장하므로 구현 복잡도와 저장 공간 요구도 커진다.

산업 현장에서 시간 차원을 쓰는 방식

금융에서는 PIT로 특정 시점의 계좌 잔액, 결산 시점의 재무 상태, 주가 변동을 확인한다. PET는 거래 시점과 기록 시점의 차이를 관리하고, 지연 거래의 감사 추적과 규제 보고에 사용된다.

의료 영역에서는 특정 시점의 환자 상태와 치료 효과의 시간적 변화를 PIT로 분석할 수 있다. PET는 진단 시점과 기록 시점의 차이, 의료 기록 변경 이력, 임상 연구 데이터의 무결성 관리에 연결된다.

물류와 공급망에서는 PIT가 특정 시점의 재고 상태 확인과 물류 경로 최적화를 위한 과거 데이터 분석을 지원한다. PET는 실제 배송 시점과 시스템 기록 시점을 함께 관리해 공급망 지연 분석, 물류 추적, 책임소재 확인에 활용된다.

조회 성능과 보존 정책을 함께 설계한다

시간 관련 필드에는 효율적인 인덱스를 두고, 필요하면 복합 인덱스로 조회 성능을 높여야 한다. 대용량 데이터는 시간 기반 파티셔닝으로 관리하고, 오래된 데이터는 효율적으로 아카이빙하는 방식을 검토할 수 있다.

저장 공간도 별도 관리 대상이다. 오래된 데이터의 압축 저장, 컬럼 기반 저장을 통한 공간 효율성, 규제 요구사항에 맞춘 보존 기간, 자동화된 아카이빙 및 정리 프로세스가 필요하다.

시간 데이터 자체가 감사 대상이 될 수 있으므로 접근 권한은 세분화해야 한다. 역할 기반 접근 제어를 적용하고, PIT/PET 조회와 변경에 대한 감사 로그를 유지하며, 변경 이력의 불변성을 보장하는 방식이 요구된다.

분산·클라우드 환경에서의 구현

분산 시스템에서는 시간 동기화 메커니즘과 글로벌 트랜잭션 ID, 타임스탬프의 연계를 고려해야 한다. 이벤트 소싱은 모든 상태 변경을 이벤트로 저장한 뒤 특정 시점까지의 이벤트를 재생해 PIT를 구현하는 방법이다.

클라우드 네이티브 환경에서는 이벤트 기반으로 PIT/PET를 구현하고 필요에 따라 자동 스케일링하는 서버리스 아키텍처를 사용할 수 있다. 관리형 데이터베이스 서비스 측면에서는 AWS Aurora의 백트래킹 기능을 PIT 구현에 활용할 수 있으며, Google Spanner의 TrueTime은 정확한 타임스탬프 관리에 활용된다.

ML/AI 모델을 시간 기반 데이터 분석, 이상 탐지, 예측 분석에 연결하는 방향도 가능하다. 블록체인 기술과 결합하면 불변성을 보장하고 스마트 계약으로 시간 기반 데이터 검증을 자동화할 수 있다. 스트림 처리와 통합하면 실시간 분석과 과거 데이터 분석을 함께 다룰 수 있다.

PITPET시간 기반 데이터데이터베이스감사 추적