KR101471055B1 - 파일 관리 방법 - Google Patents

파일 관리 방법 Download PDF

Info

Publication number
KR101471055B1
KR101471055B1 KR1020097016865A KR20097016865A KR101471055B1 KR 101471055 B1 KR101471055 B1 KR 101471055B1 KR 1020097016865 A KR1020097016865 A KR 1020097016865A KR 20097016865 A KR20097016865 A KR 20097016865A KR 101471055 B1 KR101471055 B1 KR 101471055B1
Authority
KR
South Korea
Prior art keywords
file
data file
data
function
level
Prior art date
Application number
KR1020097016865A
Other languages
English (en)
Other versions
KR20090116743A (ko
Inventor
알렉시스 타마스
아마우리 그랭베르
Original Assignee
에스떼제 엥떼락티브
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스떼제 엥떼락티브 filed Critical 에스떼제 엥떼락티브
Publication of KR20090116743A publication Critical patent/KR20090116743A/ko
Application granted granted Critical
Publication of KR101471055B1 publication Critical patent/KR101471055B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files

Abstract

본 발명은, 각각 N개의 디렉토리(directory)를 가지고 M은 1보다 큰 실수인 M개의 레벨(level)을 가진 디렉토리의 트리를 생성하는 단계를 포함하는 데이터 파일의 베이스(base)를 조직화하기 위한 첫 번째 단계와; 데이터 파일을 기록하기 위한 단계로서, 해쉬 함수(hash function)를 기록될 데이터 파일(Fi)의 식별자(identifier)에 적용하는 단계, 상기 적용 단계의 결과에 따라 복수의 레벨의 트리 내에서 목적 디렉토리(destination directory)(Rdi)의 경로(path)를 결정하는 단계 및 데이터 파일의 식별자에 의존하는 위치에서, 상기 해쉬 함수에 의해 결정된 상기 디렉토리(Rdi)에 데이터 파일을 기록하는 단계를 포함하는 데이터 파일을 기록하기 위한 단계; 및 데이터 파일을 판독하기 위한 단계로서, 동일한 해쉬 함수를 판독될 데이터 파일(Fj)의 식별자에 적용하는 단계, 상기 적용 단계의 결과에 따라 트리 내에서 목표 디렉토리(target directory)(Rcj)의 경로를 결정하는 단계, 및 데이터 파일의 식별자에 의존하는 위치에서, 상기 해쉬 함수에 의해 결정된 상기 디렉토리(Rcj)에서 데이터 파일을 판독하는 단계를 포함하는 데이터 파일을 판독하기 위한 단계를 포함하는 것을 특징으로 하는 파일 관리 방법에 관한 것이다.
데이터 파일, 파일 관리, 해쉬 함수, 디렉토리, 트리

Description

파일 관리 방법{FILE MANAGEMENT METHOD}
본 발명은 디지털 파일의 관리 분야, 좀더 자세하게는 기록 매체 상에서 디지털 파일의 기록, 판독 및 수정에 관한 것이다. 좀더 정확하게는, 파일 시스템 특히, 컴퓨터 운영 시스템과 상호 작용하는 데이터 파일 관리를 위한 방법 및 시스템에 관한 것이다.
보통, 새로운 데이터 파일은 예컨대, 하드 디스크와 같은 메모리 내의 위치에 메모리 공간(memory space)의 가용성(availability)에 따라 기록된다. 하드 디스크 상에 기록하는 경우, 최근의 데이터가 포맷 시에 초기화된 블록 내에서 조직화된다. 이러한 블록들은 포맷 시에 메모리의 물리적 섹터(sector) 상에 분배된다.
컴퓨터 상에서 데이터 파일의 관리는 컴퓨터 운영 시스템의 파일 시스템에 의해 수행된다.
운영 시스템의 파일 시스템은 기록 매체 상의 하나 이상의 파티션(partition)을 이용한다. 파티션은 임의의 데이터 파일을 기록하기 위한 기록 공간 및 기록 공간의 특성(characteristic) 특히, 기록 공간 내의 파일들의 주소가 기록되는 인덱싱(indexing) 공간을 포함한다.
어떤 파일들은, 데이터 파일에 그리고 동일 파이션에 속한 디렉토 리(directory)와 관련된 특성의 리스트들을 함께 분류(group)한 디렉토리들을 포함한다.
큰 기록 용량을 가진 예컨대, 수 기가바이트의 기록 매체에 있어서, 하나의 동일한 디렉토리 내에서 기록, 판독 또는 수정될 데이터 파일의 숫자가 커질 경우, 파일 시스템의 인덱싱 시스템의 성능은 떨어진다. 이는 처리되어야 할 매우 많은 수의 발생(occurrence)을 가지는 리스트를 포함하는 파일의 조직 즉, 디렉토리는, 데이터의 숫자가 수 만에 달하는 경우, 파일에의 접속 시간(access time)을 엄청나게 증가시킨다. 이러한 성능 감소는 파일의 단편화(斷片化, fragmentation) 즉, 데이터 파일의 이름을 바꿔야(rename) 할 때나 삭제할 때에 발생하는 디렉토리에 의해 증가된다.
리눅스 EXT3 시스템(Linux EXT3 system)을 통해 알려진 다른 조직화 모드는 B-트리(tree) 타입(type)의 내부(internal) 인덱싱 시스템 및, 수많은 데이터 파일을 포함하는 디렉토리 내의 검색을 가속화하기 위해, 각 데이터 파일에 대하여, 해쉬 함수(hash function)의 결과로부터의 데이터 파일의 이름의 다이제스트(digest)의 계산을 포함하는 파일의 조직 즉, 디렉토리를 제안한다. 이러한 해결책은 동일 디렉토리 내의 수십만의 데이터 파일을 사용할 수 있게 한다. 하지만, 특정 임계값(threshold)을 넘어서면, 해쉬 함수의 한계는, 개별 이름을 가지는 두 개의 데이터 파일에 대해 동일한 다이제스트를 할당하게 되는 충돌(collision)을 더 이상 피할 수 없게 한다. EXT3 파일 시스템에 있어서, 이러한 한계는 리눅스 2.6 커널(Linux 2.6 kernel) 버전에서, 동일 디렉토리 내에 데이터 파일의 숫자가 약 500,000에 이르게 되면서 발생한다.
종래 기술에서, 파일 서버를 기술하고, 처리 과정을 간략화하기 위한 목적의 파일 참조(consultation) 방법을 제안하는 미국 특허 US 5742817호가 알려져 있다. 이 문서는 파일 시스템에 의해 자동적으로 귀속(attribute)되는 INODE 식별(identification)의 처리를 통해 파일에의 접속을 가속화하는 것을 제안한다. 이러한 처리는 이러한 식별자(identifier)로부터 파일 시스템 내의 서브-디렉토리(sub-directory)에 대응하는 세 개의 16진(hexadecimal) 데이터 아이템(item)을 추출하는 단계를 포함한다.
미국 특허 출원 US 2004/0236761호는 일련의 디렉토리 및 서브-디렉토리내에 파일을 기록하는 시스템을 기술한다. 트리의 마지막 레벨(level)에서, 파일이 기록된 "해쉬 슬롯(HASH SLOT)" 서브-디렉토리를 결정하기 위하여, 상기 파일 이름에 의존하는 다이제스트를 계산하는 단계를 포함하는 처리가 수행된다.
달리 말하면, 메모리 공간은 재래식(conventional) 트리 형태로 조직화되고, 트리의 마지막 레벨에서, 처리는 단일 레벨의 세트(set)내에서 서브-디렉토리를 결정한다.
이러한 해결책은 기록될 수 있는 파일의 수를 제한한다. 서브-디렉토리의 수는 파일 시스템의 처리 모드에 의해 제한된다. 예컨대, 유닉스(UNIX) 타입의 파일 시스템에 있어서 65,536으로 제한된다.
더욱이, 동일한 한계는 상기 서브-디렉토리 내의 파일의 수에도 역시 적용된다.
요약하면, 용량이 제한되고, 용량을 완전히 사용하기 위해서는, 이러한 "방탕자" 같은("rake"-like) 단일 레벨의 서브-디렉토리 내에서 파일 시스템의 수행을 제한하는 서브-디렉토리의 수를 최대화할 필요가 있다.
본 발명의 목적은, 파일 시스템에 의해 데이터 파일의 이름 상에서 수행되는 처리 연산에 의해 제한되기 보다는, 메모리 내의 가용 용량에 의해 오로지 제한되는 다수의 데이터 파일을 이용할 수 있는 강력하고 빠른 파일 관리 방법을 제안함으로써, 이러한 결점을 개선하는데 있다. 따라서 본 발명에 따른 해결책은 용량이 큰 기록 메모리를 사용하는데 있어서, 용량에 제한되지 않는다. 유일한 제한은, 운영 시스템에 의해 제공되는 운영 모드 보다는 이러한 메모리들의 물리적 용량이다. 이는, 파일 서버와 같은 어플리케이션(application)에 있어서, 매우 많은 수의 데이터 파일을 관리할 수 있게 한다.
가장 포괄적인 관점에서, 본 발명은,
각각 N개의 디렉토리를 가지고 M은 1보다 큰 실수인 M개의 레벨을 가진 디렉토리의 트리를 생성하는 단계를 포함하는 데이터 파일의 베이스(base)를 조직화하기 위한 첫 번째 단계;
데이터 파일을 기록하기 위한 단계로서,
- 해쉬 함수를 기록될 데이터 파일(Fi)의 식별자에 적용하는 단계;
- 상기 적용 단계의 결과에 따라 복수의 레벨의 트리 내에서 목적 디렉토리(destination directory)(Rdi)의 경로(path)를 결정하는 단계; 및
- 데이터 파일의 식별자에 의존하는 위치에서, 상기 해쉬 함수에 의해 결정된 상기 디렉토리(Rdi)에 데이터 파일을 기록하는 단계를 포함하는 데이터 파일을 기록하기 위한 단계; 및
데이터 파일을 판독하기 위한 단계로서,
- 동일한 해쉬 함수를 판독될 데이터 파일(Fj)의 식별자에 적용하는 단계;
- 상기 적용 단계의 결과에 따라 트리 내에서 목표 디렉토리(target directory)(Rcj)의 경로(path)를 결정하는 단계; 및
- 데이터 파일의 식별자에 의존하는 위치에서, 상기 해쉬 함수에 의해 결정된 상기 디렉토리(Rcj)에서 데이터 파일을 판독하는 단계를 포함하는 데이터 파일을 판독하기 위한 단계를 포함하는 것을 특징으로 하는 파일 관리 방법에 관한 것이다.
저장 유닛(storage unit)을 동시에 이용하고 성능(접속 속도 및/또는 메모리 용량)을 향상 시키기 위하여, 일 특정 실시예에 따르면, 본 발명은, 상기 파일 관리 방법에 있어서, 데이터 파일은 Q개 이상의 저장 유닛에 분배되고, 각 저장 유닛은 N개의 디렉토리 중에서 P개의 디렉토리 레벨에 대응되는 것을 특징으로 하는 파일 관리 방법에 관한 것이다.
미국 특허 출원 US 2004/0236761호의 내용과 대조적으로, 이러한 해결책은 트리의 각 레벨에서 디렉토리의 수를 제한하는 결과를 낳고, 이는 성능 특히, 2차원을 가진 트리 내의 데이터 파일로의 접속 속도를 향상시키며, 거의 무제한의 수의 데이터 파일이 기록되도록 할 수 있다. 한계는 파일 시스템의 한계에 더 이상 의존하지 않고, 저장 매체의 물리적 용량에만 의존하게 된다.
종래 기술의 해결책과 대조적으로, 본 발명은 해쉬 함수를 적용함으로써, 복수의 레벨을 가진 트리 내에 경로를 귀속하고, 주어진 디렉토리 내에 위치를 귀속하지 않는다. 마지막 레벨의 서브-디렉토리 내의 위치는 해쉬 함수에 의해 귀속되지 않고, 데이터 파일의 식별자와 관련된 이름에 의해 귀속된다.
유리하게는, N은 16과 같고, 해쉬 함수는 SHA-1 함수이다.
파일 관리의 추가적인 문제점은 두 개의 어플리케이션에 의한 동일한 데이터 파일로의 동시 접속의 경우 데이터 완전성(integrity)의 보호에 관한 것이다.
운영 시스템의 대다수에 있어서, 파일 시스템의 레벨에서 데이터 파일의 잠금(lock)을 속행할 수 있고, 기록 또는 판독되는 과정에서 주어진 순간에 데이터 파일로의 접속을 방지할 수 있다고 알려져 있다. 이러한 해결책들은 일반적으로 메모리에 기존의 잠금 테이블(locking table)로부터의 파일 시스템에 의해 관리된다. 이러한 해결책의 결점은, 네트워크를 통한 파일로의 접속의 경우, 복수의 원격 컴퓨터에 의해 동일한 파일로의 접속의 경우에 간섭(interference) 또는 에러(error)가 발생할 수 있다는 것이다.
미국 특허 US 6850969호는 잠금의 사용을 피하기 위한 특정 해결책을 제시한다. 이 특허는 열린(open) 데이터 파일 내의 수정을 기록하는 어플리케이션에 대한 가능성의 사후적인(posteriori) 제어를 제안하고, 이러한 소위 원자적 연산(atomic operation) 동안 어떠한 어플리케이션도 동일 데이터 파일 상에 개입할 수 없도록 보증한다. 본 발명의 의미 내에서 원자적(atomic)은, 소위 원자적 연산의 모든 태스크(task)의 완료 전에 중단(interruption) 이나 제3의 연산(third-party operation)의 방해(interference)의 가능성 없이 연속적으로 수행되는 개별 태스크의 세트를 의미한다.
이 해결책은, 복수의 어플리케이션이 공통의 파일의 세트 상에 동시에 처리 연산을 수행할 경우 일부 연산의 완료를 방해하므로 만족스럽지 못하다. 이 해결책은 확실히 기존의 데이터 파일에 대한 변경을 피할 수 있게 하지만 동시 안전 접속의 손실을 피할 수는 없다. 왜냐하면, 이 솔루션은 각 처리 과정들이 전 처리 과정이 완료된 후에 발생하도록 하기 때문이다. 따라서, 이 해결책은 예컨대, XML 포맷의 데이터와 같은 포함된 파일들 상의 처리 연산에 실질적으로 적응되지 못했고, 다른 경쟁 어플리케이션에 의해 언제든지 사용될 수 있다.
이 때문에, 본 발명은 각 데이터 파일이 해더(header) 및 바디(body)를 가지는 것을 특징으로 하는 파일 관리 방법에 관한 것이다. 해더는 파일 관리 시스템 내의 데이터 파일의 A 상태 파라미터(state parameter)를 포함한다. 바디는 파일의 수정 가능한(modifiable) 내용을 포함한다. 본 방법은 새로운 접속을 방해하는 상태에 대한 상기 상태 파라미터 중 하나의 수정을 야기시키는 목표 데이터 파일에 대한 접속 단계를 포함한다.
이러한 데이터 파일의 관리는 컴퓨터 운영 시스템의 파일 시스템에 독립적이다.
본 발명은 첨부된 도면을 참조한, 한정하지 않는 실시예에 관한 아래의 기술을 읽음으로써 보다 잘 이해될 것이다.
도 1은 본 발명에 따른 파일 관리 방법에 의해 사용되는 트리(tree)의 개략적인 도면을 도시한다.
도 2 내지 도 8은 본 파일 관리의 함수의 도면을 도시한다.
도 9는 클라이언트/서버 모드(client/server mode) 에 관한 네트워크를 통한 파일 관리 시스템의 사용에 대한 도면을 도시한다.
도 1은 본 발명에 따른 파일 관리 방법에 의해 사용되는 트리(tree)의 개략적인 도면을 도시한다.
기술된 예에서, 데이터 파일들은 M = 5개의 레벨(1 내지 5)로 서브-디바이드(sub-divide)된 구조에 조직화된다. 각 레벨(1 내지 4)의 각 디렉토리는 마지막 레벨(5)과 분리되어 있고, N=16개의 디렉토리(10 내지 12), (20 내지 25), (30 내지 35), (40 내지 45)를 포함한다. 16개의 디렉토리의 각각의 이름은 0과 f 사이의 16진수 숫자와 관련된다. 상기 구조에 포함된 디렉토리의 총 숫자는 16+162+163...+16M이다.
기술된 예에서, 트리는,
데이터 파일을 포함하지 않고 서브-디렉토리만을 포함한, 1 내지 4 레벨의 69,904개의 디렉토리; 및
각 디렉토리가 데이터 파일을 저장하기 위한 파일을 포함한, 레벨 5의 1,048,576개의 디렉토리(50 내지 55)를 포함한다.
마지막 레벨(5)의 각 디렉토리(50 내지 55)는 데이터 파일의 한정된 숫자 L을 포함할 수 있고, L은 예컨대, 약 1000으로 작게 설정되어, 컴퓨터 운영 시스템의 파일 시스템이 무엇이든, 빠른 접속 시간을 허락한다.
데이터 파일에 대한 메모리 위치의 귀속
새로운 데이터 파일이 생성되고, 문자열(character string)에 의해 형성된 단일 사용 이름(use name)이 지정될 때, 본 방법은 사용 이름을 나타내는 이러한 문자열에 대해 해쉬 함수(Hi)를 적용하는 단계로 구성되고, 그 결과는 16진수 형태로 나타나는 값으로 구성될 것이다. 해쉬 함수 SHA-1에 있어서, 16진수 형태의 결과는 0과 F 사이의 40개의 16진수 숫자를 포함할 것이다.
본 방법은 상기 정의된 디렉토리 트리의 문맥(context) 내 및 해쉬 함수의 이러한 결과로부터 상기 트리의 디렉토리 경로를 결정하는 단계로 구성된다.
해쉬 함수의 결과의 첫 번째 M개의 숫자의 각 순위(rank)는 디렉토리 트리의 레벨에 대응될 것이다.
사용 이름 "myfile"의 예를 들면, SHA-1 함수의 어플리케이션은 "b3580ab45cb088ba47ff070aa81c2dae1be56ca2"를 반환한다.
5개의 레벨(1 내지 5)에 대해서, 레벨 1의 디렉토리는 SHA-1 값의 첫 문자에 대응하는 이름 "b"를 지니게 될 것이고, 레벨 2의 디렉토리는 두 번째 문자에 대응하는 "3"이 될 것이며, 그리고 이와 같이 계속 될 것이다. 마지막 디렉토리(5)에서의 위치는 사용 이름을 구성하는 문자의 각 바이트(byte)의 2개 숫자의 16진수 표시로 구성될 것이다. 이름 "myfile"에 있어서, 파일의 위치 및 이름은 "6d7966696c65"일 것이다. "6d"는 문자 "m"의 2개 숫자의 16진수 표시에 대응되고, "79"는 문자 "y"의 2개 숫자의 16진수 표시에 대응되고, "66"은 문자 "f"의 2개 숫자의 16진수 표시에 대응되며, 이와 같이 계속 된다.
복수의 바이트로 코딩(coding)이 필요한 문자에 있어서, 모든 바이트는 이러한 형태로 성공적으로 표시될 수 있다.
데이터 파일의 사용 이름의 유일성(uniqueness) 때문에, 파일의 지정은 해쉬 함수로부터 계산된 위치 및 사용 이름으로부터 유일하게 계산된 데이터 파일 이름의 조합으로부터 비롯되므로 반드시 유일할 것이다.
이 해결책은 디렉토리 트리의 레벨 M의 디렉토리 내에 데이터 파일을 같은 확률로 최대 분산으로 분배할 수 있게 한다. 오직 레벨 M만이 데이터 파일을 포함하고, 사이에 들어있는(intermediate) 레벨은 데이터 파일을 포함하지 않으며, 오직 레벨 M의 디렉토리 내에 파일의 분배에 사용된다.
레벨 M의 각 디렉토리 내에서, 데이터 파일의 숫자는 예컨대, 약 1,000정도로 알맞게 제한되고, 이는 빠른 접속 시간을 유도한다. 레벨 M의 트리 내에서 생성 될 수 있는 데이터 파일의 최대 숫자는 1,000 x 16M이다. 예를 들어, M=5일 때, 레벨 M의 디렉토리의 트리 내에서 대략 10억개의 데이터 파일을 생성하고, 읽거나 쓸 수 있다.
데이터 파일의 생성, 기록, 판독 및 삭제
첫 번째 단계는 앞에서 언급한 해쉬 함수를 적용함으로써, 그리고 사용 이름으로부터 파일의 이름을 계산함으로써, 파일의 사용 이름으로부터 트리 내의 접속 경로 및 관련 파일 이름을 결정하는 단계로 구성된다. 이 단계는 파일이 기록된 레벨 M의 디렉토리 및 이 디렉토리 내의 파일의 위치를 결정할 수 있게 한다.
동일 데이터 파일에 대한 접속 경쟁
데이터 파일에 대한 접속의 안전한 관리를 위해, 데이터 파일은 각각 해더 및 바디를 포함한다. 바디는 직접 접속 가능한 형태로 또는 압축된 또는 암호화된 형태로, 파일의 수정 가능한 내용을 포함하고, 이 바디는 파일 관리 시스템 내의 파일의 상태 파라미터를 포함한 해더를 앞에 둔다.
체계적으로, 일련의 임의의 연산(기록, 판독, 수정 또는 삭제) 처리에 의한 파일로의 접속은, 다른 처리 연산에 의한 추가 접속을 방지하는 상태에 대한 해더의 상기 상태 파라미터 중 하나를 수정하는 단계로 구성된 첫 번째 획득(acquisition) 단계로 구성된다.
자연히, 파일이 처리 연산에 의해 접속되거나 사용될 때, 다른 처리 연산은 이러한 초기 획득 단계 동안에 금지(prohibition) 또는 대기(waiting)의 통지와 마 주치게 될 것이다.
다른 처리 연산은 목표 파일이 다시 한번 접속 허용 상태가 될 때까지 또는 미리 결정된 시간 딜레이(delay)가 접속 시도의 중단을 야기시킬 때까지 이러한 초기 획득 단계를 되풀이한다.
일단 일련의 연산들이 처리 연산에 의해 완료되면, 마지막 릴리스(release) 단계는 해더의 수정된 파라미터의 초기 상태를 회복한다. 따라서, 다른 처리 연산이 데이터 파일을 접속하도록 한다.
도 2 내지 도 8은 본 발명에 의해 사용되는 함수의 구조를 나타낸다.
기존의 데이터 파일을 획득하는 함수
도 2는 기존의 데이터 파일을 획득하기 위해 필요한 태스크(task)의 연속을 도시한다.
함수는 입력(150)으로 이전에 개시된 바와 같이 사용 이름으로부터 계산된 파일의 이름을 받는다.
첫 번째 태스크(100)는 파일의 열기(opening) 및 잠금(locking)을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성된다. 따라서, 이 파일의 닫기(closure) 및 잠금 해제(unlocking) 때까지, 차후의 처리 연산에 의한 이 파일의 열기 및 잠금은 보호된다.
그 다음, 함수는 파일의 열기 및 잠금을 입증(verify)하기 위한 테스트(101)를 수행한다. 만약 파일이 열리지 않고 잠기지 않았다면, 테스트(101)의 결과는 부 정적이고 함수는 파일이 시도(100) 동안에 존재했는지를 확인하는 두 번째 테스트(102)를 수행한다. 부정적인 응답의 경우, 함수는 파일이 존재하지 않는다는 것을 나타내는 에러(103)를 반환한다.
긍정적인 응답의 경우, 테스트(104)는 시도(100)의 수가 임계값(threshold value)을 초과했는지, 또는 타임아웃(timeout) 기간이 경과되었는지를 확인한다. 부정적인 응답의 경우에 시간 딜레이(149) 후의 새로운 시도(100)를 착수한다. 긍정적인 응답의 경우, 함수는 시스템 에러(105)를 반환한다.
테스트(101)의 결과가 긍정적이면, 함수는 태스크(106) 동안에 파일 해더의 상태 파라미터 내의 파일의 사용 가능(availability) 상태를 판독한다.
그 다음, 함수는 상태 파라미터에 따른 파일의 사용 가능에 대한 테스트(107)를 수행한다.
테스트(107)의 결과가 부정적이면, 사용 불가능(unavailability) 상태에 대응하여, 함수는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제의 태스크(108)를 수행한다.
그 다음, 함수는 시도(100)의 수가 임계값을 초과했는지, 또는 타임아웃 기간이 경과되었는지를 확인하는 테스트(109)를 수행한다. 부정적인 응답의 경우에 시간 딜레이(149) 후의 새로운 시도(100)를 착수한다. 긍정적인 응답의 경우, 함수는 현재의 처리 연산에 의해 파일이 획득된 채로 남아있다는 것을 나타내는 에러(110)를 반환한다.
테스트(107)의 결과가 긍정적이면, 함수는 파일 헤더의 상태 파라미터 내의 파일의 이용 불가능 상태를 기록하는 태스크(111), 파일 획득 식별자(identifier)를 계산하는 태스크(112), 파일 헤더의 상태 파라미터 내에 이 식별자를 기록하는 태스크(113), 및 파일 바디를 판독하는 태스크(114)를 수행한다. 태스크(115)는 파일의 수정 가능한 내용을 추출하기 위한 파일 바디의 처리에 대응하는 것이다. 이 처리 과정은 파일 해더의 상태 파라미터에 따라 실행된다. 예를 들어, 파일의 수정 가능한 내용의 압축 해제(decompression) 또는 암호 해독(deciphering)에 대응하는 것이다. 마지막 태스크(116)는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제로 구성된다.
함수는 그 완료 단계(151)에서 출력으로서 데이터 파일의 획득의 확인, 파일 획득 식별자 및 파일의 수정 가능한 내용을 반환한다.
새로운 데이터 파일을 획득하는 함수
도 3은 새로운 데이터 파일을 획득하기 위해 필요한 태스크의 연속을 도시한다.
함수는 입력(250)으로 이전에 개시된 바와 같이 사용 이름으로부터 계산된 파일의 이름을 받는다.
첫 번째 태스크(200)는 파일의 생성, 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 새로운 파일의 동시적인 생성, 열기 및 잠금을 시도하는 단계로 구성된다. 따라서, 이 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의한 이 파일의 열기 및 잠금은 보호된다.
그 다음, 함수는 파일의 생성, 열기 및 잠금을 입증하기 위한 테스트(201)를 수행한다. 만약 파일이 생성되지 않았거나 열리지 않았거나 잠기지 않았다면, 테스트(201)의 결과는 부정적이고 함수는 파일이 시도(200) 동안에 존재했는지를 확인하는 두 번째 테스트(202)를 수행한다.
긍정적인 응답의 경우, 함수는 파일이 이미 존재한다는 것을 나타내는 에러(204)를 반환한다.
부정적인 응답의 경우, 함수는 시스템 에러를 나타내는 에러(203)를 반환한다.
테스트(201)의 결과가 긍정적이면, 함수는 파일의 비어있는 바디를 가진 파일 해더를 생성하고 기록하는 태스크(205), 파일 헤더의 상태 파라미터 내의 파일의 이용 불가능 상태를 기록하는 태스크(206), 파일 획득 식별자를 계산하는 태스크(207), 및 파일 헤더의 상태 파라미터 내에 이 식별자를 기록하는 태스크(208)를 수행한다. 마지막 태스크(209)는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제로 구성된다.
상기 함수는 완료 단계(251)에서 출력으로서 데이터 파일 획득의 확인과 파일 획득 식별자를 반환한다.
기존의 데이터 파일을 획득하는 것과 함께 파일이 존재하지 않으면 파일을 생성하는 함수
도 4는 기존의 데이터 파일을 획득하는 것과 함께 파일이 존재하지 않으면 파일을 생성하기 위해 필요한 태스크의 연속을 도시한다.
함수는 입력(350)으로 이전에 개시된 바와 같이 사용 이름으로부터 계산된 파일의 이름을 받는다.
첫 번째 태스크(300)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계 및 파일이 존재하지 않으면 파일을 생성하는 단계로 구성된다. 따라서, 이 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의한 이 파일의 열기 및 잠금은 보호된다.
그 다음, 함수는 파일의 열기 및 잠금을 입증하기 위한 테스트(301)를 수행한다. 만약 파일이 열리지 않고 잠기지 않았다면, 테스트(301)의 결과는 부정적이고 함수는 파일이 시도(300)의 시점에 존재했는지를 확인하는 두 번째 테스트(302)를 수행한다. 부정적인 응답의 경우, 함수는 시스템 에러를 나타내는 에러(303)를 반환한다.
긍정적인 응답의 경우, 테스트(304)는 시도(300)의 수가 임계값을 초과했는지, 또는 타임아웃 기간이 경과되었는지를 확인한다. 부정적인 응답의 경우에 시간 딜레이(349) 후의 새로운 시도(300)를 착수한다. 긍정적인 응답의 경우, 함수는 시스템 에러(305)를 반환한다.
테스트(301)의 결과가 긍정적인 경우, 함수는 시도(300)의 시점에서 파일이 생성되었는지를 확인하는 테스트(306)를 수행한다. 파일이 생성되지 않았다면, 테스트(306)의 결과는 부정적이고 함수는 태스크(307) 동안에 파일 해더의 상태 파라미터 내의 파일의 사용 가능 상태를 판독한다.
그 다음, 함수는 상태 파라미터에 따른 파일의 사용 가능에 대한 테스트(308)를 수행한다.
테스트(308)의 결과가 부정적이면, 사용 불가능 상태에 대응하여, 함수는 운 영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제의 태스크(309)를 수행한다.
그 다음, 함수는 시도(300)의 수가 임계값을 초과했는지, 또는 타임아웃 기간이 경과되었는지를 확인하는 테스트(310)를 수행한다. 부정적인 응답의 경우에 시간 딜레이(349) 후의 새로운 시도(300)를 착수한다. 긍정적인 응답의 경우, 함수는 현재의 처리 연산에 의해 파일이 획득된 채로 남아있다는 것을 나타내는 에러(311)를 반환한다.
테스트(308)의 결과가 긍정적이면, 함수는 파일 헤더의 상태 파라미터 내의 파일의 이용 불가능 상태를 기록하는 태스크(312), 파일 획득 식별자를 계산하는 태스크(313), 파일 헤더의 상태 파라미터 내에 이 식별자를 기록하는 태스크(314), 및 파일 바디를 판독하는 태스크(315)를 수행한다. 태스크(316)는 파일의 수정 가능한 내용을 추출하기 위한 파일 바디의 처리에 대응하는 것이다. 이 처리 과정은 파일 해더의 상태 파라미터에 따라 발생한다. 예를 들어, 파일의 수정 가능한 내용의 압축 해제 또는 암호 해독에 대응하는 것이다. 태스크(317)는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제로 구성된다.
함수는 그 완료 단계(351)에서 출력으로서 데이터 파일의 획득의 확인, 파일이 생성되지 않았다는 것을 나타내는 통지, 파일 획득 식별자 및 파일의 수정 가능한 내용을 반환한다.
테스트(306)의 결과가 긍정적이면, 함수는 파일의 비어있는 바디를 가진 파일 해더를 생성하고 기록하는 태스크(318), 파일 헤더의 상태 파라미터 내의 파일 의 이용 불가능 상태를 기록하는 태스크(319), 파일 획득 식별자를 계산하는 태스크(320), 및 파일 헤더의 상태 파라미터 내에 이 식별자를 기록하는 태스크(321)를 수행한다. 마지막 태스크(322)는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제로 구성된다.
함수는 그 완료 단계(352)에서 출력으로서 데이터 파일의 획득의 확인, 파일이 생성되었다는 것을 나타내는 통지 및 파일 획득 식별자를 반환한다.
데이터 수정 없이 획득된 데이터 파일을 릴리스하는 함수
도 5는 데이터 수정 없이 획득된 데이터 파일을 릴리스(release)하기 위해 필요한 태스크의 연속을 도시한다.
함수는 입력(450)으로 이전에 개시된 바와 같이 사용 이름으로부터 계산된 파일의 이름 및 데이터 파일의 이전의 획득 동안에 반환된 획득 식별자를 받는다.
첫 번째 태스크(400)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성된다. 따라서, 이 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의한 이 파일의 열기 및 잠금은 보호된다.
그 다음, 함수는 파일의 열기 및 잠금을 입증하기 위한 테스트(401)를 수행한다. 만약 파일이 열리지 않고 잠기지 않았다면, 테스트(401)의 결과는 부정적이고 함수는 파일이 시도(400) 동안에 존재했는지를 확인하는 두 번째 테스트(402)를 수행한다. 부정적인 응답의 경우, 함수는 파일이 존재하지 않는다는 것을 나타내는 에러(403)를 반환한다.
긍정적인 응답의 경우, 테스트(404)는 시도(400)의 수가 임계값을 초과했는지, 또는 타임아웃 기간이 경과되었는지를 확인한다. 부정적인 응답의 경우에 시간 딜레이(449) 후의 새로운 시도(400)를 착수한다. 긍정적인 응답의 경우, 함수는 시스템 에러(405)를 반환한다.
테스트(401)의 결과가 긍정적이면, 함수는 태스크(406) 동안에 파일 해더의 상태 파라미터 내의 파일의 사용 가능 상태를 판독한다.
그 다음, 함수는 상태 파라미터에 따른 파일의 사용 가능에 대한 테스트(407)를 수행한다.
테스트(407)의 결과가 긍정적이면, 함수는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제의 태스크(408)를 수행하고 파일이 획득되지 않았다는 것을 나타내는 에러(409)를 반환한다.
테스트(407)의 결과가 부정적이면, 사용 불가능 상태에 대응하여, 함수는 태스크(410) 동안에 파일 해더 내의 획득 식별자를 판독한다.
그 다음, 함수는 이 식별자가 입력으로 제출된 식별자와 상이한지를 확인하는 테스트(411)를 수행한다. 긍정적인 응답의 경우, 함수는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제의 태스크(412)를 수행하고 입력으로서 제출된 획득 식별자가 유효하지 않다는 것을 나타내는 에러(413)를 반환한다.
부정적인 응답의 경우, 함수는 파일 해더의 상태 파라미터 내의 획득 식별자를 삭제하는 태스크(414) 및 파일 해더 내의 사용 가능 상태를 기록하는 태스 크(415)를 수행한다. 마지막 태스크(416)는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제로 구성된다.
함수는 그 완료 단계(451)에서 출력으로서 데이터 파일의 릴리스의 확인을 반환한다.
데이터 수정과 함께 획득된 데이터 파일을 릴리스하는 함수
도 6은 데이터 수정과 함께 획득된 데이터 파일을 릴리스하기 위해 필요한 태스크의 연속을 도시한다.
함수는 입력(550)으로 이전에 개시된 바와 같이 사용 이름으로부터 계산된 파일의 이름, 데이터 파일의 이전의 획득 동안에 반환된 획득 식별자 및 파일의 수정 가능한 내용을 받는다.
첫 번째 태스크(500)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성된다. 따라서, 이 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의한 이 파일의 열기 및 잠금은 보호된다.
그 다음, 함수는 파일의 열기 및 잠금을 입증하기 위한 테스트(501)를 수행한다. 만약 파일이 열리지 않고 잠기지 않았다면, 테스트(501)의 결과는 부정적이고 함수는 파일이 시도(500) 동안에 존재했는지를 확인하는 두 번째 테스트(502)를 수행한다. 부정적인 응답의 경우, 함수는 파일이 존재하지 않는다는 것을 나타내는 에러(503)를 반환한다.
긍정적인 응답의 경우, 테스트(504)는 시도(500)의 수가 임계값을 초과했는 지, 또는 타임아웃 기간이 경과되었는지를 확인한다. 부정적인 응답의 경우에 시간 딜레이(549) 후의 새로운 시도(500)를 착수한다. 긍정적인 응답의 경우, 함수는 시스템 에러(505)를 반환한다.
테스트(501)의 결과가 긍정적이면, 함수는 태스크(506) 동안에 파일 해더의 상태 파라미터 내의 파일의 사용 가능 상태를 판독한다.
그 다음, 함수는 상태 파라미터에 따른 파일의 사용 가능에 대한 테스트(507)를 수행한다.
테스트(507)의 결과가 긍정적이면, 함수는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제를 하는 태스크(508)를 수행하고 파일이 획득되지 않았다는 것을 나타내는 에러(509)를 반환한다.
테스트(507)의 결과가 부정적이면, 사용 불가능 상태에 대응하여, 함수는 태스크(510) 동안에 파일 해더 내의 획득 식별자를 판독한다.
그 다음, 함수는 이 식별자가 입력으로 제출된 식별자와 상이한지를 확인하는 테스트(511)를 수행한다. 긍정적인 응답의 경우, 함수는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제의 태스크(512)를 수행하고 입력으로서 제출된 획득 식별자가 유효하지 않다는 것을 나타내는 에러(513)를 반환한다.
부정적인 응답의 경우, 함수는 파일 해더의 상태 파라미터 내의 획득 식별자를 삭제하는 태스크(514), 파일 해더 내의 사용 가능 상태를 기록하는 태스크(515) 및 파일 바디 안에 파일의 수정 가능한 내용을 삽입하기 위한 파일 바디의 처리에 대응하는 태스크(516)를 수행한다. 이러한 처리 과정은 파일 해더의 상태 파라미터에 따라 발생한다. 예를 들어, 파일의 수정 가능한 내용의 압축(compression) 또는 암호화(enciphering)에 대응하는 것이다. 그 다음, 함수는 파일 보디를 기록하는 태스크(517)를 수행하고, 마지막 태스크(518)는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제로 구성된다.
함수는 그 완료 단계(551)에서 출력으로서 데이터 파일의 릴리스 및 파일 내용의 수정의 확인을 반환한다.
파일의 삭제와 함께 획득된 데이터 파일을 릴리스하는 함수
도 7은 파일의 삭제와 함께 획득된 데이터 파일을 릴리스하기 위해 필요한 태스크의 연속을 도시한다.
함수는 입력(650)으로 이전에 개시된 바와 같이 사용 이름으로부터 계산된 파일의 이름 및 데이터 파일의 이전의 획득 동안에 반환된 획득 식별자를 받는다.
첫 번째 태스크(600)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성된다. 따라서, 이 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의한 이 파일의 열기 및 잠금은 보호된다.
그 다음, 함수는 파일의 열기 및 잠금을 입증하기 위한 테스트(601)를 수행한다. 만약 파일이 열리지 않고 잠기지 않았다면, 테스트(601)의 결과는 부정적이고 함수는 파일이 시도(600) 동안에 존재했는지를 확인하는 두 번째 테스트(602)를 수행한다. 부정적인 응답의 경우, 함수는 파일이 존재하지 않는다는 것을 나타내는 에러(603)를 반환한다.
긍정적인 응답의 경우, 테스트(604)는 시도(600)의 수가 임계값을 초과했는지, 또는 타임아웃 기간이 경과되었는지를 확인한다. 부정적인 응답의 경우에 시간 딜레이(649) 후의 새로운 시도(600)를 착수한다. 긍정적인 응답의 경우, 함수는 시스템 에러(605)를 반환한다.
테스트(601)의 결과가 긍정적이면, 함수는 태스크(606) 동안에 파일 해더의 상태 파라미터 내의 파일의 사용 가능 상태를 판독한다.
그 다음, 함수는 상태 파라미터에 따른 파일의 사용 가능에 대한 테스트(607)를 수행한다.
테스트(607)의 결과가 긍정적이면, 함수는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제를 하는 태스크(608)를 수행하고 파일이 획득되지 않았다는 것을 나타내는 에러(609)를 반환한다.
테스트(607)의 결과가 부정적이면, 사용 불가능 상태에 대응하여, 함수는 태스크(610) 동안에 파일 해더 내의 획득 식별자를 판독한다.
그 다음, 함수는 이 식별자가 입력으로 제출된 식별자와 상이한지를 확인하는 테스트(611)를 수행한다. 긍정적인 응답의 경우, 함수는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제의 태스크(612)를 수행하고 입력으로서 제출된 획득 식별자가 유효하지 않다는 것을 나타내는 에러(613)를 반환한다.
부정적인 응답의 경우, 함수는 파일 해더의 상태 파라미터 내의 획득 식별자 를 삭제하는 태스크(614) 및 파일 해더 내의 사용 가능 상태를 기록하는 태스크(615)를 수행한다. 마지막 태스크(616)는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제로 구성된다.
함수는 그 완료 단계(651)에서 출력으로서 데이터 파일의 릴리스 및 그 파일의 삭제의 확인을 반환한다.
파일의 획득 없이 기존의 데이터 파일을 단순 판독하는 함수
도 8은 파일의 획득 없이 기존의 데이터 파일을 단순 판독하기 위해 필요한 태스크의 연속을 도시한다.
함수는 입력(750)으로 이전에 개시된 바와 같이 사용 이름으로부터 계산된 파일의 이름을 받는다.
첫 번째 태스크(700)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성된다. 따라서, 이 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의한 이 파일의 열기 및 잠금은 보호된다.
그 다음, 함수는 파일의 열기 및 잠금을 입증하기 위한 테스트(701)를 수행한다. 만약 파일이 열리지 않고 잠기지 않았다면, 테스트(701)의 결과는 부정적이고 함수는 파일이 시도(700) 동안에 존재했는지를 확인하는 두 번째 테스트(702)를 수행한다. 부정적인 응답의 경우, 함수는 파일이 존재하지 않는다는 것을 나타내는 에러(703)를 반환한다.
긍정적인 응답의 경우, 테스트(704)는 시도(700)의 수가 임계값을 초과했는 지, 또는 타임아웃 기간이 경과되었는지를 확인한다. 부정적인 응답의 경우에 시간 딜레이(749) 후의 새로운 시도(700)를 착수한다. 긍정적인 응답의 경우, 함수는 시스템 에러(705)를 반환한다.
테스트(701)의 결과가 긍정적이면, 함수는 태스크(706) 동안에 파일 해더의 상태 파라미터 내의 파일의 사용 가능 상태를 판독한다.
그 다음, 함수는 상태 파라미터에 따른 파일의 사용 가능에 대한 테스트(707)를 수행한다.
테스트(707)의 결과가 부정적이면, 사용 불가능 상태에 대응하여, 함수는 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제의 태스크(708)를 수행한다.
그 다음, 함수는 시도(700)의 수가 임계값을 초과했는지, 또는 타임아웃 기간이 경과되었는지를 확인하는 테스트(709)를 수행한다. 부정적인 응답의 경우에 시간 딜레이(749) 후의 새로운 시도(700)를 착수한다. 긍정적인 응답의 경우, 함수는 현재의 처리 연산에 의해 파일이 획득된 채로 남아있다는 것을 나타내는 에러(710)를 반환한다.
테스트(707)의 결과가 긍정적이면, 함수는 파일 헤더의 상태 파라미터 내의 파일의 이용 불가능 상태를 기록하는 태스크(711), 및 파일의 수정 가능한 내용을 추출하기 위한 파일 바디를 처리하는 태스크(712)를 수행한다. 이 처리 과정은 파일 해더의 상태 파라미터에 따라 발생한다. 예를 들어, 파일의 수정 가능한 내용의 압축 해제 또는 암호 해독에 대응하는 것이다. 마지막 태스크(713)는 운영 시스템 의 파일 시스템의 레벨에서 파일의 동시적인 닫기 및 잠금 해제로 구성된다.
함수는 그 완료 단계(751)에서 출력으로서 데이터 파일의 단순 판독의 확인 및 파일의 수정 가능한 내용을 반환한다.
자세하게,
- 파일의 사용 가능 상태를 포함하는 데이터 파일의 해더의 상태 파라미터의 판독,
- 처리 연산에 의해 릴리스되지 않은 데이터 파일의 강제적인 릴리스,
- 트리의 서브셋(subset)에 의해 트리 내에 포함된 데이터 파일의 리스트와 같은 다른 함수들은 트리의 운영을 유용하게 한다.
클라이언트-서버 모드
도 9는 특별하고 바람직한 어플리케이션의 경우에 관한 것이다. 도면은 클라이언트-서버 모드(client-server mode)에 관한 네트워크를 통한 본 발명에 따른 파일 관리 시스템의 사용에 필요한 태스크의 연속을 도시한 것이다.
이 경우, 파일 관리 시스템은 서버 소프트웨어(801)을 포함하는 서버 컴퓨터(800) 상에 설치된다. 서버 컴퓨터는 각각 클라이언트 소프트웨어(805 내지 807)을 포함하는 복수의 클라이언트 컴퓨터(802 내지 804)에 의해 접속 가능하다. 클라이언트 소프트웨어 및 서버 소프트웨어 간의 주고받음(exchange)은, 예컨대, HTTP 또는 바람직하게는 HTTPS 타입의 안전한 프로토콜(protocol)과 같은 알려진 타입의 네트워크 송신 프로토콜을 사용한다.
이 경우, 본 발명은 "파일 획득" 또는 "파일 릴리스" 타입의 명령에 의해 본 발명에 따른 파일 관리 시스템의 함수를 호출하기 위해 어플리케이션 프로토콜(808)을 사용한다. 파일은 서버 컴퓨터의 레벨에서 복수의 서브셋(809 내지 811)으로 분배된다. 본 발명에 따른 트리에 대응한 각 서브셋은 "테이블(table)"이라 한다. 데이터 파일의 사용 이름은 프로토콜 내에서 "키(key)"에 의해 지정된다.
첫 번째 태스크(812)는 클라이언트 소프트웨어에 의해 클라이언트 컴퓨터 중 하나 상에서 수행된다. 태스크(812)는 테이블 및 키에 관련된 획득, 릴리스 또는 단순 판독 함수를 요청하는 것으로 구성된다.
두 번째 태스크(813)는 서버 컴퓨터 상에서 서버 소프트웨어에 의해 수행된다. 태스크(813)는 클라이언트 소프트웨어에 의해 요청된 함수를 수행하는 것으로 구성된다.
세 번째 태스크(814)는 서버 컴퓨터 상에서 서버 소프트웨어에 의해 수행된다. 태스크(814)는 요청된 함수의 결과를 클라이언트 소프트웨어에 반환하는 것으로 구성된다. 선택적으로, 시스템은 데이터의 저장 용량 및 부담을 분배하기 위해 복수의 서버를 포함한다. 이 경우, 클라이언트 소프트웨어(805 내지 807)는 테이블 및 키에 따른 서버를 선택하기 위한 법칙(rule)을 포함한다.
서버 소프트웨어(801)는 또한 백업(backup) 컴퓨터 상에 트리의 완전한 사본(copy)을 만들지 않고, 백업 컴퓨터 상에 서버 컴퓨터의 트리의 증분 복구(incremental reconstruction)를 하도록 수행되는 연산의 로깅(logging)의 기능(functionality)을 포함할 수 있다.

Claims (12)

  1. M 개의 레벨을 가진 디렉토리(directory)의 트리를 생성하는 단계로서, 상기 M개의 레벨은 1부터 M까지의 숫자가 부여되며, 상기 M은 1보다 큰 정수이며, 상기 트리는 1 레벨의 N 개의 디렉토리를 포함하되, 상기 N은 1보다 큰 정수이며, 1부터 M-1까지의 각 X 레벨에 대하여, X 레벨의 디렉토리들 각각은 X+1레벨의 N개의 디렉토리들을 포함하고, M 레벨의 디렉토리들에만 데이터 파일들이 저장되는, 상기 M 개의 레벨을 가진 디렉토리의 트리를 생성하는 단계;
    데이터 파일을 기록하는 단계로서,
    - 해쉬 함수(hash function)를 기록될 데이터 파일(Fi)의 식별자(identifier)에 적용하는 단계;
    - 상기 적용 단계의 결과에 따라 복수의 레벨의 트리 내에서 목적 디렉토리(destination directory)(Rdi)의 경로(path)를 결정하는 단계; 및
    - 상기 데이터 파일(Fi)의 식별자에 의존하는 위치에서, 상기 해쉬 함수에 의해 결정된 상기 디렉토리(Rdi)에 상기 식별자와 함께 상기 데이터 파일(Fi)을 기록하는 단계;
    를 포함하는 상기 데이터 파일을 기록하는 단계; 및
    데이터 파일을 판독하는 단계로서,
    - 상기 해쉬 함수를 판독될 데이터 파일(Fj)의 식별자에 적용하는 단계;
    - 상기 적용 단계의 결과에 따라 트리 내에서 목표 디렉토리(target directory)(Rcj)의 경로(path)를 결정하는 단계; 및
    - 상기 데이터 파일(Fj)의 식별자에 의존하는 위치에서, 상기 해쉬 함수에 의해 결정된 상기 디렉토리(Rcj)에서 상기 식별자와 함께 상기 데이터 파일(Fj)을 판독하는 단계;
    를 포함하는 상기 데이터 파일을 판독하는 단계를 포함하고,
    각 데이터 파일은 각각 해더(header) 및 바디(body)를 포함하고, 상기 바디는 파일의 수정 가능한 내용을 포함하고, 상기 바디는 파일 관리 시스템 내의 파일의 상태 파라미터를 포함한 해더를 앞에 두며,
    일련의 연산을 수행하기 위한 처리 연산에 의해 목표 파일을 획득하는 선행 단계를 포함하되, 상기 목표 파일의 획득은 상기 해더의 파라미터 중 하나 이상의 상태의 변화를 야기하며, 상기 상태의 변화는 상기 파일의 릴리스(release) 때까지 다른 처리 연산에 의한 획득을 방지하는 것을 특징으로 하는 파일 관리 방법.
  2. 제1항에 있어서,
    데이터 파일은 Q개 이상의 저장 유닛에 분배되고, 각 저장 유닛은 N개의 디렉토리 중에서 P개의 디렉토리 레벨에 대응되는 것을 특징으로 하는 파일 관리 방법.
  3. 제1항 내지 제2항 중 어느 한 항에 있어서,
    N은 16과 같고, 해쉬 함수는 SHA-1 함수인 것을 특징으로 하는 파일 관리 방법.
  4. 삭제
  5. 제1항에 있어서,
    획득, 판독 및 릴리스 연산은 클라이언트 소프트웨어에 의해 제어되고 상기 획득, 판독 및 릴리스 연산과 대응하는 단계는 서버 소프트웨어에 의해 수행되는 것을 특징으로 하는 파일 관리 방법.
  6. 제1항에 있어서,
    파일의 사용 이름으로부터 계산된 파일의 이름을 입력(150)으로 받는 기존 데이터 파일을 획득하는 단계를 포함하고,
    상기 기존 데이터 파일을 획득하는 단계는 파일의 열기(opening) 및 잠금(locking)을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성된 첫 번째 태스크(100)를 포함하며, 상기 파일의 닫기(closure) 및 잠금 해제(unlocking) 때까지, 차후의 처리 연산에 의해 상기 파일의 열기 및 잠금은 보호되는 것을 특징으로 하는 파일 관리 방법.
  7. 제1항에 있어서,
    파일의 사용 이름으로부터 계산된 파일의 이름을 입력(250)으로 받는 새로운 데이터 파일을 획득하는 단계를 포함하고,
    첫 번째 태스크(200)는 파일의 열기 및 잠금의 생성을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금의 생성을 시도하는 단계로 구성되며, 상기 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의해 상기 파일의 열기 및 잠금은 보호되는 것을 특징으로 하는 파일 관리 방법.
  8. 제1항에 있어서,
    파일이 존재하지 않는 경우 파일의 생성과 함께 기존 데이터 파일을 획득하는 단계를 포함하고, 함수는 파일의 사용 이름으로부터 계산된 파일의 이름을 입력(350)으로 받으며,
    첫 번째 태스크(300)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계 및 파일이 존재하지 않으면 파일을 생성하는 단계로 구성되며, 상기 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의해 상기 파일의 열기 및 잠금은 보호되는 것을 특징으로 하는 파일 관리 방법.
  9. 제1항에 있어서,
    데이터의 수정 없이 획득된 데이터 파일을 릴리스하는 단계를 포함하고, 함수는 파일의 사용 이름으로부터 계산된 파일의 이름 및 데이터 파일을 이전에 획득하는 동안에 반환된 획득 식별자를 입력(450)으로 받으며,
    첫 번째 태스크(400)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성되며, 상기 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의한 상기 파일의 열기 및 잠금은 보호되는 것을 특징으로 하는 파일 관리 방법.
  10. 제1항에 있어서,
    데이터의 수정과 함께 획득된 데이터 파일을 릴리스하는 단계를 포함하고, 함수는 파일의 사용 이름으로부터 계산된 파일의 이름 및 데이터 파일을 이전에 획득하는 동안에 반환된 획득 식별자를 입력(550)으로 받으며,
    첫 번째 태스크(500)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성되며, 상기 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의해 상기 파일의 열기 및 잠금은 보호되는 것을 특징으로 하는 파일 관리 방법.
  11. 제1항에 있어서,
    파일의 삭제와 함께 획득된 데이터 파일을 릴리스하는 단계를 포함하고, 함수는 파일의 사용 이름으로부터 계산된 파일의 이름 및 데이터 파일을 이전에 획득하는 동안에 반환된 획득 식별자를 입력(650)으로 받으며,
    첫 번째 태스크(600)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성되며, 상기 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의해 상기 파일의 열기 및 잠금은 보호되는 것을 특징으로 하는 파일 관리 방법.
  12. 제1항에 있어서,
    파일의 획득 없이 기존 데이터 파일을 단순 판독하는 단계를 포함하고, 함수는 사용 이름으로부터 계산된 파일의 이름을 입력(750)으로 받으며,
    첫 번째 태스크(700)는 파일의 열기 및 잠금을 요청함에 의해, 운영 시스템의 파일 시스템의 레벨에서 파일의 동시적인 열기 및 잠금을 시도하는 단계로 구성되며, 상기 파일의 닫기 및 잠금 해제 때까지, 차후의 처리 연산에 의한 상기 파일의 열기 및 잠금은 보호되는 것을 특징으로 하는 파일 관리 방법.
KR1020097016865A 2007-02-13 2008-02-12 파일 관리 방법 KR101471055B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0753222A FR2912520B1 (fr) 2007-02-13 2007-02-13 Procede de gestion de fichiers.
FR0753222 2007-02-13

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020137029338A Division KR101365861B1 (ko) 2007-02-13 2008-02-12 파일 관리 방법

Publications (2)

Publication Number Publication Date
KR20090116743A KR20090116743A (ko) 2009-11-11
KR101471055B1 true KR101471055B1 (ko) 2014-12-09

Family

ID=38740236

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020097016865A KR101471055B1 (ko) 2007-02-13 2008-02-12 파일 관리 방법
KR1020137029338A KR101365861B1 (ko) 2007-02-13 2008-02-12 파일 관리 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020137029338A KR101365861B1 (ko) 2007-02-13 2008-02-12 파일 관리 방법

Country Status (9)

Country Link
US (1) US8504541B2 (ko)
EP (1) EP2130147A2 (ko)
JP (1) JP5123318B2 (ko)
KR (2) KR101471055B1 (ko)
CN (1) CN101669118A (ko)
CA (1) CA2678186A1 (ko)
FR (1) FR2912520B1 (ko)
IL (1) IL200252A0 (ko)
WO (1) WO2008113921A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012896B (zh) * 2010-12-29 2012-11-21 深圳市五巨科技有限公司 一种实现文件内容批量修改的方法和装置
US9934229B2 (en) 2011-10-23 2018-04-03 Microsoft Technology Licensing, Llc Telemetry file hash and conflict detection
CN102446221A (zh) * 2011-12-22 2012-05-09 南京联创科技集团股份有限公司 Bs结构软件中的动态树型结构目录检索方法
US9323771B2 (en) * 2013-04-24 2016-04-26 Dell Products, Lp Efficient rename in a lock-coupled traversal of B+tree
EP3080709A4 (en) * 2013-09-09 2017-07-05 Unitedlex Corp. Interactive case management system
CN105743721B (zh) * 2014-12-09 2019-02-15 博雅网络游戏开发(深圳)有限公司 数据上报方法、对上报数据进行处理的方法和装置
US10108624B1 (en) * 2015-02-04 2018-10-23 Amazon Technologies, Inc. Concurrent directory move operations using ranking rules
CN107506395A (zh) * 2017-07-31 2017-12-22 合肥龙图腾信息技术有限公司 一种对打开状态文件重命名的方法及系统
CN108197302A (zh) * 2018-01-29 2018-06-22 维沃移动通信有限公司 一种文件夹创建方法及移动终端
BE1027121B1 (fr) * 2019-03-15 2020-10-14 Christophe Dutordoir Système de vote électronique sur internet
CN111159109A (zh) * 2019-11-26 2020-05-15 陶壮壮 一种磁盘空间占用文件的检测方法及系统
CN111054082B (zh) * 2019-11-29 2023-10-13 珠海金山数字网络科技有限公司 Unity资源数据集编码的方法
SG11202010122TA (en) 2019-12-05 2020-11-27 Alipay Hangzhou Inf Tech Co Ltd Performing map iterations in blockchain-based system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742817A (en) * 1995-12-08 1998-04-21 Emc Corporation Method and apparatus for file server addressing
US5864852A (en) * 1996-04-26 1999-01-26 Netscape Communications Corporation Proxy server caching mechanism that provides a file directory structure and a mapping mechanism within the file directory structure
US6687716B1 (en) * 2000-09-13 2004-02-03 Radiant Data Corporation File consistency protocols and methods for carrying out the protocols
US6912645B2 (en) * 2001-07-19 2005-06-28 Lucent Technologies Inc. Method and apparatus for archival data storage

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463874A2 (en) 1990-06-29 1992-01-02 Digital Equipment Corporation Cache arrangement for file system in digital data processing system
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
US5893086A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
JP2000357115A (ja) * 1999-06-15 2000-12-26 Nec Corp ファイル検索装置及びファイル検索方法
US6470345B1 (en) * 2000-01-04 2002-10-22 International Business Machines Corporation Replacement of substrings in file/directory pathnames with numeric tokens
US6625591B1 (en) * 2000-09-29 2003-09-23 Emc Corporation Very efficient in-memory representation of large file system directories
US6965893B1 (en) * 2000-12-20 2005-11-15 Oracle International Corporation Techniques for granting shared locks more efficiently
US7062490B2 (en) * 2001-03-26 2006-06-13 Microsoft Corporation Serverless distributed file system
JP4154893B2 (ja) * 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US8706760B2 (en) 2003-02-28 2014-04-22 Microsoft Corporation Method to delay locking of server files on edit
US7412449B2 (en) * 2003-05-23 2008-08-12 Sap Aktiengesellschaft File object storage and retrieval using hashing techniques
JP2006185232A (ja) * 2004-12-28 2006-07-13 Hitachi Ltd 複数のプログラムの実行方法、プログラム変換方法及びこれを用いたコンパイラプログラム
US7434057B2 (en) 2005-01-27 2008-10-07 Hitachi, Ltd. System and method for watermarking in accessed data in a storage system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742817A (en) * 1995-12-08 1998-04-21 Emc Corporation Method and apparatus for file server addressing
US5864852A (en) * 1996-04-26 1999-01-26 Netscape Communications Corporation Proxy server caching mechanism that provides a file directory structure and a mapping mechanism within the file directory structure
US6687716B1 (en) * 2000-09-13 2004-02-03 Radiant Data Corporation File consistency protocols and methods for carrying out the protocols
US6912645B2 (en) * 2001-07-19 2005-06-28 Lucent Technologies Inc. Method and apparatus for archival data storage

Also Published As

Publication number Publication date
EP2130147A2 (fr) 2009-12-09
IL200252A0 (en) 2010-04-29
KR20130130876A (ko) 2013-12-02
JP2010518501A (ja) 2010-05-27
KR101365861B1 (ko) 2014-02-20
FR2912520A1 (fr) 2008-08-15
FR2912520B1 (fr) 2009-05-15
JP5123318B2 (ja) 2013-01-23
CA2678186A1 (en) 2008-09-25
KR20090116743A (ko) 2009-11-11
CN101669118A (zh) 2010-03-10
US8504541B2 (en) 2013-08-06
WO2008113921A3 (fr) 2009-09-24
WO2008113921A2 (fr) 2008-09-25
US20100106696A1 (en) 2010-04-29

Similar Documents

Publication Publication Date Title
KR101471055B1 (ko) 파일 관리 방법
US8200788B2 (en) Slice server method and apparatus of dispersed digital storage vaults
EP1325409B1 (en) A shared file system having a token-ring style protocol for managing meta-data
US8694564B2 (en) Method and system for providing on-demand services through a virtual file system at a computing device
US7860907B2 (en) Data processing
US9922046B2 (en) Scalable distributed metadata file-system using key-value stores
US11403414B2 (en) Method and system for secure storage of digital data
US20120284317A1 (en) Scalable Distributed Metadata File System using Key-Value Stores
EP2631805A1 (en) Storage-service-provision device, system, service-provision method, and service-provision program
CN104778192B9 (zh) 表示可内容寻址存储系统的目录结构
US20060089936A1 (en) System and method for a secure, scalable wide area file system
US8090925B2 (en) Storing data streams in memory based on upper and lower stream size thresholds
JP4490068B2 (ja) ネットワークを利用したデータ保管システム
CN111435286A (zh) 一种数据存储方法、装置和系统
US8290993B2 (en) Data processing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant