KR100965709B1 - Mechanism for applying transforms to multi-part files - Google Patents
Mechanism for applying transforms to multi-part files Download PDFInfo
- Publication number
- KR100965709B1 KR100965709B1 KR1020047010758A KR20047010758A KR100965709B1 KR 100965709 B1 KR100965709 B1 KR 100965709B1 KR 1020047010758 A KR1020047010758 A KR 1020047010758A KR 20047010758 A KR20047010758 A KR 20047010758A KR 100965709 B1 KR100965709 B1 KR 100965709B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- stream
- list
- transform
- request
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
멀티-파트 파일에 변환을 적용하기 위한 시스템 및 방법이 개시된다. 멀티-파트 파일 내의 스트림을 액세스하라는 요청이 수신된다. 요청을 수신하면, 스트림과 관련된 변환 목록이 식별된다. 목록은 또한 멀티-파트 파일 내에 포함된다. 변환 목록에서 지정된 변환들은 요청을 완료하기 이전에 수행된다. 요청이 기입이면, 변환은 데이터를 인코드한다. 요청이 판독이면, 변환은 데이터를 디코드한다. 변환 목록은 순서에 의존한다. 변환 목록은 스트림을 변환 목록의 명칭과 상관시키는 맵을 포함하는 제1 스트림을 갖는 데이터 구조를 포함한다. 제2 스트림은 스트림에 대한 변환 각각을 열거한다. 열거된 변환 각각에 대한 제3 스트림은 변환과 관련된 정보를 식별한다.A system and method for applying a transform to a multi-part file is disclosed. A request is received to access a stream in a multi-part file. Upon receiving the request, a list of translations associated with the stream is identified. The list is also included in the multi-part file. The conversions specified in the conversion list are performed before completing the request. If the request is a write, the transform encodes the data. If the request is a read, the transform decodes the data. The conversion list depends on the order. The translation list includes a data structure having a first stream that contains a map that correlates the stream with the name of the translation list. The second stream lists each of the transforms for the stream. The third stream for each of the listed transforms identifies information associated with the transform.
멀티-파트 파일, 스트림, 변환Multi-Part Files, Streams, and Conversions
Description
오늘날 컴퓨터 시스템들은 통상적으로 대량의 데이터를 여러 파일들에 저장한다. 이들 파일에 대한 포맷은 워드 프로세서, 스프레드쉬트 등의 여러 애플리케이션과 호환될 수 있는 여러 상이한 포맷들 중 하나일 것이다. 파일을 다른 컴퓨터로 전송하여 다른 컴퓨터가 그 파일 내의 데이터를 보거나 또는 조작할 수 있게 하는 것이 자주 필요하다. 때때로, 파일이 매우 큰 경우, 파일을 다른 컴퓨터로 보내기 이전에 파일에 대한 변환(예를 들어, 압축 등)이 수행된다. 파일을 압축함으로써, 데이터를 다른 컴퓨터로 보내기 위한 대역폭이 덜 필요하게 된다. 다른 상황에서, 다른 변환(예를 들어, 암호화 등)이 수행되어 권한이 없는 사용자들이 데이터를 보는 것을 예방할 수 있다.Today's computer systems typically store large amounts of data in several files. The format for these files will be one of several different formats that are compatible with various applications such as word processors, spreadsheets, and the like. It is often necessary to transfer a file to another computer so that another computer can view or manipulate the data in the file. Sometimes, if the file is very large, a conversion (eg, compression, etc.) is performed on the file before sending the file to another computer. By compressing files, less bandwidth is needed to send data to other computers. In other situations, other conversions (eg, encryption, etc.) may be performed to prevent unauthorized users from viewing the data.
이들 변환 중 일부는 특정 인코딩 방법을 갖고, 별도의 파일[예를 들어, 사전(dictionary) 등]을 사용하여 상기 특정 인코딩 방법에 관한 정보를 저장한다. 별도의 파일은 변환된 파일을 액세스할 때 사용되어야 한다. 별도의 파일이 손상되거나, 손실되거나 또는 사용할 수 없게 되면, 변환된 파일은 쓸모없게 된다. 또한, 이들 변환 중 일부가 인코드된 데이터를 인터리빙하고 정보를 처리하는 그들 자신의 특정 인코딩 방법을 포함하기 때문에, 파일이 일단 변환되면, 파일은 공유될 수 없거나 또는 그 위에 공통 처리(common processing)를 수행할 수 없다. 또한, 파일을 변환하기 이전에, 현재의 변환은 파일 내의 데이터가 연속적인 바이트로 배치될 것을 요구한다. 파일에 대한 바이트가 연속적일 것을 보장하는 것은 많은 오버헤드를 소비하므로, 자주 편집되는 파일들에 대하여는 불가능하다. 따라서, 이들 변환이 매우 유용하지만, 이들이 구현되는 방식은 사용자들에게 다재 다능한 경험을 제공하지는 못한다.Some of these transformations have a particular encoding method and use a separate file (eg, a dictionary, etc.) to store information about that particular encoding method. A separate file should be used to access the converted file. If a separate file is damaged, lost or becomes unusable, the converted file becomes useless. In addition, because some of these conversions include their own specific encoding methods for interleaving the encoded data and processing the information, once the file is converted, the file cannot be shared or has common processing thereon. Cannot be performed. Also, before converting the file, the current conversion requires that data in the file be placed in consecutive bytes. Ensuring that bytes for a file are contiguous consumes a lot of overhead and is therefore not possible for files that are frequently edited. Thus, while these transformations are very useful, the way they are implemented does not provide a versatile experience for users.
<발명의 요약>Summary of the Invention
본 발명은 사용자들에게 보다 우수한 융통성을 제공하는 변환을 구현하는 시스템 및 방법에 관한 것이다. 요약하면, 본 발명은 멀티-파트(multi-part) 파일 내에 하나 이상의 변환과 관련되는 변환 정보를 저장하는 메커니즘을 제공한다. 멀티-파트 파일은 또한 상기 하나 이상의 변환이 적용되는 데이터를 포함한다. 따라서, 본 발명은 데이터를 액세스하는 애플리케이션이 변환된 파일을 용이하게 액세스할 수 있도록 멀티-파트 파일에 파일 포맷을 제공한다. 본 발명에 따르면, 다수의 데이터 변환이 함께 연쇄화될(chained) 수 있다. 이들 연쇄화된 데이터 변환은 "데이터 스페이스(data spaces)"로 참조된다. 각각의 데이터 스페이스는 함께 연쇄화된 변환들에 대한 고유의 순서 및 타입(order and type)을 갖는다. 예를 들어, 2개의 데이터 스페이스가 동일한 변환을 지정하지만, 상기 변환을 적용하기 위해 서로 다른 순서를 지정하기도 한다. 변환 정보는 데이터 스페이스에 대한 정보를 포함한다.The present invention is directed to a system and method for implementing transformations that provide users with greater flexibility. In summary, the present invention provides a mechanism for storing translation information relating to one or more transformations in a multi-part file. The multi-part file also contains data to which the one or more transformations are applied. Accordingly, the present invention provides a file format for a multi-part file so that an application that accesses data can easily access the converted file. According to the present invention, multiple data transformations can be chained together. These concatenated data transformations are referred to as "data spaces." Each data space has a unique order and type for transforms chained together. For example, two data spaces specify the same transformation, but also specify a different order to apply the transformation. The conversion information includes information about the data space.
본 발명의 다른 양상에 따르면, 멀티-파트 파일은 복수의 스트림을 포함한다. 각각의 스트림은 데이터 스페이스들 중 어느 하나와 관련될 수 있다. 따라서, 본 발명에 따르면, 멀티-파트 파일 내의 일부 스트림이 변환되는 한편 다른 스트림들은 그들의 본래 포맷으로 남아 있을 수 있다. 전체 멀티-파트 파일의 변환을 요구하지 않고도 특정 스트림을 변환하는 이러한 능력은, 사용자가 멀티-파트 파일 내의 민감한 정보들만을 암호화할 수 있도록 하는 등 사용자들에게 우수한 유연성을 제공한다(예를 들어, 문서 편집 등).According to another aspect of the invention, a multi-part file comprises a plurality of streams. Each stream may be associated with any one of the data spaces. Thus, according to the present invention, some streams in a multi-part file may be converted while other streams remain in their original format. This ability to convert a particular stream without requiring conversion of the entire multi-part file gives the user great flexibility, for example allowing the user to encrypt only sensitive information within the multi-part file (eg, Document editing, etc.)
따라서, 본 발명은 멀티-파트 파일들에 변환을 적용하기 위한 시스템 및 방법에 관한 것이다. 멀티-파트 파일 내의 스트림을 액세스하기 위한 요청이 수신된다. 요청을 수신하면, 스트림과 관련된 변환 목록이 식별된다. 목록은 또한 멀티-파트 파일 내에 포함된다. 요청을 완료하기 이전에 변환 목록에서 지정된 변환이 데이터에 대하여 수행된다. 요청이 기입(write)인 경우, 변환은 데이터를 인코드한다. 요청이 판독(read)인 경우, 변환은 데이터를 디코드한다. 변환 목록은 순서에 의존하는 것이다. 변환 목록은 스트림을 변환 목록의 명칭과 상관(correlate)시키는 맵을 포함하는 제1 스트림을 갖는 데이터 구조를 포함한다. 제2 스트림은 스트림에 대한 변환 각각을 열거한다. 열거된 변환 각각에 대한 제3 스트림은 변환과 관련되는 정보를 식별한다.Accordingly, the present invention relates to a system and method for applying a transform to multi-part files. A request is received to access a stream in a multi-part file. Upon receiving the request, a list of translations associated with the stream is identified. The list is also included in the multi-part file. Before completing the request, the conversion specified in the conversion list is performed on the data. If the request is a write, the transform encodes the data. If the request is a read, the transform decodes the data. The conversion list is order dependent. The translation list includes a data structure having a first stream that contains a map that correlates the stream with the name of the translation list. The second stream lists each of the transforms for the stream. The third stream for each of the listed transforms identifies the information associated with the transform.
도 1은 본 발명의 실시예에 사용될 수 있는 컴퓨팅 디바이스를 나타내는 기능 블럭도이다.1 is a functional block diagram illustrating a computing device that may be used in an embodiment of the invention.
도 2는 본 발명에 따른 변환 프로세스의 개관을 일반적으로 나타내는 기능 흐름도이다.2 is a functional flow diagram generally illustrating an overview of the conversion process according to the present invention.
도 3은 도 2에 도시된 변환 메타데이터를 나타내는 예시적인 트리 계층의 그래픽 표현이다.3 is a graphical representation of an exemplary tree hierarchy representing the transform metadata shown in FIG. 2.
도 4는 변환 프로세스의 그래픽 표현이다.4 is a graphical representation of the conversion process.
도 5는 본 발명의 일 실시예에 따라 멀티-파트 파일 내에서 변환된 데이터를 액세스하는 프로세스를 일반적으로 나타내는 논리 흐름도이다.5 is a logic flow diagram generally illustrating the process of accessing converted data within a multi-part file, in accordance with an embodiment of the present invention.
본 발명은 멀티-파트 파일들에 변환을 적용하는 메커니즘을 제공한다. 이러한 메커니즘은 변환 정보를 지정하는 구조를 제공한다. 변환 정보 및 변환된 데이터는 동일한 문서 내에 공존한다. 본 발명의 메커니즘이 바람직하게는 하나의 문서 내에 여러 타입의 스트림을 허용하는 멀티-파트 파일 포맷에 기초한다. 본 발명의 발명자들은 OLE(Object Linking and Embeddig) 복합 파일 포맷이 본 발명의 구현에 특히 적합하다고 판정하였다. 따라서, 이하의 논의는 상기 복합 파일 포맷을 사용하여 설명한다. 그러나, 당업자가 이하의 설명을 주의깊게 읽고 나면, 다른 멀티-파일 포맷들을 수용하도록 이하 설명되는 메커니즘에 여러 변형을 가하여, 다른 멀티-파일 포맷들도 본 발명을 구현할 수 있다는 것을 이해할 것이다. 따라서, 본 발명의 구현은 본 명세서에 개시되는 것에 제한되는 것이 아니다.The present invention provides a mechanism for applying transformations to multi-part files. This mechanism provides a structure for specifying translation information. The conversion information and the converted data coexist in the same document. The mechanism of the present invention is preferably based on a multi-part file format that allows multiple types of streams in one document. The inventors of the present invention have determined that the Object Linking and Embeddig (OLE) composite file format is particularly suitable for the implementation of the present invention. Thus, the following discussion is described using the composite file format. However, once a person skilled in the art has carefully read the following description, it will be understood that other multi-file formats may implement the present invention, with various modifications to the mechanism described below to accommodate other multi-file formats. Thus, implementations of the invention are not limited to those disclosed herein.
본 발명은 먼저 본 발명의 실시예가 구현될 수 있는 예시적인 컴퓨팅 환경의 예를 참조하여 설명될 것이다. 다음에, 본 발명의 특정 실시예의 상세한 예가 설명될 것이다. 대안적인 실시예들이 또한 이러한 특정 실시예의 상세한 부분에 포함될 수 있다. The invention will first be described with reference to examples of exemplary computing environments in which embodiments of the invention may be implemented. Next, detailed examples of specific embodiments of the present invention will be described. Alternative embodiments may also be included in the details of this particular embodiment.
본 발명의 예시적인 컴퓨팅 환경Exemplary Computing Environments of the Invention
도 1은 본 발명의 실시예에서 사용될 수 있는 컴퓨팅 디바이스를 나타내는 기능 블럭도이다. 도 1은 본 발명의 예시적인 실시예에서 사용될 수 있는 예시적인 컴퓨팅 디바이스를 나타낸다. 도 1을 참조하면, 매우 기본적인 구성에서, 컴퓨팅 디바이스(100)는 통상적으로 적어도 하나의 처리 장치(102)와 시스템 메모리(104)를 포함한다. 컴퓨팅 디바이스의 정확한 구성 및 타입에 따라, 시스템 메모리(104)는 휘발성(RAM 등), 비휘발성(ROM, 플래시 메모리 등) 또는 이들 2가지의 조합일 수 있다. 시스템 메모리(104)는 통상적으로 운영 체제(105)와 하나 이상의 프로그램 모듈(106)을 포함하고, 프로그램 데이터(107)를 포함할 수도 있다. 프로그램 모듈(106)의 예로는 브라우저 애플리케이션, 재정 관리 애플리케이션, 워드 프로세서 등이 포함된다. 이러한 기본 구성은 도 1에서 점선 108 내의 컴포넌트들로 도시되고 있다.1 is a functional block diagram illustrating a computing device that may be used in an embodiment of the invention. 1 illustrates an example computing device that may be used in an exemplary embodiment of the present invention. Referring to FIG. 1, in a very basic configuration,
컴퓨팅 디바이스(100)는 부가적인 특징들 또는 기능들을 구비할 수 있다. 예를 들어, 컴퓨팅 디바이스(100)는 또한 예를 들어 마그네틱 디스크, 광 디스크 또는 테이프 등 부가적인 데이터 스토리지 디바이스들(이동식 및/또는 비이동식)을 포함할 수 있다. 이러한 부가적인 스토리지는 도 1에 이동식 스토리지(109)와 비이동식 스토리지(110)로 도시된다. 컴퓨터 스토리지 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등 정보의 저장을 위한 임의의 방식 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함할 수 있다. 시스템 메모리(104), 이동식 스토리지(109) 및 비이동식 스토리지(110)는 모두 컴퓨터 스토리지 매체의 예이다. 컴퓨터 스토리지 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(Digital Versatile Disks) 또는 기타 광 스토리지, 마그네틱 카세트, 마그네틱 테이프, 마그네틱 디스크 스토리지 또는 기타 마그네틱 스토리지 디바이스, 또는 소정 정보를 저장하는데 사용될 수 있고 컴퓨팅 디바이스(100)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하지만, 이에 제한되는 것은 아니다. 임의의 이러한 컴퓨터 스토리지 매체가 디바이스(100)의 일부분일 수 있다. 컴퓨팅 디바이스(100)는 또한 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스 등 입력 디바이스(112)를 포함한다. 디스플레이, 스피커, 프린터 등 출력 디바이스(114)가 포함될 수도 있다. 이들 디바이스는 공지된 것으로 더 이상 논의될 필요는 없다.
컴퓨팅 디바이스(100)는 또한 디바이스(100)가 네트워크 등을 통하여 다른 컴퓨팅 디바이스(118)와 통신할 수 있게 하는 통신 접속(116)을 포함할 수 있다. 통신 접속(116)은 통신 매체의 일 예이다. 통신 매체는 통상적으로 반송파나 기타 전송 메커니즘 등 변조된 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 데이터 등을 구현하고, 모든 정보 전달 매체를 포함한다. "변조된 데이터 신호(modulated data signal)"라는 용어는, 신호 내의 정보를 인코드하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예를 들어, 이에 제한되는 것은 아니지만, 통신 매체는 유선 네트워크 또는 직접-배선 접속 등 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등 무선 매체를 포함한다. 본 명세서에서 사용되는 컴퓨터 판독가능 매체라는 용어는 스토리지 매체 및 통신 매체 양자 모두를 포함한다.
컴포넌트에 관한 일반적인 논의General discussion about components
도 2는 본 발명을 구현하는 환경의 컴포넌트들의 개관을 일반적으로 나타내는 기능 흐름도이다. 바람직하게는 OLE 복합 파일인 멀티-파트 파일(202)이 도시되어 있다. OLE 문서 모델은 공지된 것으로, 단일 문서 내에 다수의 이종 타입의 데이터를 포함하기 위한 메커니즘으로서 널리 알려져 있다. 통상적으로, OLE 복합 파일은 여러 임베디드 파일들 또는 다른 지원 콘텐츠를 단일 문서와 연관시키는 것과 관련하여 사용된다. 복합 파일의 엘리먼트 각각은 해당 엘리먼트를 생성하였던 애플리케이션에 의해 조작될 수 있는 방식으로 저장된다. 각각의 엘리먼트는 도 2에 도시된 스트림(204, 206 및 208) 등의 스트림으로서 저장된다. 위에 언급된 바와 같이, 각각의 스트림은 여러 타입들 중 하나일 것이다. 예를 들어, 스트림 1(204)은 워드 프로세싱 문서이고, 스트림 2(206)는 스프레드시트이며, 스트림 Z(208)는 그래픽 파일일 수 있다.2 is a functional flow diagram generally illustrating an overview of components of an environment implementing the invention.
과거에, 멀티-파트 파일(202)에 대한 변환 요청시, 멀티-파트 파일(202)의 전체 콘텐츠(즉, 스트림 204 - 208 등)는 연속적일 것이 요구되었고, 함께 변환되었다. 그러나, 본 발명에 따르면, 스트림(204 - 208)은 연속적이지 않아도 된다. 오히려, 스트림(204 - 208)은 섹터-기반으로 저장될 수 있다. 이하 논의에서, 섹터-기반 파일들은, 저장되어 전체 스트림을 나타내는 다수 청크(chunk)의 데이터를 갖는 파일들을 일컫는다. 다수 청크는 연속적으로 저장되어도 좋지만, 통상적으로는 불연속적으로 저장된다. 일 실시예에서, 청크는 512 바이트로 고정된 고정 사이즈이어도 좋다. 대안적으로, 청크는 본 발명의 사상을 벗어나지 않고 가변 사이즈이어도 좋다. 스트림이 편집되는 경우, 새로운 청크의 데이터가 생성되고, 스트림에 대한 다른 청크의 데이터와 관련하여 불연속적인 바이트로 저장될 수 있다. 따라서, 섹터-기반 파일들은 스트림이 연속성을 유지하는 것을 보장한다는 오버헤드가 없이 스트림의 편집을 용이하게 할 수 있다.In the past, upon conversion request for
이하 상세히 설명되는 바와 같이, 본 발명은 다른 스트림을 변환하지 않고도 멀티-파트 파일(202) 내의 스트림[예를 들어, 스트림(206)]과 관련된 지정된 청크의 데이터(240)가 변환될 수 있게 한다. 본 발명은 지정된 스트림이 다른 스트림과는 독립적으로 변환될 수 있게 하기 때문에, 본 발명은 데이터의 보안 및 제어에 우수한 융통성을 제공한다. 예를 들어, 도 2는 변환 프로세스를 경험하고 있는 스트림 2(206)를 도시한다. 스트림 2(206)는 특정 아이템과 관련된 비용을 포함하는 스프레드시트를 나타낼 수 있다. 따라서, 이러한 비용 정보를 보호하여 권한이 없는 사용자들이 비용을 볼 수 없게 하는 것이 바람직할 것이다. 따라서, 스트림 2(206)용 데이터(240)는 일련의 변환[예를 들어, 변환(220 -224)]을 경험한다. 당업자가 이해하듯이, 임의 갯수의 변환이 연쇄화될(chained) 수 있고, 임의의 순서로 연쇄화될 수 있다. 연쇄화되는 특정 변환 및 변환들이 연쇄화되는 순서는 데이터 스페이스(230)를 나타낸다. 일반적으로, 데이터 스페이스는 하나의 변환을 지정하거나 또는 다수의 변환을 지정할 수 있다. 위 예에서, 최종 변환[예를 들어, 변환(224)]은 변환된 데이터를 디스크(도시되지 않음) 상에 존재하는 스트림 2(206)에 기입한다. 멀티-파트 파일에 변환을 적용하는 메커니즘의 일 실시예가 이하 도 4와 관련하여 상세히 설명된다.As will be described in detail below, the present invention allows
본 발명의 특정 실시예의 논의Discussion of Specific Embodiments of the Invention
도 3은 도 2에 도시된 변환 메타데이터(210)를 표현하는 트리 계층의 일 실시예의 그래픽 표현이다. 일반적으로, 트리 계층은 멀티-파트 파일과 호환가능한 임의의 방식으로 멀티-파트 파일 내에 포함될 수 있다. 이하 논의는 복합 파일들을 참조하여 트리 계층을 설명한다. 개략적으로, 복합 파일들은 통상적으로 "파일 내의 파일 시스템(file system within a file)"로서 고려된다. 복합 파일 내에는 파일 시스템에서의 디렉토리와 유사한 "스토리지(storages)" 및 파일 시스템에서의 파일과 유사한 "스트림(streams)"의 계층이 존재한다. 도 3에서, 사각형 박스들은 스트림을 나타내고, 타원형은 스토리지를 나타낸다. 본 발명의 변환 메타데이터(210)를 설명하기 이전에, 스트림(204 - 208; 도 2에 도시됨)은 본 예시적인 계층에서 루트(302) 아래에 도시된다는 것에 주목하자. 루트 아래에 스트림을 정의하는 것은 복합 파일 포맷에 대한 통상적인 기술이다.3 is a graphical representation of one embodiment of a tree hierarchy representing the
본 발명이 제공하는 변환 메타데이터(210)가 이제 보다 상세히 논의된다. 루트(302)에서 파생된 "\006DataSpaces"(310)라는 명칭의 전용 스토리지가 변환 메타데이터(210)를 저장한다. \006DataSpaces(310)는 DataSpaceMap 스트림(320), DataSpaceInfo 스토리지(330) 및 TransformInfo 스토리지(340)를 포함한다. 본 실시예에서, 전용 스토리지에 대하여 선택된 명칭 "\006DataSpaces"는 C 프로그래밍 언어의 문장으로 기입된다. 따라서, 본 실시예에서, 명칭은 단일 비-영숫자(non-alphanumeric) 토큰으로 시작되고 토큰 값은 6이다. 일반적으로, 전용 스토리지에 할당되는 명칭은 임의의 것으로 사용자의 구현에 의존한다.The
DataSpaceMap 스트림(320)은 스트림[예를 들어, 스트림(204 - 208) 등]을 그 관련 데이터 스페이스와 맵핑시킨다. 일 실시예에서, DataSpaceMap 스트림(320)은 스트림 참조 컬럼(322)과 DataSpaceName 컬럼(324)을 갖는 테이블이다. 스트림 참조 컬럼(322) 내의 콘텐츠는 복합 문서 내에 저장된 스트림들[예를 들어, 스트림(204 - 208) 등] 중 어느 하나를 참조한다. DataSpaceName 내의 콘텐츠는 스트림 참조 컬럼(322) 내에서 식별된 관련 스트림에 대하여 정의된 특정 데이터 스페이스를 참조한다. 하나의 데이터 스페이스가 임의 갯수의 스트림과 관련되어도 좋다. 예를 들어, 도 3에 도시된 바와 같이, "DataSpaceName1"으로 식별되는 데이터 스페이스는 스트림 1(204) 및 스트림 2(206)과 관련된다. DataSpaceMap 스트림(320)에 대한 상기 설명은 DataSpaceMap 스트림(320)을 테이블로서 설명하지만, 당업자라면 다른 데이터 포맷들이 사용되어 스트림을 식별하고 데이터 스페이스와 상관시킬 수 있다는 것을 이해할 것이다.
DataSpaceInfo 스토리지(330)는 하나 이상의 DataSpaceName 스트림[예를 들어, DataSpaceName 스트림(332 및 334)]을 포함한다. 상술된 실시예에서, DataSpaceName 스트림은 표준 복합-파일 쇼트 네임 규약(standard, compound-file short name conventions)에 따라 명명된다. 각각의 DataSpaceName 스트림(332 및 334)는 개별 DataSpaceName 스트림(332 및 334)과 관련되는 변환 목록(336)을 식별한다. 일 실시예에서, DataSpaceName(332 및 334) 각각은 데이터 스페이스를 구성하는 변환의 순서화된 목록일 수 있다. 변환이 적층되기 때문에, 목록(336) 내에서의 순서는 중요하다. 일 실시예에서, 목록(336) 내의 최초 변환(337)은 "bottom" 변환으로서 참조되는데, 이는 변환(337)이 하부 데이터 스트림[예를 들어, 스트림(204) 등]에서의 비트에 가장 가깝다는 것을 의미한다. 목록(336) 내의 최종 변환(339)은 "top" 변환으로서 참조되는데, 이는 변환(339)이 데이터의 소비자/생성자(예를 들어, 애플리케이션 등)에 가장 가깝다는 것을 의미한다. 도 4와 관련하여 이하 상세히 설명되듯이, 목록(336)에서 지정된 순서는 변환을 통한 데이터의 흐름을 결정한다.
TransformInfo 스토리지(340)는 하나 이상의 TransformInstance 스토리지[예를 들어, TransformInstance 스토리지(342, 344 및 346) 등]를 포함한다. 일 실시예에서, 이들 서브스토리지의 명칭은 변환의 명칭이다. 각각의 TransformInstance 스토리지(342, 344 및 346) 내에는, "\006Primary"이라는 명칭의 스트림(350)이 적어도 하나 존재한다. \006Primary 스트림(350)은 TransformClass Type(354) 및 TransformClass Name(356) 등 특정 변환에 대해 관계있는 정보를 포함한다. TransformClass Type(354)는 특수 변환[예를 들어, LZ 압축, DRM(Digital Rights Management) 보호 등]을 구현하는 특수 변환 클래스를 나타낸다. 일 실시예에서, TransformClass Name(356)은 변환의 클래스(예를 들어, 타입 등)를 고유하게 식별하는 스트링으로서 지정된다. 클래스를 식별하는 스트링은 변환을 구현하는 클래스의 클래스명일 수 있다. TransformClass Type(354)는 TransformClass Name(356)에 지정된 스트링을 해석하는 방법을 말해주는 타입 표시기를 지정한다. \006Primary 스트림(350)은 또한 TransformInstance Data(358)에 대한 스페이스를 포함할 수 있다. TransformInstance Data(358)는 TransformClass Name(356) 및 TransformClass Type(354)에 의해 지정되는 변환에 지정된 정보를 저장한다. 예를 들어, 변환이 압축 변환이면, TransformInstance Data(358)는 윈도우 사이즈 등을 포함할 수 있다.
일부 변환에 대하여, TransformInstance Data(358)는 필요한 정보를 저장하기 위한 충분한 스페이스를 허용하지 않을 수 있다. 따라서, 보다 세밀하게, 본 발명은 변환이 부가적인 정보를 TransformInstanceData 스트림[예를 들어, TransformInstanceData 스트림(370) 등]에 저장할 수 있게 한다. 이는 \006Primary 스트림(350)과 명칭 충돌이 없는 한 허용된다. TransformInstance Data의 본질은 변환 타입에 의존하여 변동할 것이다.For some transforms,
상술한 트리 계층은 변환된 데이터를 그 변환 정보와 함께 저장하기 위한 문서 포맷의 일 실시예를 설명하는 것이지만, 당업자라면 본 발명의 동작에 영향을 주지 않고도 상기 계층이 변경될 수 있다는 것을 이해할 것이다. 따라서, 변환 정보가 변환된 데이터와 함께 저장되는 트리 계층은 모두 본 발명을 벗어나는 것이 아니다. 도 4는 본 발명에 따라 변환된 데이터를 갖는 문서들을 포맷하기 위한 메커니즘이 사용되는 변환 프로세스의 그래픽 표현이다. 본 예시적인 변환 프로세스에서, 애플리케이션(400)은 도 2에 도시된 멀티-파트 파일(202)에 대한 판독 및 기입을 시도한다. 일반적으로, 변환 클래스의 각 인스턴스는 입력으로서 IStream을 취하고, 인코드된(예를 들어, 변환된) 데이터를 다른 IStream 인터페이스에 출력한다. 변환[예를 들어, 변환(420 및 422) 등]은 등록되고, OLE 복합 문서가 제공하는 애플리케이션 프로그래밍 인터페이스를 통하는 등 스트림(206) 관련된 데이터 스페이스는 미리 지정된다. 예를 들어, 스트림(206)이 먼저 생성되었을 때, 멀티-파트 문서(202) 내에 스트림(206)을 생성하였던 애플리케이션이, 데이터에 어떠한 변환을 적용하여야 할지를 지정하는 것을 담당하였다. 이는 각각의 독립변수(argument)가 변환을 참조하는 독립변수 목록을 통해 발생하였을 수 있다.Although the tree hierarchy described above describes one embodiment of a document format for storing converted data with its conversion information, those skilled in the art will understand that the hierarchy may be modified without affecting the operation of the present invention. Accordingly, the tree hierarchy in which the conversion information is stored together with the converted data does not all depart from the present invention. 4 is a graphical representation of a conversion process in which a mechanism for formatting documents with converted data is used in accordance with the present invention. In this example conversion process, the
판독 및 기입 액세스는 OS 레이어를 통한다. 과거에, 기입 동작은 IStream 인터페이스(414)를 통해 스트림 2(206)를 액세스하였을 것이다. 그러나, 본 발명에 따르면, IStream 인터페이스(414) 이전에 하나 이상의 변환이 삽입될 수 있다. 각각의 변환[예를 들어, 변환(420 및 422) 등]은 입력으로서 IStream 인터페이스[각각, IStream 인터페이스(410 및 412)]를 취하고, 그들의 인코드된(예를 들어, 변환된) 데이터를 다른 IStream 인터페이스[각각, IStream 인터페이스(412 및 414)]에 출력한다.Read and write access is through the OS layer. In the past, the write operation would have accessed stream 2 206 through
이와 마찬가지로, 애플리케이션(400)이 멀티-파트 파일(202) 내의 스트림 2(206)를 판독하려고 하는 경우, 하나 이상의 역변환(inverse transform)[예를 들어, 역변환(450 및 452)]이 삽입될 수 있다. 역변환의 갯수는 데이터가 적절하게 디코드 되어 애플리케이션이 데이터를 이해할 수 있도록 변환의 갯수와 동일하다. 애플리케이션(400)과 스트림(206) 사이에 변환이 삽입되는 방식이 이제 도 5를 참조하여 설명된다.Similarly, if the
도 5는 본 발명에 따라, 복합 파일 내에 변환된 데이터를 액세스하는 프로세스를 일반적으로 도시하는 논리 흐름도이다. 프로세스(500)는 애플리케이션이 멀티-파트 파일의 스트림 내의 데이터를 액세스하도록 요청하는 시작 블럭(501)에서 시작한다. 변환 정보(210)는 스트림에 대하여 이미 지정되었다.5 is a logic flow diagram generally illustrating the process of accessing converted data in a compound file, in accordance with the present invention.
판정 블럭에서는, 스트림이 데이터 스페이스의 멤버인지 여부에 대한 판정이 이루어진다. 도 3을 참조하면, 일 실시예에 대하여, 이러한 판정은 요청된 스트림을 식별하는 스트림 참조(322)에 대한 DataSpaceMap 내부를 검색하여 이루어진다. 스트림과 관련된 스트림 기준(322)이 발견되지 않으면, 스트림은 어떠한 변환도 정의하지 않고, 처리는 종료로 진행한다. 이러한 상황에서, 애플리케이션은 본 발명 이전에 행하여졌던 방식으로 데이터를 액세스한다. 그러나, 스트림 기준(322)이 DataSpaceMap 내에 포함되어 있으면, 처리는 블럭 504로 진행한다.In the decision block, a determination is made as to whether the stream is a member of a data space. Referring to FIG. 3, for one embodiment, this determination is made by searching inside the DataSpaceMap for
블럭 504에서는, 스트림 기준(322)과 관련된 DataSpaceName이 취득된다. DataSpaceName은 스트링 또는 임의의 기타 포맷일 수 있다.At
블럭 506에서는, 블럭 504에서 취득된 DataSpaceName을 사용하여, DataSpaceInfo 스토리지가 검색되어 DataSpaceMap 내에 식별된 DataSpaceName과 관련되는 DataSpaceName 스트림을 식별한다. DataSpaceName 스트림은 이 데이터 스페이스명과 관련되는 변환 목록을 포함한다.In
블럭 508에서는, 목록 내로부터의 변환이 식별된다. 액세스가 기입인지 또는 판독인지 여부에 의존하여, 변환은 데이터를 각각 인코드하거나 또는 디코드할 것이다. DataSpaceName 스트림은 각각의 변환을 특정 순서로 열거한다. 액세스가 기입인 경우, 순서는 'top'으로부터 'bottom'으로이다. 액세스가 판독인 경우, 순서는 'bottom'으로부터 'top'으로이다.At
블럭 510에서는, 식별된 변환이 적용된다. 변환을 적용할 때, 변환 인스턴스 데이터가 사용되어 데이터를 적절하게 변환한다. 액세스가 기입인 경우, 변환(인코드)이 적용된다. 액세스가 판독인 경우, 역변환(디코드)가 적용된다.At
판정 블럭 512에서는, 데이터 스페이스가 연쇄화된 변환을 더 포함하는지 여부에 대한 판정이 이루어진다. 이는 목록(336)이 변환 인스턴스를 더 참조하는지 여부를 검사하는 것에 의해 판정될 수 있다. 데이터 스페이스에서의 최종 변환이 적용되면, 최종 변환은 데이터를 출력하고, 프로세스는 종료한다. 그러나, 열거된 다른 변환이 존재하는 경우, 처리는 블럭 508로 되돌아가, 최종 변환이 적용될 때까지 상술한 처리를 진행한다.At
또한, 당업자라면 프로세스(300)가 제공하는 기능이 여러 방식으로 구현될 수 있다는 것을 이해할 것이다. 예를 들어, 스트림 명칭으로부터 변환 목록으로 직접 맵핑하는 것(데이터 스페이스의 사용을 생략함)이 있을 것이다. 따라서, 본 발명은 스트림을 변환 정보로 맵핑하기 위한 이러한 및 다른 실시예들을 모두 포함한다. 프로세스(500)는 이러한 일 실시예를 나타낸다.In addition, those skilled in the art will appreciate that the functionality provided by process 300 may be implemented in a number of ways. For example, there might be a direct mapping from the stream name to the translation list (omitting the use of data spaces). Thus, the present invention encompasses both these and other embodiments for mapping a stream to transform information.
상술한 상세한 설명, 실시예 및 데이터는 본 발명 구성의 제조 및 사용에 대한 완벽한 설명을 제공한다. 본 발명의 많은 실시예가 본 발명의 사상 및 범위를 벗어나지 않고도 이루어질 수 있기 때문에, 본 발명은 이하 첨부된 청구의 범위에 귀속하게 된다.The above detailed description, examples, and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
Claims (27)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2003/015707 WO2004107198A1 (en) | 2003-05-17 | 2003-05-17 | Mechanism for applying transorms to multi-part files |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060037217A KR20060037217A (en) | 2006-05-03 |
KR100965709B1 true KR100965709B1 (en) | 2010-06-24 |
Family
ID=33449011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020047010758A KR100965709B1 (en) | 2003-05-17 | 2003-05-17 | Mechanism for applying transforms to multi-part files |
Country Status (9)
Country | Link |
---|---|
EP (1) | EP1625510A4 (en) |
JP (1) | JP4378342B2 (en) |
KR (1) | KR100965709B1 (en) |
CN (1) | CN100430916C (en) |
AU (1) | AU2003241506B8 (en) |
BR (1) | BR0306999A (en) |
CA (1) | CA2470720C (en) |
MX (1) | MXPA04007407A (en) |
WO (1) | WO2004107198A1 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007139552A1 (en) * | 2006-05-31 | 2007-12-06 | Citrix Systems, Inc. | Systems and methods for determining the charset encoding for decoding a request submission in a gateway |
US8255373B2 (en) | 2008-10-24 | 2012-08-28 | Microsoft Corporation | Atomic multiple modification of data in a distributed storage system |
US9996572B2 (en) | 2008-10-24 | 2018-06-12 | Microsoft Technology Licensing, Llc | Partition management in a partitioned, scalable, and available structured storage |
US8886796B2 (en) | 2008-10-24 | 2014-11-11 | Microsoft Corporation | Load balancing when replicating account data |
CN108337208B (en) * | 2017-01-19 | 2020-11-24 | 中国电信股份有限公司 | Data protection method and replacement device based on cloud storage and cloud storage system |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0169161B1 (en) * | 1994-07-22 | 1999-01-15 | 기다오까 다까시 | Information processing system and method of computation in information processing system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL8901827A (en) * | 1989-07-14 | 1991-02-01 | Oce Nederland Bv | SYSTEM FOR PROCESSING FILE ORGANIZED DATA, MANAGEMENT MODULE USED THEREIN AND STORAGE MEDIA, PROVIDED WITH THE PROGRAMMING OF THIS MANAGEMENT MODULE. |
US5742818A (en) * | 1995-12-15 | 1998-04-21 | Microsoft Corporation | Method and system of converting data from a source file system to a target file system |
US6339775B1 (en) * | 1997-11-07 | 2002-01-15 | Informatica Corporation | Apparatus and method for performing data transformations in data warehousing |
US20020001412A1 (en) * | 1998-07-21 | 2002-01-03 | Hewlett-Packard Company | System for variable quantization in jpeg for compound documents |
US6357042B2 (en) * | 1998-09-16 | 2002-03-12 | Anand Srinivasan | Method and apparatus for multiplexing separately-authored metadata for insertion into a video data stream |
SE513356C2 (en) * | 1998-11-20 | 2000-08-28 | Ericsson Telefon Ab L M | Method and apparatus for encrypting images |
US7644366B1 (en) * | 1999-07-30 | 2010-01-05 | Computer Associates Think, Inc. | Method and system for displaying a plurality of discrete files in a compound file |
US6529948B1 (en) * | 1999-08-31 | 2003-03-04 | Accenture Llp | Multi-object fetch component |
US20020003886A1 (en) * | 2000-04-28 | 2002-01-10 | Hillegass James C. | Method and system for storing multiple media tracks in a single, multiply encrypted computer file |
EP1189432A3 (en) * | 2000-08-14 | 2004-10-20 | Matsushita Electric Industrial Co., Ltd. | A hierarchical encryption scheme for secure distribution of predetermined content |
-
2003
- 2003-05-17 BR BR0306999-0A patent/BR0306999A/en not_active IP Right Cessation
- 2003-05-17 AU AU2003241506A patent/AU2003241506B8/en not_active Ceased
- 2003-05-17 CA CA2470720A patent/CA2470720C/en not_active Expired - Fee Related
- 2003-05-17 JP JP2005500404A patent/JP4378342B2/en not_active Expired - Fee Related
- 2003-05-17 MX MXPA04007407A patent/MXPA04007407A/en active IP Right Grant
- 2003-05-17 EP EP03731243A patent/EP1625510A4/en not_active Ceased
- 2003-05-17 CN CNB038019698A patent/CN100430916C/en not_active Expired - Fee Related
- 2003-05-17 WO PCT/US2003/015707 patent/WO2004107198A1/en active Application Filing
- 2003-05-17 KR KR1020047010758A patent/KR100965709B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0169161B1 (en) * | 1994-07-22 | 1999-01-15 | 기다오까 다까시 | Information processing system and method of computation in information processing system |
Also Published As
Publication number | Publication date |
---|---|
AU2003241506B2 (en) | 2009-11-26 |
JP4378342B2 (en) | 2009-12-02 |
AU2003241506B8 (en) | 2010-01-07 |
EP1625510A4 (en) | 2008-03-12 |
KR20060037217A (en) | 2006-05-03 |
AU2003241506A1 (en) | 2005-01-21 |
BR0306999A (en) | 2005-02-09 |
CN1615477A (en) | 2005-05-11 |
JP2006526191A (en) | 2006-11-16 |
CA2470720A1 (en) | 2004-11-17 |
CA2470720C (en) | 2011-10-18 |
MXPA04007407A (en) | 2005-02-17 |
EP1625510A1 (en) | 2006-02-15 |
WO2004107198A1 (en) | 2004-12-09 |
CN100430916C (en) | 2008-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6352308B2 (en) | Method and system for storing and retrieving data | |
US7523221B2 (en) | Mechanism for applying transforms to multi-part files | |
US7188118B2 (en) | System and method for detecting file content similarity within a file system | |
US7496586B1 (en) | Method and apparatus for compressing data in a file system | |
US7716445B2 (en) | Method and system for storing a sparse file using fill counts | |
US20080228770A1 (en) | Method for Performing Recoverable Live Context Migration in a Stacked File System | |
US20090300084A1 (en) | Set partitioning for encoding file system allocation metadata | |
US10726147B2 (en) | File encryption support for FAT file systems | |
TW200408980A (en) | System and method for managing file names for file system filter drivers | |
US7958133B2 (en) | Application conversion of source data | |
JP2005301853A (en) | Information processor and information processing method, program, and storage medium | |
KR100965709B1 (en) | Mechanism for applying transforms to multi-part files | |
US20110271064A1 (en) | Storage device and method for accessing the same | |
JP2005108239A (en) | Storage system for storing data in hierarchical data structure | |
GB2403316A (en) | Accessing files within different directory hierarchies | |
US8051090B2 (en) | File management method of a ring buffer and related file management apparatus | |
RU2348069C2 (en) | Mechanism of modification application to files consisting of multiple parts | |
CN105243090A (en) | Exclusive file acquisition method and system | |
KR100504089B1 (en) | Portable appliances providing for mass storage function and contents protection function of mass storage class interface specification, mass storage class interface system having it, and method thereof | |
KR102227113B1 (en) | A file processing apparatus based on a shared file system | |
US7603568B1 (en) | Method and apparatus for self-validating checksums in a file system | |
Kowalczyk | Curating Digital Cultural Heritage Materials | |
Wirth et al. | Sequential input and output | |
JP2011215784A (en) | Database management device, export method and program, and import method and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130521 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140516 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150515 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20160517 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20170522 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20180516 Year of fee payment: 9 |