KR20060054099A - 전자 파일 시스템에서 리스트와 다른 항목의 관리 - Google Patents
전자 파일 시스템에서 리스트와 다른 항목의 관리 Download PDFInfo
- Publication number
- KR20060054099A KR20060054099A KR1020050098396A KR20050098396A KR20060054099A KR 20060054099 A KR20060054099 A KR 20060054099A KR 1020050098396 A KR1020050098396 A KR 1020050098396A KR 20050098396 A KR20050098396 A KR 20050098396A KR 20060054099 A KR20060054099 A KR 20060054099A
- Authority
- KR
- South Korea
- Prior art keywords
- list
- item
- items
- repository
- under
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
항목들이 DAG(directed acyclic graph)에 구성되도록 하는 전자 파일 시스템 구성의 구조가 제공된다. 항목들이 트리 구조에서와 같이 계층적으로(hierarchically) 구성될 수 있는 한편, 항목들은 또한 복수 개의 직접적인 부모들을 가질 수 있다. 전자 파일 시스템은 복수 개의 다른 저장소들에 더 액세스를 할 수 있다. 또한, 항목들이 다른 저장소들 간에 조작되고 재구성됨으로써 항목들을 관리하기 위한 다양한 기술들이 논의된다. 예를 들어, 항목이 제2의 다른 저장소에 이동되거나 복사되는, 동일 제1 저장소에 복수 개의 직접적인 부모들 모두를 갖는 항목을 관리하기 위한 기술들이 논의된다. 이들 기술들 중의 특정한 것들은 사용자의 의도에 더 가깝게 매치(match)할 수 있고 및/또는 사용자들의 관점에서 예상가능한 결과들을 가져올 수 있다. 그렇게 함으로써, 한 개의 구성에 수행된 액션들(actions)은 기대되지 않은 또는 의도되지 않은 방식들로 다른 구성들에 영향을 미치지 않는다.
전자 파일 시스템, DAG, 리스트 얕은/깊은 이동, 리스트 리싸이클, 홀딩 링크, 프락시 항목, 부유 항목
Description
도 1은 본 발명의 양태들과 사용될 수 있는 설명적 컴퓨팅 디바이스의 기능 블럭도이다.
도 2는, 본 발명의 적어도 일 양태에 따라, 저장소들 간에 한 항목을 이동하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 3은, 본 발명의 적어도 일 양태에 따라, 한 항목이 역전(reverse) 이동되기 위해 채택되어 도 2에 보여진 동작을 역전할 수 있는 단계들을 기능적으로 보여준다.
도 4는, 본 발명의 적어도 일 양태에 따라, 한 개의 리스트에 한 항목을 추가하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 5는, 본 발명의 적어도 일 양태에 따라, 한 개의 리스트로부터 한 개의 항목을 제거하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 6은, 본 발명의 적어도 일 양태에 따라, 한 항목을 복사하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 7은, 본 발명의 적어도 일 양태에 따라, 동일 저장소 내에 한 개 의 리스트를 이동하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 8은, 본 발명의 적어도 일 양태에 따라, 저장소들 간에 한 개의 리스트를 "얕은(shallow)" 이동하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 9는, 본 발명의 적어도 한 개의 양태에 따라, 저장소들 간에 한 개의 리스트를 역전 "얕은" 이동하기 위해 채택되어, 도 8에 보여진 동작을 역전할 수 있는 단계들을 기능적으로 보여준다.
도 10은, 본 발명의 적어도 한 개의 양태에 따라, 저장소들 간에 한 개의 리스트를 "구조(structure)" 이동하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 11은, 본 발명의 적어도 한 개의 양태에 따라, 저장소들 간에 한 개의 리스트를 역전 "구조" 이동하기 위해 채택되어 도 10에 보여진 동작을 역전할 수 있는 단계들을 기능적으로 보여준다.
도 12는, 본 발명의 적어도 한 개의 양태에 따라, 저장소들 간에 한 개의 리스트를 "깊은(deep)" 이동하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 13은, 본 발명의 적어도 한 개의 양태에 따라, 저장소들 간에 한 개의 리스트를 역전 "깊은" 이동하기 위해 채택되어 도 12에서 보여진 동작을 역전할 수 있는 단계들을 기능적으로 보여준다.
도 14는, 본 발명의 적어도 한 개의 양태에 따라, 저장소들 간에 한 개의 리스트를 "얕은" 복사하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 15는, 본 발명의 적어도 한 개의 양태에 따라, 저장소들 간에 한 개의 리 스트를 "구조" 복사하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 16은, 본 발명의 적어도 한 개의 양태에 따라, 저장소들 간에 한 개의 리스트를 "깊은" 복사하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 17은, 본 발명의 적어도 한 개의 양태에 따라, 한 개의 리스트를 삭제하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
도 18은, 본 발명의 적어도 한 개의 양태에 따라, 한 개의 리스트를 리싸이클(recycle)하기 위해 채택될 수 있는 단계들을 기능적으로 보여준다.
<도면의 주요 부분에 대한 부호의 설명>
120 : 프로세싱 유닛
133 : BIOS
134 : 운영 시스템
135 : 응용 프로그램
140 : 비분리형 비휘발성 메모리 인터페이스
160 : 사용자 입력 인터페이스
170 : 통신망 인터페이스
172 : 모뎀
195 : 출력 주변 기기 인터페이스
본 발명의 양태들은 일반적으로, 항목들의 한 개 이상의 저장소들에 액세스하는 DAG(directed acyclic graph) 아키텍처를 갖는 전자 파일 시스템과 같은, 전자 파일 시스템에서 항목들을 관리하는 것에 관한 것이다.
현대적 전자 파일 시스템들은 통상적으로 계층적 트리 구조(hierarchical tree structure)에 파일들을 저장한다. 트리의 각 노드는 한 개 이상의 파일들을 포함하는 폴더로 간주된다. 통상적으로, 그런 전자 파일 시스템들에서, 한 항목의 위치는 파일 시스템에서 정의된 구성에 의해 제한된다. 예를 들어, 다수의 파일 시스템들에서, 각 파일은 한 개(그리고 단지 한 개)의 폴더에 위치된다. 부연하면, 각 파일은 단지 한 개의 직접적인 부모를 가진다. 이것이 몇 년 전에는 괜찮았을지라도, 이 트리 구조는 매우 제한적이 되고 있다. 종래 계층적 트리 구조 구조들은 경직되고; 트리에서, 파일 존속기간(lifetime)과 파일 구성이 하나로 합쳐진다. 즉, 파일은 단지 그것이 다른 파일들이나 폴더들에 관련하여 구성된 위치를 갖는 동안에만 존재할 수 있다. 또한, 파일은 복수 개의 구성들에 배치될 수 없다. 이것은, 사용자가, 예를 들어, 복수 개의 폴더들에서 파일을 일람(view)하기를 원하면, 사용자는 그 파일의 복수 개의 복사본들을 만들어야 함을 의미한다. 이것은 사용자에게 지루하고도 오류를 발생시키기 쉽고 저장 공간의 낭비이다.
사용자들이 더 쉽게 파일들로의 액세스를 공유하고 그 액세스를 제어하도록 하는 새로운 전자 파일 시스템 구성의 구조를 개발할 필요가 있다. 이 구성의 구조로, 그 구성의 구조의 항목들을 관리하는 것에 대한 새 문제점들이 대두된다.
본 발명의 양태들은 항목들이 DAG(directed acyclic graph)에서 구성되도록 하는 전자 파일 시스템 구성의 구조를 제공하는 것에 관한 것이다. 이것은, 항목들이 트리 구조에서 처럼 계층적으로 구성될 수 있는 한편, 항목들은 또한 복수 개의 직접적인 부모들을 가질 수 있슴을 의미한다. DAG 구성의 구조는 복수 개의 부모들을 허용하지만, 자식 항목이 그 항목의 직접 또는 간접적인 부모인 항목의 부모가 되도록 하지 않는다. 부연하면, DAG는 항목들에 및 항목 밖으로 복수 개의 가지들을 제공하지만, 순환(cyclic) 가지들을 제공하지는 않는다. 이 구성의 구조는 필요한 유연성을 제공하여 복수 명의 사용자 파일 공유 및 액세스 제어를 적절히 핸들링한다.
본 발명의 추가 양태들은 전자 파일 시스템에 복수 개의 다른 저장소들에의 액세스를 제공하는 것에 관한 것이다. 저장소는 내부적으로 일관적인 데이타의 표현이다. 저장소는 복수 개의 물리적 저장 디바이스들(예를 들어, 하드 드라이브들)을 스팬(span)할 수 있지만, 개념적으로는 파일 시스템에 의해 한 개의 저장 유닛인 것으로 간주된다. 한 저장소는 저장소 내의 항목들과 저장소 내의 홀딩 링크들(holding links)에 대해 특정한 보증들을 할 수 있지만, 다른 저장소의 항목들과 홀딩 링크들에 대해서는 아니다. 또한, 항목들의 존속기간 및 링크들의 일관성에 대한 규칙들은 동일한 저장소에 적용할 수 있지만, 다른 저장소들에도 그런 것은 아니다. 일부 실시예들에서, 한 항목은 단지 그 항목 자체와 동일한 저장소에 존재하는 한 개 이상의 부모들만을 가질 수 있다. 부연하면, 부모와 자식 간의 홀딩 링크들은 다른 저장소들 간에는 해당되지 않을 것이다.
본 발명의 추가 양태들은 여전히 항목들이 다른 저장소들 간에 조작되고 재구성되면서 관리되는 방법을 취급한다. 이들 양태들은, 예를 들어, 한 항목이 제2의 다른 저장소에 이동되거나 복사되는 경우, 동일 제1 저장소에 복수 개의 직접적인 부모들 모두를 갖는 그 항목에 발생할 수 있는 것들을 다룬다. 그런 동작들을 관리하는 한 개 이상의 방식들이 존재하지만, 일부 방식들은 사용자 의도들과 더 근접하게 매치할 수 있고 및/또는 사용자들의 관점들에서의 더 예상가능한 결과들을 가질 수 있다.
본 발명의 이들과 다른 양태들은 다음의 설명적 실시예들의 상세한 설명을 고려하여 명백해질 것이다.
본 발명의 전술된 개요 및 다음 설명적 실시예들의 상세한 설명은, 예로서만 포함되는, 청구된 발명에 대해 제한적인 방식이 아닌, 동반된 도면들과 연관되어 읽혀질 때 더 잘 이해된다.
<설명적 컴퓨팅 환경>
본 발명의 양태들은 도 1에 설명적으로 도시된 컴퓨터(100)와 같은 컴퓨팅 디바이스와 연관하여 사용될 수 있다. 컴퓨터(100)의 컴포넌트들은 프로세싱 유닛(120), 시스템 메모리(130), 및 프로세싱 유닛(120)에 시스템 메모리(130)를 포함하는 다양한 시스템 컴포넌트들을 결합하는 시스템 버스(121)를 포함할 수 있지만, 이에 제한되지는 않는다. 시스템 버스(121)는 메모리 버스나 메모리 제어기, 주변기기 버스, 및/또는 다양한 버스 아키텍처들 중의 임의의 것을 사용하는 로컬 버스 를 포함하는 여러 유형들의 버스 구조들 중의 임의의 것을 포함할 수 있다.
시스템 메모리(130)는 ROM(read only memory;131) 및 RAM(random access memory;132)과 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 스타트업 동안과 같이, 컴퓨터(110) 내에 소자들 간의 정보 전송을 돕는 BIOS(basic input/output system)는 통상적으로 ROM(131)에 저장된다. RAM(132)은 통상적으로 즉시 액세스가능하고 및/또는 프로세싱 유닛(120)에 의해 현재 동작 중인 데이타 및/또는 프로그램 모듈들을 포함한다. 컴퓨터(100)는 또한 운영 시스템(134), 한 개 이상의 응용 프로그램들(135), 기타 프로그램 모듈들(136), 및/또는 프로그램 데이타(137)를 저장하고 및/또는 실행할 수 있다. 컴퓨터(100)는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 더 포함할 수 있다. 단지 예로서, 도 1은 비분리형 비휘발성 자기 매체에 읽고 쓰는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)에 읽고 쓰는 자기 디스크 드라이브(151), 및 CD ROM이나 다른 광 매체와 같은 분리형 비휘발성 광 디스크(156)에 읽고 쓰는 광 디스크 드라이브(155)를 도시한다. 사용될 수 있는 다른 분리형/비분리형 및 휘발성/비휘발성 컴퓨터 저장 매체는, 예를 들어, 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(digital versatile disks), 디지탈 비디오 테이프, 반도체 RAM, 반도체 ROM, 및 기타 등등을 포함한다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151)와 광 디스크 드라이브(155)는 통상적으로, 인터페이스(150)와 같은, 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다. 도시된 예에서, 하드 디스크 드라이브(141)는 예를 들어 한 개의 저장소로서 간주될 수 있고, 한편 광 디스크 드라이브(155)에 사용되는 CD ROM은 다른 저장소로서 간주될 수 있다. 또한, 하드 디스크 드라이브(141) 내의 파티션들(partitions)은 각각 다른 저장소로서 간주될 수 있다. 다른 예로서, 복수 개의 내부 하드 드라이브들은, 원하는 대로, 한 개의 큰 저장소로서 또는 복수 개의 더 작은 독립적 저장소들로서 구성될 수 있다.
다양한 컴퓨터 저장 매체들 중의 임의의 것에 저장된 데이타는 다양한 형식들로 저장될 수 있다. 예를 들어, 데이타는 파일들이나 다른 항목들과 같이 개별 부분들에 저장될 수 있다. 운영 시스템(134)의 부분일 수 있고 및/또는 그것과 분리될 수 있는, 전자 파일 시스템은 컴퓨터 저장 매체의 항목들 및 다른 데이타의 저장, 검색수취, 및/또는 탐색을 관리하는 책임이 있을 것이다. 전자 파일 시스템은 소프트웨어, 하드웨어, 및/또는 펌웨어(firmware)로서 구현될 수 있다.
사용자는, 키보드(162) 및/또는, 일반적으로 마우스, 트랙볼, 또는 터치 패드로서 일컬어지는, 포인팅 디바이스(161)와 같은 입력 디바이스들을 통해 컴퓨터(100)에 커맨드들과 정보를 입력할 수 있다. 다른 입력 디바이스들(도시 안됨)은 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너, 또는 기타 등등을 포함할 수 있다. 이들과 다른 입력 디바이스들은 종종 시스템 버스(121)에 결합된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트, 또는 USB(universal serial bus)와 같은 다른 인터페이스와 버스 구조들을 통해 결합될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 디바이스는 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 컴퓨터(100)는, 출력 주변기기 인터페이스(195)를 통해 시스템 버스에 접속될 수 있는, 스피커들(197)과 프린터(196)와 같은 다른 주변기기 출력 디바이스들을 더 포함할 수 있다.
일부 양태들에서, 펜 디지타이져(165)와 동반하는 펜이나 스타일러스(166)는 디지탈로 프리핸드(freehand) 입력을 캡춰하기 위해 제공된다. 펜 디지타이져(165)와 사용자 입력 인터페이스(160) 간의 직접 접속이 도시되지만, 실제로는, 펜 디지타이져(165)는, 병렬 포트나 다른 인터페이스를 통해, 또는 유선이나 무선으로, 임의의 기술로 시스템 버스(121)를 통해, 직접 프로세싱 유닛(120)에 결합될 수 있다. 펜(166)은, 예를 들어, 가속도계 및 자력계 등을 포함하는 전자 잉크 스트로크들을 판정하는 다른 센싱 시스템들을 더 가질 수 있다.
컴퓨터(100)는, 원격 컴퓨터(180)와 같은, 한 개 이상의 원격 컴퓨터들에 논리 접속들을 사용하여 통신망된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 통신망 PC, 피어 디바이스, 또는 다른 일반 통신망 노드일 수 있고, 단지 메모리 저장 디바이스(181)만이 도 1의 예로서 도시되지만, 통상적으로, 컴퓨터(100)에 관련하여 위에 기재된 소자들의 다수나 전부를 포함한다. 도 1에 도시된 바와 같이 컴퓨터(100) 외부의 설명적 논리 접속들은 LAN(local area network;171) 및/또는 WAN(wide area network;173)을 포함할 수 있고, 또한 다른 통신망들을 포함할 수 있다. 그런 통신망 환경들은 사무실, 기업-전반 컴퓨터 통신망, 인트라넷, 및 인터넷에서 일반적이다. 컴퓨터(100)는 유선 및/또는 무 선 능력들을 더 포함할 수 있다. 예를 들어, 통신망 인터페이스(170)는 블루투스, SWLan, 및/또는IEEE 802.11과 호환할 수 있다. 다른 무선 통신 프로토콜들은 이들 프로토콜들과 연관하여 또는 이들 프로토콜들 대신에 사용될 수 있슴을 이해할 것이다.
LAN 통신망 환경에서 사용될 때, 컴퓨터(100)는 통신망 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속될 수 있다. WAN 통신망 환경에서 사용될 때, 컴퓨터(100)는, 인터넷과 같은, WAN(173)을 통해 통신을 개설하는 모뎀(172)이나 다른 수단을 포함할 수 있다. 내장이거나 외장일 수 있는, 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다.
원격 컴퓨터(180) 및/또는 컴퓨터(100) 외부의 임의의 다른 디바이스의 저장 매체는 또한 컴퓨터(100) 외부의 논리 접속들을 통해 전자 파일 시스템에 의해 액세스할 수 있는 추가 저장소들로서 간주될 수 있다. 예를 들어, 원격 컴퓨터(180)의 하드 디스크 드라이브는 컴퓨터(100)에서 실행되는 전자 파일 시스템에 의해 액세스될 수 있고, 그 하드 디스크 드라이브(및/또는, 다른 하드 디스크 드라이브와 같은, 하드 디스크 드라이브와 그룹화된 다른 저장 디바이스들)는 그 자체가 저장소로서 간주될 수 있다. 또는, 컴퓨터(100) 외부의 한 개 이상의 서버들은 인터넷을 통해 전자 파일 시스템에 의해 액세스될 수 있고, 이들 서버들의 각각 또는 서버들의 그룹들은 저장소로서 간주될 수 있다.
<전자 파일 시스템에 의해 부과된 설명적 구성의 구조>
컴퓨터(100)에서 실행하는 전자 파일 시스템은 항목들의 DAG 구성을 부과할 수 있다. 항목은, 파일(예를 들어, 문서 편집 파일, 사진, MP3 노래 등), 연락처, 달력 항목, 이메일 항목, 또는 다른 항목들의 리스트와 같은, 거의 임의의 유형의 개별 데이타 구조일 수 있다. 리스트-유형 항목은 순서화된 리스트일 수도 있고 아닐 수도 있으며, 종래 폴더와 유사하게 간주될 수 있다. 리스트가 항목을 리스트할 때, 그 리스트는 부모로서 간주되고, 그 항목은 자식으로서 간주된다. 자식 항목은 그 항목이 그 부모 리스트에 의해 리스트되면 부모 리스트 하에 직접적으로 구성되는 것으로서 본 명세서에서 참조될 것이다. 이것은 또한 부모 리스트와 자식 항목 간의 홀딩 관계(holding relationship)로서 알려진다. 도 7에 대해 아래에 설명될 것처럼, 자식 항목은 그 항목이 부모 리스트 하에 직접적으로 또는 간접적으로 구성되면 부모 리스트 하에 구성되는 것으로서 본 명세서에 참조될 것이다. 전체 DAG 아키텍처의 추가된 유연성을 제공하기 위해, 복수 개의 다른 리스트들은 동일 항목을 그들 하에 모두 리스트 또는 가질 수 있다. 부연하면, 한 항목은 복수 개의 부모들을 가질 수 있다.
예를 들어, 도 7의 최상위 부분은 전자 파일 시스템에 의해 부과되고 관리될 수 있는 설명적 구성의 구조를 기능적으로 보여준다. 이 예에서, 리스트 L2는 리스트 L1, 리스트 L4, 및 리스트 L6의 각각 하에 직접적으로 구성된다. 그러므로, 리스트 L2는 3개의 직접적인 부모들을 가진다. 리스트 L3은 리스트 L2 하에 직접적으로 구성되지만, 또한 그것은 비록 간접적이지만, 리스트들 L1, L6, 및 L4 하에 구성된다. 논리스트(non-list) 항목 I1(예를 들어, 파일, 또는 파일 스트림이 없 이 순수하게 체계화된 논-파일-백드(non-file-backed) 항목)은 리스트 L3 하에 직접적으로 구성되고 리스트들 L1, L2, L4, 및 L6 하에 간접적으로 구성된다. 논리스트 항목 I2는 리스트 L2 하에 직접적으로 구성되고, 리스트들 L1, L4, 및 L6 하에 간접적으로 구성된다.
또한, 전자 파일 시스템은 한 개 이상의 항목들이 배치될 수 있는 한 개 이상의 작업공간을 제공할 것이다. 작업공간에서의 항목들은 작업공간의 다른 항목에 관련된 구성을 가질 수도 있고 갖지 않을 수도 있다. 예를 들어, 항목들 L1, L2, L3, L4, L6, I1, 및 I2는, 이들 항목들을 포함하는 상자로서 기능적으로 사료될 수 있는, 동일 작업공간에 있을 수 있다. 이들 항목들의 각각은 다른 것들에 관련된 구성을 가진다. 그러나, 리스트 L5(도 7)는 또한 동일 작업공간에 있을 수 있지만, 다른 항목에 관련된 구성을 갖지 않을 수 있다. 이 예에서, 리스트 L5는, 리스트들 L1과 L4와 같이, "부유(floating)" 항목으로서 간주된다. 한 항목이 임의의 다른 항목에 의해 홀드되지 않거나, 또는 구성되지 않으면 그 항목은 부유 항목이다. 항목이 작업공간에 배치되면, 그것은 그것이 작업공간에서 제거될 때까지 그 작업공간에 남아있다. 그러므로, 작업공간 내에서, 항목들이 작업공간 내에 있는지에 영향을 미치지 않고 원하는 대로 항목들은 구성될 수 있다(또는 구성되지 않을 것임).
일단 위에 기재된 구성의 구조가 부과되면, 항목들의 관리에서 고려되어야 할 필요가 있는 특정 논쟁점들이 존재한다. 예를 들어, 한 항목이 한 개 이상의 부모 리스트 하에 직접적으로 또는 간접적으로 구성될 수 있으므로, 항목을 이동하 거나 복사하기 위해 요구를 핸들링하는 다수의 가능한 방식들이 존재한다. 아마도 사용자는 부모 리스트들 중의 하나로부터 항목을 이동하고, 나머지 다른 부모 리스트들로부터는 이동될 필요가 없는 것을 의도할 것이다. 사실상, 사용자는 나머지 다른 부모 리스트들이 존재함 또는 그들이 이동되기 위해 탐색되는 항목을 홀드함을 알지 못할 수도 있다. 이들 상황들의 예들, 및 설명적 해결책들이 아래 기재된다.
<논리스트(Non-List) 항목 동작들>
다음은 항목들에 수행될 수 있는 동작들의 예들이다. 동작은 동일 저장소 내에 또는 저장소들에서("저장소 간에(cross store)") 만들어질 수 있다. 예를 들어, 항목은 동일 저장소 내의 한 위치에서 다른 위치로 이동될 수 있다. 또는, 항목은 제1 저장소에서 제2 저장소로 저장소 간에 이동될 수 있다. 이들 모두의 예들은 아래에 기재된다.
<항목 이동 - 저장소 간에>
본 논의의 목적을 위해 홀딩 링크들은 저장소들을 가로지를 수가 없음이 가정된다. 그러므로, 한 항목이 제1 저장소에서 2개의 다른 구성들(예를 들어, 2개의 다른 리스트들)에서 동시에 존재하면, 그리고 사용자가 제2 저장소에 이들 구성들 중의 하나를 이동하려고 시도하면, 이것이 핸들링될 수 있는 여러 개의 가능한 방법들이 있다. 도 2의 참조에서, 예를 들어, 항목 I1은 저장소 1에서 리스트들 L1 및 L2 모두에 의해 동시에 홀드된다. 저장소 2는 리스트 L3을 가진다. 사용자가 리스트 L2에서 L3으로 항목 I1을 이동하기를 원한다고 가정하자. 제1 가능성은 저장소 2로 항목 I1을 이동하여 리스트 L3에 있는 것일 것이다. 그러나, 이것은 또한 리스트들 L1과 L2에 있는 항목 I1의 구성을 해체할 것이다. 이것은, 특히 사용자가 리스트 L1과 인터랙트하지 않을 것이고, 실제로 리스트 L1를 알아차리지도 못할 것임을 고려할 때, 사용자의 의도가 아닐 것이다. 제2 가능성은 항목 I1이 리스트 L3에 복사될 것이라는 것이다. 그러나, 이것은 또한 이제 항목 I1의 2개의 복사본들이 있을 전체 구성으로 변경할 것이다. 이것은, 아마도 저장소 1의 저장 공간을 해제(free up)하기 위해, 사용자가 항목 I1을 이동하려고(항목 I1를 복사하는 것이 아님) 의도했으므로, 기대하지 않은 결과일 수 있다. 제3 가능성으로는 이동 동작이 실패할 수 있지만, 대부분의 사용자들은 이 결과에 노할 것이다. 제4 가능성은 프락시 항목(proxy item)으로 항목 I1를 변환하는 것이다. 프락시 항목은, 포인트-투(point-to) 항목(즉, 항목 I1)의 메타데이타를 갖는, 숏커트(shortcut) 또는 포인터이다. 이 제4 가능성은 구성이 이동전(pre-move) 구성과 되도록 가깝게 모방하도록 한다.
이 제4 가능성을 도시하는 도 2의 참조에서, 단계들은 원안의 번호들을 사용하여 도시되고(시간적 순서일 필요는 없슴), 항목들은 상자들로서 도시된다. 이 예에 도시된 바와 같이, 단계들 1과 2에서, 항목 I1은 저장소 1의 리스트 L2로부터 저장소 2의 리스트 L3으로 이동된다. 더 구체적으로, 단계 1에서, 항목 I1은, 항목 I1의 복사본을 표현하는, 블럽(blob) B1로서 직렬화(serialize)된다. 그 후, 단계 2에서, 블럽 B1은, 리스트 L3에 의해 홀드되어지는, 항목 I1(2)로 비직렬화(deserialize)된다. 이 새 항목이 본 명세서에서 항목 I1(2)로서 참조될 수 있지 만, 항목 I1(2)은 원래 항목 I1의 복사본이다. 이 명명 스킴(naming scheme)은 논의 목적만을 위해서이고, 항목 I1(2)이 기술적으로 원래 항목 I1이 아님을 단순히 구별하기 위해 사용된다. 부연하면, 항목 I1(2)은 원래 항목 I1이 사용한 것과는 다른 저장공간(예를 들어, 다른 하드 디스크의 다른 섹터들)을, 그것 외에는 그것이 항목 I1의 복사본일 것이지만, 사용할 것이다. 복사본은 블럽으로서 한 항목(즉, 항목 I1)을 직렬화하여 만들어질 수 있고, 그 후 그 블럽을 다른 항목(즉, 항목 I1(2))으로 비직렬화할 수 있다.
여전히 도 2의 참조에서, 단계 3에서, 항목 I1은 항목 I1(2)로의 숏커트(또는 프락시 항목)로 변환된다. 프락시 항목은 타겟(target) 항목을 가리키거나 또는 링크하지만, 그 타겟 항목의 모든 실제 데이타를 포함하지는 않는 항목이다. 이것을 위한 이유는 사용자가 단지 리스트 L2로부터 항목 I1을 이동하려고만 의도했지만, 항목 I1에 홀딩 링크를 또한 가진, 리스트 L1으로부터 이동일 필요는 없기 때문이다. 그러므로, 항목 I1(2)에 프락시 항목을 생성하여, 리스트 L1를 살펴보는 사용자는 항목 I1을, 그것이 이동 동작에 의해 전혀 영향을 받지 않았지만, 여전히 보게될 것이다. 이것은 리스트 L1을 참조하지 않고, 항목 I1이 리스트 L2로부터 이동됨만을 요구하는 사용자의 의도일 것이다. 또한, 프락시 항목으로 항목 I1을 대체하거나 변환하여, 저장소 1의 저장 공간이 해제되며, 이것은 저장소 1에서 저장소 2로 항목 I1을 이동하기 위한 사용자의 의도와 일치된다. 원래 항목 I1이, 그것이 또한 리스트 L1에 의해 또한 홀드되므로, 저장소 1에서 유지되면, 이동 동작은 저장소 1에서 저장 공간을 해제하지 않을 것이다. 그런 결과는 사용자 의 도에 반하는 것일 것이다. 최종적으로, 단계 4에서, 사용자에 의해 의도되었을 것처럼, 리스트 L2와 항목 I1 간의 관계는 항목 I1이 리스트 L2에 의해 더 이상 리스트되지 않도록 끊어진다. 그러므로, 그 결과는, 항목 I1이 이제 리스트 L1(프락시 항목으로서이지만)과 리스트 L3에 의해, 그러나 리스트 L2는 아닌, 리스트된다.
<항목 역전 이동 - 저장소 간에>
이전에 기재된 바와 같이, 사용자의 기대 및 바램과 가장 잘 일치할 것인 예상가능한 방식으로 항목들에 동작하는 것은 바람직할 것이다. 이것은 역전성(reversibility)을 포함한다. 부연하면, 제1 액션을 시작하여 항목이나 항목들의 구성을 변경하여, 및 그 후 역전 액션을 수행하여, 구성은 제1 액션 이전에 존재했던 원래 구성으로 다시 복귀해야 함이 바람직할 것이다. 역전성이 필수사항이지는 않지만, 그것은 본 명세서에 기재된 동작들 중의 일부 또는 전체에 대해 바람직할 것이다. 도 2에 대해 위에 논의된 바와 같이, 예를 들어, 사용자가 리스트 L3으로 항목 I1을 처음에 이동했다면, 그리고 그 후, 사용자가 리스트 L2로 항목 I1(2)를 이동하는 이동 동작을 즉시 수행했다면, 결과적 구성은 처음 이동 동작 이전에 원래 구성과 동일해야 하는 것이 선호된다. 이것은 도 3에 설명적으로 도시된다. 첫번째, 단계 1에서, 항목 I1(2)은, 항목 I1(2)의 복사본을 나타내는, 블럽(blob) B1로 직렬화된다. 단계 2에서, 이동될 항목을 타겟하는 프락시 항목이 존재하는지가 판정된다. 이 예에서, 그런 프락시 항목이 존재한다; 프락시 항목 I1은, 이동될 항목인, 항목 I1(2)를 타겟한다. 그런 프락시 항목이 존재하면, 프락시 항목은 제거되고, 이 경우 항목 I1로서 참조될 것인, 항목 I1(2)의 복사본으로 대체된다. 그런 프락시 항목이 존재하지 않으면, 프락시 항목은 제거되거나 또는 대체될 필요가 없다. 어느 이벤트에서든지간에, 항목 I1(2)은, 항목 I1로 블럽 B1을 비직렬화하여 완료되는, 항목 I1로서 복사된다. 단계 3에서, 항목 I1(2)가 한 개의 리스트, 리스트 L3, 에 의해서만 리스트되므로, 항목 I1로의 프락시 항목은 리스트 L3 하에 생성될 필요가 없다. 그러므로, 항목 I1(2)은 리스트 L3으로부터 제거된다(그리고, 저장소 2로부터 지워짐). 그러므로, 리스트 L2로 항목 I1(2)을 역전 이동하는 결과는 도 2에 도시된 원래 구성과 동일한 구성이다.
<항목 추가>
도 4는 항목 I1이 리스트 L1에 추가되는 설명적 일 실시예를 도시한다. 이 예에서, 리스트 L1이 항목 I1을 홀드하도록 항목 I1과 리스트 L1 간에 홀딩 관계가 생성되는 한 개의 단계가 수행된다. 물론, 복수 개의 리스트들이 동일 항목을 홀드할 수 있으므로, 항목 I1은 또한 다른 리스트들에도 추가될 수 있다. 또한, 항목 I1은 그것이 임의의 리스트에 의해서도 홀드되지 않도록 추가될 수도 있다. 그런 항목은 본 명세서에서 부유 항목으로서 일컬어진다.
<항목 제거>
도 5는 항목 I1이 리스트 L1로부터 제거되는(그러나 리싸이클되거나 지워지지 않음) 설명적 실시예를 도시한다. 이 경우, 항목 I1은 단지 리스트 L1에 의해서만 홀드되고, 일단 리스트 L1로부터 제거되면, 항목 I1은 임의의 리스트에 의해서도 홀드되지 않는 부유 항목이 된다. 항목 I1이, 예를 들어, 리스트 L2와 같은, 다른 리스트에 의해 또한 홀드되면, 리스트 L1로부터 항목 I1을 제거하는 결과는 항목 I1이 단지 리스트 L2에 의해서만 홀드될 것이라는 것일 것이다.
<항목 복사 - 동일 저장소>
도 6에 도시된 설명적 실시예의 참조에서, 사용자는 항목 I1이 동일 저장소 내에서 복사됨을 요구할 수 있다. 한 가지 가능성은 한 개의 복사본(항목 I1(2))이 부유 항목이 되도록 생성된다는 것이다. 다른 가능성은 항목 I1(2)이 원래 항목 I1과 동일 방식으로 구성된다는 것이다. 이 나중 경우, 단계 1에서, 항목 I1은, 항목 I1의 복사본을 나타내는, 블럽 B1로 직렬화된다. 그 후, 단계 2에서, 블럽 B1은 항목 I1(2)로서 비직렬화되고, 리스트 L1과 항목 I1(2) 간의 홀딩 관계는 원래 항목 I1과 리스트 L1 간의 홀딩 관계를 매치하기 위해 수립된다. 항목 I1이 리스트 L1과 다른 리스트 L2 모두에 의해 홀드되면, 항목 I1(2)은 그것이 단지 리스트 L1에 의해서만 홀드되도록 여전히 복사될 것이다. 이것은, 이 예에서, 원래 항목 I1이 리스트 L1의 컨텍스트에 복사되고, 리스트 L1의 컨텍스트의 액션들은 리스트 L2와 같은 다른 독립적 리스트들에 영향을 미치지 않을 것이기 때문이다.
<리스트 동작들>
위의 예들은 논리스트 항목들에의 동작들을 다룬다. 리싸이클이나 삭제와 같은, 논리스트 항목들의 다른 동작들이 수행될 수 있다. 또한, 동작들은 리스트들에서 수행될 수 있다. 이들은 리스트 동작들로서 참조된다. 예를 들어, 리스트들은 복사되고, 이동되고, 추가되고, 삭제되고, 리싸이클되고, 또는 지워질 것이다. 리스트 동작들의 예들이 이제 기재된다. 리스트 동작이 수행되는 방법에 따라, 리스트 동작은 선택된 리스트(들)를 둘러싸는 구성 이하에 또는 구성 이상에 영향을 미칠 것이다.
<리스트 이동 - 동일 저장소>
예를 들어, 동일 저장소 내에 리스트가 이동될 수 있다. 도 7에 도시된 바와 같이, 이것은 매우 쉬운 동작일 것이다. 본 명세서에서, 사용자는 리스트 L1에서 리스트 L5로 리스트 L2를 이동하기를 원한다. 그러므로, 리스트 L1로부터 리스트 L2로의 홀딩 링크는 끊어지고, 새 홀딩 링크가 리스트 L5와 리스트 L2 사이에 수립된다. 이동이 동일 저장소 내에서 만들어지기 때문에, 리스트들 L3, L4, 및 L6, 그리고 I1 및 I2와 같은, 남아있는 구성에 영향을 미칠 필요가 없다.
<리스트 얕은 이동 - 저장소 간에>
저장소들 간의 리스트 이동 동작의 3개의 버젼들이 본 명세서에 기재된다. 제1 버젼에서, "얕은" 이동은 도 8에 도시된 바와 같이 수행될 수 있다. 이동 리스트 얕은 동작으로서 또한 알려진, 얕은 이동은 선택된 리스트만을 이동한다. 그러므로, 예를 들어, 사용자가 저장소 1의 리스트 L1로부터 저장소 2의 리스트 L5로 리스트 L2를 얕은 이동하기를 원하는 경우, 다음 단계들이 수행될 수 있다. 단계 1에서, 리스트 L2는, 리스트 L2의 복사본을 나타내는, 블럽 B1을 생성하기 위해 직렬화된다. 단계 2에서, 블럽 B1은, 리스트 L2의 복사본인, 리스트 L2(2)로 비직렬화된다. 단계 3에서, 단지 선택된 리스트 L2가 저장소 2에 이동되어야 하므로, 리스트 L3으로의 프락시 항목이 생성되고, 그 프락시 항목으로의 홀딩 링크가 리스트 L2(2)로부터 생성된다. 유사하게, 단계 4에서, 항목 I2로의 프락시 항목이 생성되고, 그 프락시 항목으로의 홀딩 링크가 리스트 L2(2)로부터 생성된다. 그러므로, 결과적 구성은 단지 선택된 리스트 L2 그 자체가 이동되었다는 것이다. 단계 5에서, 원래 항목 L2가 다른 리스트(즉, L6)에 의해 홀드되므로, 항목 L2는 단순히 삭제되지 않아야 한다. 그렇지 않으면, 이것은 변경되도록 명백히 요구되지 않는 구성을 혼란시킬 것이다. 이전에 논의된 바와 같이, 사용자는 단지 리스트 L1로부터, 임의의 다른 리스트로부터가 아닌, 리스트 L2를 이동하려고 의도한다. 그러므로, 항목 L2는 프락시 항목으로 L2(2)로 교체되거나 또는 변환되어, 그것은 리스트 L6에 의해 여전히 참조될 것이다(동일 저장소 내에). 단계 6 및 단계 7에서, 원래 리스트 L2가 저장소 1에 더 이상 존재하지 않지만 그 대신 저장소 2에서 리스트 L2(2)가 되므로, 리스트 L2와 리스트 L3 간에 및 리스트 L2와 항목 I2 간에, 홀딩 링크에 대한 어떤 필요도 더 이상 없다. 그러므로, 이들 홀딩 링크들은 제거된다. 항목 I2가 어떤 다른 리스트에 의해 더 이상 홀드되지 않으므로, 항목 I2는 부유 항목이 된다. 이들 동작들의 결과로서, 저장소 2는 이제, 저장소 1의 리스트 L3과 항목 I2를 가리키는 프락시 항목들을 홀드하는, 리스트 L2(2)를 가진다.
<리스트 역전 얕은 이동 - 저장소 간에>
이전에 논의된 바와 같이, 한 개의 동작을 수행할 때, 그것의 역전 동작은 원래 구성으로 결과가 되어짐이 바람직할 것이다. 사용자가 저장소 2의 리스트 L5로부터 저장소 1의 리스트 L1로 리스트 L2(2)를 이동하기를 사용자가 바라는, 그런 상황이 도 9에 이제 도시된다. 단계 1에서, 리스트 L2(2)는, 리스트 L2(2)의 복사본을 나타내는, 블럽 B1을 생성하기 위해 직렬화된다. 단계 2에서, 프락시 항목이 리스트 L2(2)에 대해 저장소 1에 존재하는지가 판정된다. 이 경우, 그런 프락시 항목이 존재하여, 프락시 항목이, 직렬화되어 리스트 L2가 되는, 블럽 B1과 교체된다. 부연하면, 리스트 L2를 위한 원격 프락시 항목은 로컬 저장소 1에 참조가 해제된다. 또한, 사용자에 의해 요구되는 바와 같이, 리스트 L2는 리스트 L1에 추가된다. 그런 프락시 항목이 존재하지 않으면, 블럽 B1은 단순히 비직렬화되고 리스트 L2로서 리스트 L1에 추가될 것이다. 단계 3에서, 리스트 L3은 리스트 L2에 추가되어, L3의 프락시 항목의 구성과 매치한다(저장소 2에서). 단계 4에서, 항목 I2는 리스트 L2에 추가되어, 항목 I2의 프락시 항목의 구성과 매치한다(또한 저장소 2에서). 이것은 로컬 저장소 1로의 항목 I2에 대한 프락시 항목의 참조를 해제하여 수행된다. 단계 5와 7에서, 리스트 L3, 항목 I2, 및 리스트 L2(2)로의 프락시 항목들이 지워진다. 도 9에 도시된 바와 같이, 결과적 구성은 도 8에 도시된 원래 구성과 동일하다.
<리스트 구조 이동 - 저장소 간에>
본 명세서에 논의된 이동 리스트 동작의 제2 버젼은 도 10과 연관하여 기재된다. 이 예에서, 사용자는 리스트 L2와 리스트 L2 하의 대응하는 구조가 저장소 1의 리스트 L1로부터 저장소 2의 리스트 L5로 이동되는 것을 요구한다. 구조가 확장적 저장 공간을 요구하는 항목들의 집합를 지원하는 경우에서, 사용자는 구조(그러나 구조의 논리스트 항목들 전부는 아님)를 복사하기를 원할 것이다. 예를 들어, 플레이리스트는, 각 리스트 하에 다수의 음악 파일들을 가진, 각 아티스트 당 하나씩, 복수 개의 리스트들을 가질 수 있다. 그런 플레이리스트의 파일들은 음악 및/또는 비디오 데이타의 기가바이트(gigabyte)의 양으로 기대될 수 있다. 그런 경우, 사용자는 제1 저장소에서 제2 저장소로 이들 큰 파일들을 복사하여 저장 공간(및/또는 통신망 대역폭)을 낭비하기를 원하지는 않을 것이지만, 그 대신 제2 저장소에 복사된 구조를 사용하여 원래 저장소의 파일들을 단순히 참조할 수 있다. 단계 1에서, 리스트 L2는, 리스트 L2의 복사본을 나타내는, 블럽 B1에 직렬화된다. 단계 2에서, 블럽 B1은, 리스트 L2의 복사본이고 이제 리스트 L5에 의해 홀드되는, 리스트 L2(2)에 비직렬화된다. 이것은 구조 이동 커맨드이므로, 리스트 L3 하의 구조, 또는 구성이 또한 이동된다. 이와 비교하여, 도 8에 대해 이전에 논의된 얕은 이동 커맨드에서, 단지 리스트 L2가 이동된다. 그러므로, 단계 3에서, 리스트 L3은, 리스트 L3의 복사본을 나타내는, 블럽 B2로서 직렬화되고, 단계 4에서, 블럽 B2는, 리스트 L3의 복사본이고 이제 리스트 L2(2)에 의해 홀드되는, 리스트 L3(2)으로서 비직렬화된다. 원래 리스트 L2에 의해 직접적으로 또는 간접적으로 홀드되는 여러 개의 논리스트 항목들(I1 및 I2)이 또한 존재하지만, 이들 항목들이 구조적이 아니므로, 그들은 저장소 2에 이동되지 않는다. 그 대신, 단계 5와 단계 6에서, 프락시 항목들은, 저장소 1에 남아있는, 항목들 I1 및 I2를 가리키는 프락시 항목들이 저장소 2에 생성된다. 또한, 원래 리스트들 L2와 L3가 저장소 1에 더 이상 존재하지 않으므로(다음에 논의될 것처럼, 단지 그들의 프락시들만), 단계 7에서, 리스트 L3과 항목 I1 간의 홀딩 관계는 제거된다. 단계 9에서, 리스트 L2와 리스트 L3 간의 홀딩 관계는 제거되고, 단계 10에서, 리스트 L2와 항목 I2 간의 홀딩 관계가 제거된다. 항목들 I1과 I2가 임의의 다른 리스트들에 의해 홀드되지 않으므로, 항목들 I1과 I2는 부유 항목들이 된다. 또한, 리스트 L2와 L3이 다른 리 스트들에 의해 원래 홀드되므로(리스트들 L1 및 L4 각각), 리스트들 L1과 L4에 의해 리스트될 수 있다는 이득을 위해, 그들은 저장소 1에서 그들로의 일부 참조를 유지하지 않고 단순히 제거될 수는 없다. 그러므로, 단계들 8과 11에서, 리스트들 L2 및 L3은 저장소 2에, 각각, 리스트들 L2(2) 및 L3(2)을 가리키는 저장소 1의 프락시 항목으로 각각 교체된다.
<리스트 구조 역전 이동 - 저장소 간에>
도 11의 참조에서, 도 10에서 수행되는 바와 같이, 사용자는 이제 반대 기능을 수행하기를 원한다. 부연하면, 사용자는 이제 저장소 1의 리스트 L1 하에 리스트 L2(2)를 역전 구조 이동하기를 원한다. 단계 1에서, 리스트 L2(2)는, 리스트 L2(2)의 복사본을 나타내는, 블럽 B1로서 직렬화되고, 단계 2에서, 블럽 B1은 리스트 L2로서 비직렬화되고, 리스트 L2를 가리키는 프락시 항목이 저장소 1에 존재하는지가 판정된다. 이 경우, 그것은 그렇고, 프락시 항목은 리스트 L2로 교체된다. 유사하게, 단계 3에서, 리스트 L3(2)은, 리스트 L3(2)의 복사본을 나타내는, 블럽 B2로서 직렬화되고, 단계 4에서, 블럽 B2는 리스트 L3으로서 비직렬화되고, 저장소 1이 프락시 항목 L3을 교체한다. 단계 5 및 6에서, 홀딩 링크가 리스트 L2와 항목 I2 간에 그리고 리스트 L3과 항목 I1 간에 수립된다. 시스템은 이들 링크들을 만들어서 리스트 L2(2)와 항목 I2 간의 그리고 리스트 L3(2)와 항목 I1 간의 기존 구조를 반영(mirror)한다. 단계들 7과 9에서, 항목들 I1과 I2로의 프락시 항목들은 지워진다. 단계들 8과 10에서 리스트들 L2(2)와 L3(2)은 지워진다. 이들 동작들은 단지 리스트 L5만을 가진 저장소 2로 결과가 되어지고, 나머지 리스트들은 저장 소 1에 있다. 보여진 바와 같이, 결과적 구조는 도 10에 도시된 동작 이전에 존재했던 것과 동일하다.
<리스트 깊은 이동 - 저장소 간에>
본 명세서에 논의된 이동 리스트 동작의 제3 버젼은 도 12와 연관하여 기재된다. 이 예에서, 리스트 L2 및 리스트 L2 하의 모든 대응하는 구조와 항목들이 저장소 1의 리스트 L1에서 저장소 2의 리스트 L5로 이동됨을 사용자가 요구한다. 단계 1에서, 리스트 L2는, 리스트 L2의 복사본을 나타내는, 블럽 B1로서 직렬화되고, 단계 2에서, 블럽 B1은, 저장소 2에서 리스트 L2의 복사본인, 리스트 L2(2)로서 비직렬화된다. 또한, 홀딩 링크가 리스트 L5와 리스트 L2(2) 간에 만들어진다. 리스트 L2 하의 모든 구조와 항목들은 저장소 2로 이동되어야 하므로, 유사한 동작들이 그런 남아있는 구조와 항목들에 대해 계속된다. 그러므로, 단계 3에서, 리스트 L3은 리스트 L3의 복사본을 나타내는, 블럽 B2로서 직렬화되고, 단계 4에서, 블럽 B2는 리스트 L3(2)으로서 직렬화된다. 홀딩 링크가 리스트 L2(2)와 리스트 L3(3) 간에 만들어져서, 저장소 1에서 존재하는 구조를 반영한다. 단계 5에서, 항목 I2는, 항목 I2의 복사본을 나타내는, 블럽 B3으로서 직렬화되고, 단계 6에서, 블럽 B3은 항목 I2(2)로서 비직렬화된다. 홀딩 링크는 리스트 L2(2)와 항목 I2(2) 간에 만들어져서, 저장소 1에 존재하는 구조를 반영한다. 단계 7에서, 항목 I1은, 항목 11의 복사본을 나타내는, 블럽 B4로서 직렬화되고, 단계 8에서, 블럽 B4는 항목 I1(2)로서 직렬화된다. 홀딩 링크가 리스트 L3(2)와 항목 I1(2) 간에 만들어져서, 저장소 1에 존재하는 구조를 반영한다. 단계들 9 및 10에서, 항목들 I1과 I2 는 저장소 1에서 지워진다. 리스트들 L2와 L3이 복수 개의 리스트들에 의해 홀드되므로, 그들은 저장소 1로부터 단순히 완전히 제거될 수는 없다. 부연하면, 예를 들어, 리스트 L2의 모든 자취를 완전히 제거하는 것은 리스트 L6에 의해 리스트 L2가 더 이상 리스트되지 않도록 할 것이고, 이것은 사용자의 의도가 아닐 것이다. 그러므로, 단계 11과 12에서, 리스트들 L2와 L3은 저장소 2에서 그들 각각의 타겟 리스트들 L2(2)와 L3(3)을 가리키는 저장소 1의 프락시들로 교체된다. 또한, 리스트들 L1과 L2 간의 홀딩 링크들처럼, 리스트들 L2와 L3 간의 홀딩 링크들이 제거된다. 이들 동작들의 결과는, 리스트 L2 및, 리스트 L2에 의해 직접적으로 또는 간접적으로 홀드되는 모든 구조와 항목들(즉, 리스트 L3과 항목들 I1 및 I2)이 저장소 1에서 저장소 2로 이동된다.
<리스트 역전 깊은 이동 - 저장소 간에>
도 13의 참조에서, 사용자는 이제 도 12에서 수행되는 것처럼 반대 기능을 수행하기를 원한다. 부연하면, 사용자는 이제 저장소 1의 리스트 L1 하에 리스트 L2(2)를 역전 깊은 이동하기를 원한다. 단계 1에서, 리스트 L2(2)는, 리스트 L2(2)의 복사본을 나타내는, 블럽 B1로서 직렬화된다. 단계 2에서, 리스트 L2를 가리키는 프락시 항목은 블럽 B1의 비직렬화로부터 결과가 되어지는 리스트 L2로 대체된다. 유사하게, 단계 3에서, 리스트 L3(2)은, 리스트 L3(2)의 복사본을 나타내는, 블럽 B2로서 직렬화되고, 및 단계 4에서, 리스트 L3을 가리키는 프락시 항목은 블럽 B2의 비직렬화로부터 결과가 되어지는 리스트 L3으로 대체된다. 이 프로시져는 논리스트 항목들에 대해 또한 반복된다. 단계 5에서, 항목 I2(2)는, 항목 I2(2)의 복사본을 나타내는, 블럽 B2로서 직렬화되고, 단계 6에서, 블럽 B3은 항목 I2로서 비직렬화된다. 또한, 리스트 L2와 항목 I2 간의 홀딩 관계가 리스트 L2(2)와 항목 I2(2) 간의 이전 홀딩 관계와 매치하기 위해 수립된다. 단계 7에서, 항목 I1(2)은, 항목 I1(2)의 복사본을 나타내는, 블럽 B4로서 직렬화되고, 단계 8에서, 블럽 B4는 항목 I1로서 비직렬화된다. 또한, 리스트 L3과 항목 I1간의 홀딩 관계가 리스트 L3(2)와 항목 I1(2) 간의 이전 홀딩 관계를 매치하기 위해 수립된다. 그 후, 단계 9 내지 단계 12에서, 항목들 I1(2), I2(2), L3(2), 및 L2(2)은, 그들이 이동하고 임의의 다른 항목에 의해 홀딩되지 않으므로, 지워진다. 이들 항목들이 다른 항목에 의해 홀드되면, 그들은 지워지는 대신에 프락시 항목들로 대체될 것이다. 그 결과는 원래의 리스트 깊은 이동 커맨드가 도 12에 따라 수행되기 전에 존재했던 것과 동일 구조이다.
<리스트 얕은 복사 - 저장소 간에>
도 14의 참조에서, 사용자는 이제 저장소 1에서 저장소 2로 리스트 L2의 복사본을 만들고, 리스트 L5 하에 새로 복사된 리스트를 구성하기를 원한다. 그러나, 사용자는 리스트 L2 하의 모든 것을 복사하기를 원하는 것이 아니라, 단지 리스트 L2에 의해 직접 홀드되는 그런 항목들만을(리스트 항목들 및 논리스트 항목들 모두) 복사하기를 원한다. 이것은 리스트의 얕은 복사로서 일컬어진다. 이 커맨드를 수행하기 위해, 단계 1에서, 리스트 L2(복사되고 있는 리스트)는, 리스트 L2의 복사본을 나타내는, 블럽 B1로 직렬화된다. 단계 2에서, 블럽 B1은 새 리스트 L2(2)로 비직렬화되고, 이것은 그것이 저장소 1 대신에 저장소 2에 위치한다는 것 만 제외하고, 리스트 L2와 동일한 복사본이다. 또한, 홀딩 관계는, 사용자에 의해 원해지는 바와 같이, 기존 리스트 L5와 리스트 L2(2) 간에 생성된다. 사용자가 저장소 2의 다른 리스트에 그것을 배치하지 않고 리스트 L2를 복사하기로 판정하면, 리스트 L2(2)는 저장소 2의 부유 항목일 것이다. 단계 3에서, 리스트 L3을 가리키는 프락시 항목이 리스트 L2(2) 하에 생성되고 홀드된다. 이것은 원래 리스트 L2와 원래 리스트 L3 간의 홀딩 관계와 매치하기 위해 수행된다. 유사하게, 단계 4에서, 항목 I2를 가리키는 프락시 항목은 리스트 L2(2) 하에 생성되고 홀드된다. 이것은 원래 항목 L2와 원래 리스트 I2 간의 홀딩 관계와 매치하기 위해 수행된다. 그 결과는, 리스트 L2가 복사되고, 리스트 L2 하의 원래 항목들을 가리키는 프락시 항목들이 리스트 L2의 복사본(즉, 리스트 L2(2)) 하에 배치된다는 것이다. 이 방식으로, 시스템은 단지 복사를 위해 사용자에 의해 특별히 선택되는 항목(즉, 리스트 L2)의 복사본을 만들어서, 사용자 의도들과 가장 잘 매치하기 위한 방식으로 동작한다.
<리스트 구조 복사 - 저장소 간에>
리스트 복사 동작의 제2 버젼은 도 15와 연관하여 기재된다. 이 예에서, 리스트 L2 및, 리스트 L2 하의 대응하는 구조가 복사되어, 그 복사본이 저장소 2의 리스트 L5 하에 홀드되도록 하는 것을 사용자가 요구한다. 따라서, 단계 1에서, 리스트 L2는, 리스트 L2의 복사본을 나타내는, 블럽 B1로 직렬화된다. 단계 2에서, 블럽 B1은 리스트 L2(2)로서 비직렬화되고, 홀딩 관계가 리스트 L5와 리스트 L2(2) 간에 수립된다. 단계 3에서, 리스트 L3은, 리스트 L3의 복사본을 나타내는, 블럽 B2로 직렬화된다. 단계 4에서, 블럽 B2가 리스트 L3(2)으로서 비직렬화되고, 홀딩 관계가 리스트 L2(2)와 리스트 L3(2) 간에 수립되어 리스트 L2와 리스트 L3 간의 홀딩 관계와 매치한다. 단계들 5와 6에서, 항목들 I1과 I2를 타켓하는 프락시 항목들이 생성되어 홀딩 관계에 각각 배치되어 항목들 I1과 I2와 각각 매치한다.
그러므로, 이 동작의 결과는, 리스트 L2, 리스트 L2에 의해 직접적으로 홀드되는 논리스트 항목들, 및 리스트 L2 하에 홀드되는 구조가 저장소 2에 복사되고, 리스트 L2 하에 홀드되지만 리스트 L2 하에 직접적으로 홀드되는 것은 아닌 항목들에 대해, 프락시 항목들이 저장소 1의 원래 항목들을 타겟하는 저장소 2에 생성되는 것이다.
<리스트 깊은 복사 - 저장소 간에>
리스트 복사 동작의 제2 버젼은 도 16과 연관하여 기재된다. 이 예에서, 리스트 L2, 및 리스트 L2 하의 모든 항목들은 복사본이 저장소 2의 리스트 L5 하에 홀드되도록 깊은 복사가 되도록 하는 것을 사용자가 요구한다. 이 동작은, 모든 항목들이, 그들이 리스트들인지 또는 논리스트들인지 간에 무관하게, 복사되는 것을 제외하고 구조 복사 동작과 유사하다. 따라서, 단계 1에서, 리스트 L2는, 리스트 L2의 복사본을 나타내는, 블럽 B1로 직렬화된다. 단계 2에서, 블럽 B1은 리스트 L2(2)로서 비직렬화되고, 홀딩 관계가 리스트 L5와 리스트 L2(2) 간에 수립된다. 단계 3에서, 리스트 L3은, 리스트 L3의 복사본을 나타내는, 블럽 B2로 직렬화된다. 단계 4에서, 블럽 B2는 리스트 L3(2)으로서 비직렬화되고, 홀딩 관계가 리 스트 L2(2)와 L3(2) 간에 수립되어 리스트 L2와 리스트 L3 간의 홀딩 관계와 매치한다. 단계들 5와 6에서, 프락시 항목들을 생성하는 대신, 항목들 I1과 I2가 저장소 2에 복사된다. 그러므로, 단계 5에서, 항목 I2는, 항목 I2의 복사본을 나타내는, 블럽 B3으로서 직렬화된다. 단계 6에서, 블럽 B3은 항목 I2(2)로 비직렬화되고, 이것은 리스트 L2(2) 하에 홀드되어 리스트 L2와 항목 I2 간의 홀딩 관계와 매치한다. 유사하게, 단계 7에서, 항목 I1은, 항목 I1의 복사본을 나타내는, 블럽 B4로서 직렬화된다. 단계 8에서, 블럽 B4는 항목 I1(2)로 비직렬화되고, 이것은 리스트 L3(2) 하에 홀드되어 리스트 L3과 항목 I1 간의 홀딩 관계와 매치한다. 그러므로, 이 동작의 결과는, 리스트 L2 및 리스트 L2 하의 항목들 모두가 저장소 2에 복사된다는 것이다.
<삭제>
도 17은 항목들 및 그 항목들로의 복수 명의 사용자 액세스를 삭제하는 것에 대한 논의와 연관하여 사용될 항목 구조의 예를 도시한다. 복수 명의 사용자들이 동일 항목들을 액세스하도록 하는 것과 개별 사용자들이 다른 사용자(들)의 동의없이 이들 항목들을 지우거나 그렇지 않으면 제거하도록 하는 것 간에 긴장상태가 있다.
이 도 17의 설명적 구조에서, 루트 작업공간 "/"은, 사용자 1과 사용자 2에 각각 승인된 작업공간들을 나타내는 작업공간 U1과 U2를 직접 홀드한다. 작업공간 U1은 작업공간들 "UDR1" 및 "공유영역(shared)"을 직접적으로 홀드한다. 작업공간 U2는 작업공간 "UDR2"를 직접적으로 홀드한다. 작업공간들 UDR1과 공유영역 모두 리스트 L1를 직접적으로 홀드한다. 작업공간 UDR2는 리스트 L2를 직접적으로 홀드한다. 리스트들 L1과 L2는 모두 항목 I1를 직접적으로 홀드한다.
사용자 1이 리스트 L1과 항목 I1를 생성하고, L1과 공유영역 간의 홀딩 링크를 수립하는 방식으로 사용자 2와 이들 2개의 항목들을 공유한다고(즉, 작업공간 공유영역에 리스트 L1을 배치하여) 이 예에서 가정하자. 또한, 사용자 2가 리스트 L2에 항목 I1을 후속적으로 추가한다고 더 가정하자. 그러므로, 사용자 2는 리스트 L1과 항목 I1에 대한 전체 권한을 갖는다. 그러나, 사용자 1이 리스트 L2에 아무런 권리를 갖지 않는다고 가정하자. 이 경우, 사용자 1에 이용가능한 다양한 구성 및 존속기간 동작들이 존재한다. 예를 들어, 사용자 1은 리스트 L1에서 항목 I1을 제거할 수 있다. 항목 I1은 리스트 L2 및 작업공간들 UDR1과 공유영역 모두에 남아있을 것이다. 다른 경우, 사용자 1은 모든 리스트들로부터 리스트 L1을 제거할 수 있다. 이 경우, 리스트 L1과 항목 I1은 리스트 L1이 제거될 것인 작업공간에서 더 이상 이용가능하지 않을 것이다. 그러나, 이것은 다른 작업공간들에는 아무런 영향을 미치지 않을 것이다.
다른 옵션은 사용자 1이 모든 작업공간들로부터 리스트 L1을 제거할 수 있다는 것이다. 이 경우, 리스트 L1은 저장소로부터 함께 지워질 것이다. 사용자 1은 항목 I1에의 관심을 포기할 것이고, 항목 I1은 단지 리스트 L2의 사용자 2에만 이용가능할 것이다. 다른 옵션은, 아마도 사용자 1이 항목 I1을 더 이상 필요로 하지 않고 그것에 무슨 일이 일어나든지 무관심하므로, 사용자 1은 항목 I1로의 관심을 포기할 것이라는 것이다. 항목 I1은 그러므로 이제 단지 리스트 L2의 사용자 2 에만 이용가능하다. 또한 다른 옵션은 사용자 1이 항목 I1을 지울 것이라는 것이다. 이 경우, 리스트 L1에서 항목 I1까지의 홀딩 링크가 삭제된다. 그러나, 리스트 L2에서 항목 I1까지의 링크는 대롱(dangle)거릴 것이다(즉, 존재하지만 어떤 항목도 가리키지는 않음). 대롱거리는 링크는 그냥 남아있거나, 또는 리스트 L2가 열리는 다음 번에 또는 임의의 다른 시간에 자동으로 지워질 것이다.
<리싸이클>
항목들의 리싸이클링은, 5개의 표식된 부분들로 분리되는, 도 18의 참조로 논의된다. 도 18의 부분 1에 도시된 바와 같이, 루트 작업공간 "/"은, 각각이 사용자 1과 사용자 2에 각각 승인된 작업공간들을 나타내는, 작업공간들 U1과 U2를 직접적으로 홀드한다. 작업공간 U1은 리스트 L1를 직접적으로 홀드하고, 반면 리스트 L1은 항목 I1을 직접적으로 홀드한다. 작업공간 U2는 리스트 L2를 직접적으로 홀드하고, 반면 또한 리스트 L2는 항목 I1를 직접적으로 홀드한다. 그러므로, 항목 I1은 리스트들 L1과 L2에 의해 공유된다.
도 18의 제2 부분의 참조에서, 사용자 1이 항목 I1를 리싸이클하기를 원한다고 가정하자. 이 경우, 항목 I1은 사용자 1의 관점에서 리싸이클될 것이다(작업공간 U1로부터 나오는 점선에 의해 지시되는 것처럼). 그러나, 사용자 2의 관점에서, 항목 I1은 리스트 L2에 여전히 남아있을 것이다. 도 18의 제3 부분의 참조에서, 사용자 1이 리싸이클 통(recycle bin)을 비우면, 사용자 1은 항목 I1에의 모든 관심을 포기한다. 그러나, 다시 말하면, 사용자 2가 항목 I1에 대해 어떤 동작들도 요구하지 않았으므로, 항목 I1은 사용자 2의 리스트 L2에 남아있는다.
다음, 도 18의 제4 부분의 참조에서, 사용자 1이 리싸이클 통을 비운 후에 사용자 2가 항목 I1를 리싸이클하기를 원한다고 가정하자. 이 경우, 항목 I1은 사용자 2의 관점에서 리싸이클 통에 있는 것으로 나타날 것이다(작업공간 U2로부터 나오는 점선에 의해 지시되는 것처럼). 도 18의 제5 부분의 참조에서, 사용자 2가 리싸이클 통을 비울 때, 다른 리스트들이 항목 I1를 홀딩하지 않으므로, 항목 I1은 전체가 삭제되게 된다. 다른 리스트가 항목 I1를 홀드했다면, 항목 I1은 그 다른 리스트 하에 여전히 홀드되어 남아있을 것이다.
<결론>
그러므로, 새 전자 파일 시스템 및, 그런 시스템에서 항목들을 관리하는 방식들이 기재되었다. 본 발명의 다양한 양태들에 따라 본 명세서에 기재된 것처럼 설명적 실시예들이 예를 통해 보여졌지만, 본 발명이 이들 실시예들로 제한되지는 않는 것으로 이해될 것이다.
본 발명은 항목들이 계층적으로 DAG에 구성되는 전자 파일 시스템 구성의 구조를 제공한다. 전자 파일 시스템은 복수 개의 저장소들을 액세스하여 항목들을 조작(이동, 복사, 삭제, 추가 등)하고 재구성할 수 있다.
Claims (24)
- 제1과 제2 저장소들로의 액세스를 갖는 전자 파일 시스템을 가진 컴퓨터에서,상기 제1 저장소로부터 제1 항목을 선택하는 단계 -상기 제1 항목은 상기 제1 저장소의 제1 리스트 하에 구성됨-;선택되는 제1 항목에 응답하여, 상기 제1 항목이 또한 상기 제1 저장소의 제2 리스트 하에 구성되는지를 판정하는 단계;상기 제1 항목에 기초하여 상기 제2 저장소에 제2 항목을 저장하는 단계; 및상기 제1 항목이 상기 제2 리스트 하에 구성된다고 판정하는 것에 응답하여, 상기 제2 저장소의 상기 제2 항목을 타겟(target)하는 상기 제1 저장소의 제1 프락시 항목(proxy item)을 생성하는 단계 -상기 제1 프락시 항목은 상기 제1 리스트는 아닌 상기 제2 리스트하에 구성됨-를 포함하는 방법.
- 제1항에 있어서, 상기 제1 저장소로부터 상기 제1 항목을 제거하는 단계를 더 포함하는 방법.
- 제2항에 있어서, 상기 제1 항목의 복사본으로서 상기 제2 항목을 생성하는 단계를 더 포함하는 방법.
- 제3항에 있어서, 상기 제2 항목을 생성하는 단계는 상기 제1 항목에 기초하여 블럽(blob)을 생성하는 단계, 상기 제2 저장소에 상기 블럽을 전송하는 단계, 및 상기 제2 항목으로 상기 블럽을 변환하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 제2 저장소에서 상기 제2 항목을 선택하는 단계;선택되는 상기 제2 항목에 응답하여, 상기 제1 프락시 항목이 상기 제1 저장소에 존재하는지를 판정하는 단계;상기 제1 프락시 항목이 존재한다고 판정하는 것에 응답하여, 상기 제1 저장소로부터 상기 제1 프락시 항목을 제거하는 단계; 및상기 제2 항목에 기초하여 상기 제1 저장소의 제3 항목을 저장하는 단계를 더 포함하는 방법.
- 제5항에 있어서, 상기 제2 항목의 복사본으로서 상기 제3 항목을 생성하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 제1과 제2 항목들의 각각이 파일인 방법.
- 제1항에 있어서, 상기 제1과 제2 항목들의 각각이 리스트인 방법.
- 제1항에 있어서, 상기 제1 항목은 상기 제1과 제2 리스트들 모두 하에 구성되는 방법.
- 실행될 때, 청구항 1에 기재된 단계들을 컴퓨터가 수행하도록 하는 컴퓨터-실행가능 명령들을 저장하는 컴퓨터-판독가능 매체.
- 실행될 때, 청구항 5에 기재된 단계들을 컴퓨터가 수행하도록 하는 컴퓨터-실행가능 명령들을 저장하는 컴퓨터-판독가능 매체.
- 제1과 제2의 저장소들로의 액세스를 갖는 전자 파일 시스템을 가진 컴퓨터에서,상기 제1 저장소로부터 제1 리스트를 선택하는 단계;상기 제1 리스트에 기초하여 상기 제2 저장소에 제2 리스트를 저장하는 단계;한 항목이 상기 제1 리스트 하에 구성되는지를 판정하는 단계; 및상기 항목이 상기 제1 리스트 하에 구성된다고 판정하는 것에 응답하여, 상기 제1 저장소에 상기 항목을 타겟하는 상기 제2 저장소의 프락시 항목을 생성하는 단계를 포함하고, 상기 프락시 항목은 상기 제2 리스트 하에 구성되는 방법.
- 제12항에 있어서, 상기 항목은 파일인 방법.
- 제12항에 있어서, 상기 제2 리스트는 상기 제1 리스트의 복사본인 방법.
- 제12항에 있어서, 상기 프락시 항목을 생성하는 단계를 넘어 상기 제1 저장소의 상기 제1 리스트를 관리하는 단계를 더 포함하는 방법.
- 제12항에 있어서, 상기 판정 단계는 상기 항목이 상기 제1 리스트 하에 직접적으로 구성되는지를 판정하는 단계를 포함하고, 상기 생성 단계는 상기 항목이 상기 제1 리스트 하에 직접적으로 구성된다는 판정에 응답적인 방법.
- 제12항에 있어서, 상기 판정 단계는 상기 항목이 논리스트(non-list) 항목인지를 판정하는 단계를 포함하고, 상기 생성 단계는 상기 항목이 논리스트 항목이라는 판정에 또한 응답적인 방법.
- 제17항에 있어서,제3 리스트가 상기 제1 리스트 하에 구성되는지를 판정하는 단계; 및상기 제3 리스트가 상기 제1 리스트 하에 구성된다는 판정에 응답하여, 상기 제3 리스트에 기초하여 상기 제2 저장소에 제4 리스트를 생성하는 단계를 더 포함하고, 상기 제4 리스트는 상기 제2 리스트 하에 구성되는 방법.
- 제18항에 있어서, 상기 제4 리스트는 상기 제3 리스트의 복사본인 방법.
- 실행될 때, 컴퓨터가 청구항 12에 기재된 단계들을 수행하도록 하는 컴퓨터-실행가능 명령들을 저장하는 컴퓨터-판독가능 매체.
- 제1과 제2 저장소들로의 액세스를 갖는 전자 파일 시스템을 가진 컴퓨터에서,상기 제1 저장소로부터 제1 리스트를 선택하는 단계 -상기 제1 리스트는 상기 제1 리스트 하에 구성된 한 개 이상의 리스트들을 가짐-;상기 제1 리스트 하에 구성된 상기 한 개 이상의 리스트들의 각각에 대해, 상기 각각의 리스트는 또한 상기 제1 리스트와 다른 리스트 하에 직접 구성되는지를 판정하는 단계;상기 제1 리스트 하에 구성된 상기 한 개 이상의 리스트들의 각각에 대해, 상기 각각의 리스트는 상기 제1 리스트와 다른 리스트 하에 직접 구성되지 않는다는 판정에 응답하여, 상기 제2 저장소로 상기 각각의 리스트를 이동하는 단계;상기 제1 리스트 하에 구성된 상기 한 개 이상의 리스트들의 각각에 대해, 상기 각각의 리스트는 상기 제1 리스트와 다른 리스트 하에 직접 구성된다는 판정에 응답하여, 상기 제2 저장소에 상기 각각의 리스트를 이동하는 단계; 및상기 제2 저장소의 상기 각각의 리스트를 타겟하는 상기 제1 저장소의 프락 시 항목을 생성하는 단계를 포함하고,상기 프락시 항목은 상기 제1 리스트와 다른 리스트 하에 직접 구성되는 방법.
- 제21항에 있어서, 상기 제1 리스트는 상기 제1 리스트 하에 구성된 한 개 이상의 논리스트 항목들을 가지며, 상기 방법은,상기 제1 리스트 하에 구성된 상기 한 개 이상의 논리스트 항목들의 각각에 대해, 상기 제2 저장소에 상기 각각의 논리스트 항목을 이동하는 단계를 더 포함하는 방법.
- 제22항에 있어서, 상기 한 개 이상의 논리스트 항목들의 각각은 파일인 방법.
- 실행될 때, 청구항 21에 기재된 단계들을 컴퓨터가 수행하도록 하는 컴퓨터-실행가능 명령들을 저장하는 컴퓨터-판독가능 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/986,961 US7801854B2 (en) | 2004-11-15 | 2004-11-15 | Managing lists and other items in an electronic file system |
US10/986,961 | 2004-11-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20060054099A true KR20060054099A (ko) | 2006-05-22 |
Family
ID=35929840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050098396A KR20060054099A (ko) | 2004-11-15 | 2005-10-19 | 전자 파일 시스템에서 리스트와 다른 항목의 관리 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7801854B2 (ko) |
EP (1) | EP1657653A3 (ko) |
JP (1) | JP2006146907A (ko) |
KR (1) | KR20060054099A (ko) |
CN (1) | CN100498777C (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7962566B2 (en) * | 2006-03-27 | 2011-06-14 | Sap Ag | Optimized session management for fast session failover and load balancing |
US7640249B2 (en) * | 2006-03-29 | 2009-12-29 | Sap (Ag) | System and method for transactional session management |
CN107153525B (zh) * | 2017-03-23 | 2020-06-05 | 北京空间飞行器总体设计部 | 基于柔性带权有向图模型的卫星指令序列生成方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5159692A (en) * | 1985-07-01 | 1992-10-27 | Canon Kabushiki Kaisha | Image file system with multiple control image transfer between first and second filing system storage |
JP2973800B2 (ja) * | 1993-11-05 | 1999-11-08 | 株式会社日立製作所 | 電子ファイル装置 |
US6356946B1 (en) * | 1998-09-02 | 2002-03-12 | Sybase Inc. | System and method for serializing Java objects in a tubular data stream |
US6271846B1 (en) * | 1998-09-30 | 2001-08-07 | International Business Machines Corporation | Method for reanchoring branches within a directory tree |
US6922708B1 (en) * | 1999-02-18 | 2005-07-26 | Oracle International Corporation | File system that supports transactions |
US6639615B1 (en) * | 1999-05-28 | 2003-10-28 | Unisys Corporation | Generic method for programmatically locating any document in a computer network system |
JP2003022206A (ja) * | 2001-07-06 | 2003-01-24 | Fujitsu Ltd | ファイル管理プログラムおよびファイル管理装置 |
EP1300757A1 (en) * | 2001-10-02 | 2003-04-09 | Sun Microsystems, Inc. | Shareable installation hierarchies |
US6829617B2 (en) * | 2002-02-15 | 2004-12-07 | International Business Machines Corporation | Providing a snapshot of a subset of a file system |
US7516420B2 (en) * | 2002-07-11 | 2009-04-07 | International Business Machines Corporation | Method and system for extending the file system API |
US6947950B2 (en) * | 2002-11-06 | 2005-09-20 | Oracle International Corporation | Techniques for managing multiple hierarchies of data from a single interface |
US7272258B2 (en) * | 2003-01-29 | 2007-09-18 | Ricoh Co., Ltd. | Reformatting documents using document analysis information |
US7743022B2 (en) * | 2003-02-28 | 2010-06-22 | Microsoft Corporation | Method and system for synchronizing data shared among peer computing devices |
US7281014B2 (en) * | 2003-04-14 | 2007-10-09 | Novell, Inc. | Method and apparatus for moving data between storage devices |
US7467168B2 (en) * | 2003-06-18 | 2008-12-16 | International Business Machines Corporation | Method for mirroring data at storage locations |
US7428546B2 (en) * | 2003-08-21 | 2008-09-23 | Microsoft Corporation | Systems and methods for data modeling in an item-based storage platform |
US7216127B2 (en) * | 2003-12-13 | 2007-05-08 | International Business Machines Corporation | Byte stream organization with improved random and keyed access to information structures |
-
2004
- 2004-11-15 US US10/986,961 patent/US7801854B2/en not_active Expired - Fee Related
-
2005
- 2005-09-29 EP EP05021301A patent/EP1657653A3/en not_active Ceased
- 2005-10-19 KR KR1020050098396A patent/KR20060054099A/ko not_active Application Discontinuation
- 2005-11-09 JP JP2005324932A patent/JP2006146907A/ja active Pending
- 2005-11-15 CN CNB2005101271730A patent/CN100498777C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1657653A3 (en) | 2006-08-23 |
CN1776682A (zh) | 2006-05-24 |
US7801854B2 (en) | 2010-09-21 |
EP1657653A2 (en) | 2006-05-17 |
JP2006146907A (ja) | 2006-06-08 |
US20060106886A1 (en) | 2006-05-18 |
CN100498777C (zh) | 2009-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5192805B2 (ja) | メタデータのナビゲーションおよび割当てのためのプロパティツリー | |
JP4195444B2 (ja) | ファイル・システムapiを拡張するための方法およびシステム | |
KR101130366B1 (ko) | 타임라인 기반의 컴퓨팅 환경을 이용하여 데이터를복구하기 위한 방법, 매체 및 시스템 | |
US10936547B2 (en) | Filesystem replication using a minimal filesystem metadata changelog | |
KR101149993B1 (ko) | 통합 개발 환경에서 디자이너로서 호스트된 애플리케이션 | |
US6484186B1 (en) | Method for backing up consistent versions of open files | |
US7711754B2 (en) | System and method for managing data using static lists | |
JP5589205B2 (ja) | 計算機システム及びデータ管理方法 | |
US20070220029A1 (en) | System and method for hierarchical storage management using shadow volumes | |
JP2006139780A (ja) | コンピュータのファイルシステム | |
JP2005141768A (ja) | ネットワーク構造によるファイル管理システム | |
US8914428B2 (en) | System and method for maintaining a file system at a computing device | |
EP2884408B1 (en) | Content management systems for content items and methods of operating content management systems | |
US11379408B2 (en) | Pointer-based dynamic data structures in key-value stores | |
KR20060054099A (ko) | 전자 파일 시스템에서 리스트와 다른 항목의 관리 | |
EP1669891A1 (en) | Computer file system allowing ambiguous names | |
US20230006814A1 (en) | Method and apparatus for implementing changes to a file system that is emulated with an object storage system | |
Di Sarli et al. | GFS: A graph-based file system enhanced with semantic features | |
Both et al. | Easy File Management | |
Albadri et al. | VennTags: a file management system based on overlapping sets of tags | |
Freund | File Systems and Usability—the Missing Link | |
Boyd | Provenance Tracking in the Unix Filesystem | |
Holt et al. | The Filesystem in Detail | |
Chawan | A Generic Filter Driver for file Classification in Linux | |
JP2002244901A (ja) | ファイル管理装置及びファイル管理方法、並びに記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |