Skip to main content

Module hot_reload

Module hot_reload 

Source
Expand description

§실시간 사전 업데이트 (Hot Reload) 모듈

무중단 사전 교체, 파일 변경 감지, 버전 관리 기능을 제공합니다.

§주요 기능

  • 파일 변경 감지: notify 크레이트를 통한 자동 감지
  • 무중단 교체: RwLock과 Copy-on-Write 전략
  • 델타 업데이트: 변경분만 적용하여 성능 최적화
  • 버전 관리: 사전 버전 추적 및 롤백 지원
  • 스레드 안전성: 동시 읽기/쓰기 처리

§아키텍처

┌─────────────────────────────────────────┐
│ HotReloadDictionary                     │
│  - RwLock<VersionedDictionary>          │
│  - FileWatcher (notify)                 │
└─────────────────────────────────────────┘
         │                    │
         ▼                    ▼
┌─────────────────┐  ┌────────────────┐
│ System Dict     │  │ User Dict      │
│ (Read-only)     │  │ (Mutable)      │
└─────────────────┘  └────────────────┘

§사용 예제

use mecab_ko_dict::hot_reload::{HotReloadDictionary, DeltaUpdate, DeltaUpdateBuilder};

// 핫 리로드 사전 생성
let dict = HotReloadDictionary::new("/path/to/dict").unwrap();

// 실시간 엔트리 추가
dict.add_entry("딥러닝", "NNG", -1000i16, None).unwrap();

// 델타 업데이트 적용
let delta = DeltaUpdateBuilder::new()
    .add("머신러닝", "NNG", -1000)
    .add("자연어처리", "NNG", -1000)
    .build();
dict.apply_delta(delta).unwrap();

// 버전 관리
let version = dict.current_version();
dict.rollback(version - 1).unwrap();

§성능 특성

  • 읽기: Lock contention 최소화 (RwLock)
  • 쓰기: Copy-on-Write로 기존 읽기 영향 없음
  • 델타 업데이트: O(변경분) 복잡도
  • 메모리: 버전당 증분 메모리 사용

Structs§

DeltaUpdate
델타 업데이트
DeltaUpdateBuilder
델타 업데이트 빌더
EntryChange
엔트리 변경 정보
HotReloadDictionary
핫 리로드 가능한 사전
VersionInfo
버전 정보

Type Aliases§

Version
사전 버전