흥미로운 질문; 당신은 보통 그것을 디자인으로 보지 않습니다. 희미하게 유사한 기술을 사용하여 기록을 기록하는 프로그램이 있지만 이진 형식을 사용합니다. '로그 파일'에는 네 가지 부분이 있으며 모두 기계 중립 형식으로 배치됩니다.
- 사용 된 목록 및 비어있는 목록의 매직 번호 및 (최대) 항목 수, 다음 히스토리 항목의 순서 번호, 사용 된 목록의 실제 항목 수, 사용 가능한 목록의 실제 항목 수를 포함하는 헤더 , 파일 길이 (각각 4 바이트)입니다.
- 사용 된 목록, 각 항목은 오프셋과 길이 (각 항목의 각 부분에 대해 4 바이트)를 제공합니다.
- 사용 가능한 목록, 각 항목은 사용 된 목록 항목과 유사합니다.
- 메인 데이터, 각 히스토리 레코드는 널 종결 자 바이트로 종료 된 연속적인 바이트 세트로 구성됩니다.
새 레코드가 할당 될 때 사용 가능 목록에 공간이 있으면 해당 항목을 덮어 씁니다 (모두 사용하지 않아도 됨-이 경우 조각이 사용 가능 목록에 남아 있음). 사용 가능 목록에 공간이 없으면 끝에 새 공간이 할당됩니다. 오래된 레코드가 회전하면 해당 공간이 사용 가능한 목록으로 이동하고 인접한 사용 가능한 레코드와 통합됩니다. 레코드를 여러 행으로 분산시킬 수 있도록 SQL 문을 처리하도록 설계되었습니다. 이 코드는 지정된 수의 레코드에서 작동합니다. 파일 자체의 크기를 제한하지는 않습니다 (그러나 그렇게하기는 어렵지 않습니다).
주요 코드 히스토리 코드는 history.c와 history.h라는 두 개의 파일에 있으며, SQLCMD 프로그램 (Microsoft가 아닌 내 버전, Microsoft보다 10 년 이상 전에 존재 했음)의 소스에서 다운로드 할 수 있습니다. International Informix 사용자 그룹의 소프트웨어 아카이브 . 히스토리 파일 덤프 프로그램 (histdump.c)과 히스토리 테스터 (histtest.ec-ESQL / C라고 주장하지만 실제로는 C 코드 임)가 호출하는 지원 함수 중 하나는 일부 Informix ESQL / C를 사용합니다. 라이브러리 기능). Informix ESQL / C를 사용하지 않고 실험하고 싶다면 저에게 연락하십시오-내 프로파일을 참조하십시오. 디자인 환경 밖에서 histtest를 컴파일하기 위해 몇 가지 사소한 변경 사항이 있으며 makefile이 필요합니다.