Users of electronic devices such as personal computers, smart phones, and tablets generate ever increasing amounts of data. Often, the data are stored on servers accessible via the Internet or another suitable network. Users may wish to access the data with varying amounts of frequency depending on the various types of data stored.
The following detailed description references the drawings, in which:
Systems that perform indexing of documents or content for retrieval or archiving purposes store the content of a large amount of data. For example, a document indexing system may index hundreds of thousands or millions of documents, which my represent tens, hundreds, or even thousands of gigabytes of data. Users of computing systems may wish to access the data stored on the systems that perform the indexing and archiving.
The constraints on storage within such systems are frequently the determining factor on both the cost and the scaling of such systems and any reduction in storage can be of great benefit. For example, in some situations it is beneficial to perform standard compression algorithms on the content in order to reduce the amount of storage space needed. However, this practice generally has a negative effect on retrieval performance because the compressed data must be uncompressed when it is retrieved.
Moreover, for small documents, the compressed form can in fact be larger than the original. For example, if a system is indexing and storing millions of tweets, status updates, or other similar small pieces of data, it may not be beneficial to compress the individual data because doing so would result in a larger compressed file than the original. In contrast, very large files may benefit from aggressive compression techniques in order to reduce them to more manageable file sizes.
Previously, these systems that perform indexing and archiving of documents rely on applying a single compression technique to all documents. This leads to inefficiencies in both storage and retrieval. Some systems implement no compression if high efficiency is desired, while some systems implement aggressive compression if storage space is at a premium. The use of a single compression technique reduces retrieval performance for some documents and increases storage requirements for others.
Various embodiments will be described below by referring to several examples of determining compression techniques to apply to documents. Documents may be received by a computing system and subsequently analyzed. Using the analysis, the computing system may determine which of a plurality of compression techniques to apply to each of the documents. The documents may then be compressed according to the determined compression technique.
In some implementations, determining compression techniques to apply to a collection of documents reduces the amount of storage necessary in document storage and indexing databases. Determining compression techniques to apply to a collection of documents also increases system response time and performance by optimizing document compression. Moreover, the amount of storage needed for document indexing and storage may be balanced against system performance concerns. These and other advantages will be apparent from the description that follows.
The collection of documents 101 are received by an analysis engine 102 such as via a network or through other appropriate communicative processes. The analysis engine 102 analyzes the plurality of documents 101 received from, for example, a document repository. The analysis engine 102 may include an analysis module 110 to determine document characteristics about the collection of documents 101 and/or about individual documents or a subset of documents within the collection of documents 101. These document characteristics may include, for example, a file name, a file extension, a document type, frequency of access to a document, a document priority, a file size, a title, an author, and/or other types of document characteristics.
The analysis engine 102 may also include a compression determination module 112 to determine which of a plurality of compression techniques to apply to each of the documents in the collection of documents 101. The determination may be based on one or more of the document characteristics identified by the analysis engine 110, including file name, file extension, document type, frequency of access to each document, document priority, file size, title, author, and/or other types of document characteristics.
Once the compression determination module 112 of the analysis engine 102 determines which of the plurality of compression techniques to apply to each document of the collection of documents 101, a compression engine 103 compresses each of the plurality of documents using the appropriate compression technique determined by the compression determination module 112 of the analysis engine. Once the compression determination module 112 compresses a document, the document may be stored in a document database 104.
In one example, such as shown in
It should be further understood that the analysis module and/or the compression determination module 112 described herein may be a combination of hardware and programming. The programming may be processor executable instructions stored on a tangible memory resource (such as memory resource 208 of
The computing system 202 may include a processing resource 206 that may be configured to process instruction& The instructions may be stored on a non-transitory tangible computer-readable storage medium, such as memory resource 208, or on a separate device (not shown), or on any other type of volatile or non-volatile memory that stores instructions to cause a programmable processor to perform the techniques described herein. Alternatively or additionally, the computing system 202 may include dedicated hardware, such as one or more integrated circuits, Application Specific Integrated Circuits (ASICs), Application Specific Special Processors (ASSPs), Field Programmable Gate Arrays (FPGAs), or any combination of the foregoing examples of dedicated hardware, for performing the techniques described herein. In some implementations, multiple processors may be used, as appropriate, along with multiple memories and/or types of memory.
In addition to the processing resource 206 and the memory resource 208, the computing system 202 may include an analysis module 210 and a compression determination module 212. In one example, the modules described herein may be a combination of hardware and programming. The programming may be processor executable instructions stored on a tangible memory resource such as memory resource 208, and the hardware may include processing resource 206 for executing those instructions. Thus memory resource 208 can be said to store program instructions that when executed by the processing resource 206 implement the modules described herein. Other modules may also be utilized as will be discussed further below in other examples.
The analysis module 210 analyzes documents to determine document characteristics relating to the analyzed documents. In one example, the computing system 202 may receive data in the form of documents from, for example, a document repository, which may be stored on or generated at another computing system. The documents may be analyzed by the analysis module 210 to determine document characteristics relating to the documents. For example, the document characteristics may include file name, file extension, document type, frequency of access to each document, document priority, file size, title, author, and/or other types of document characteristics. The analysis module 212 may also group or sort documents by document characteristics, such as by grouping files of certain types, sizes, frequency of access, etc. together.
The compression determination module 212 determines which of a plurality of compression techniques to apply to each of the received documents. The compression determination module 212 may base the determination of which compression technique to apply to each document in whole or in part on the document characteristics determined by the analysis module. For example, the compression determination module 212 may determine to apply the different compression techniques based on file size, frequency of access, file type, etc.
In one example, the compression determination module 212 may determine to apply a first compression technique to documents that are frequently accessed while applying a second, more aggressive, compression technique to documents that are less frequently accessed. Similarly, the compression determination module 212 may determine to apply a first compression technique to documents that are small in size while applying a second, more aggressive, compression technique to documents that are larger in size.
Moreover, the compression determination module 212 may determine to apply compression techniques to groups of documents rather than individual documents. For example, the compression determination module 212 may determine to apply an aggressive compression technique to documents created before a certain date, while applying less aggressive compression techniques to documents created after that date. Or the compression determination module 212 may determine to apply a first compression technique to documents of a first type, a second compression technique to documents of a second type, and a third compression technique to documents of a third type.
Additional modules may also be utilized in examples. For instance, the computing system 202 may include a document receiving module in one example. The document receiving module receives documents (i.e., data) from, for example, a document repository or database. The received documents may be loaded into a local data store (not shown). In one example, the computing system 202 also includes a compression module for compressing the documents according to the compression technique determined by the compression determination module 212.
The computing system 202 may also include an historical compression profile generating module which generates an historical compression profile based in part on the analyzing the plurality of documents and based in part on the determining which of the plurality of compression techniques to apply to each of the plurality of documents. The compression determination module 212 may utilize the historical compression profile to determine which of the plurality of compression techniques to apply to each document. For example, if certain documents are historically compressed with one type of compression technique, the compression determination module 212 may determine to compress similar documents using the same technique in the future. These and other modules maybe implemented in any suitable combination in various examples.
Although not illustrated, in some embodiments the computing system 202 may also include a data store, which may be one or more electronic or mechanical data storage devices, such as hard disk drives, solid state drives, magnetic memory devices, and the like. The data store may be contained on a single computing device or distributed across a collection of computing devices. The data store may include one or more databases, for which the computing system 202 processes transactions. The data store 206 may also store documents received from a document repository and/or documents compressed by the computing system 202.
At block 302, the method 300 may include receiving documents. In one example, a computing system (e.g., computing system 202 of
The documents may be received by the computing system via a network or other communicative methods. The documents may also be previously stored on the computing system directly or indirectly via an attached database having the document repository. Once the computing system receives the plurality of documents, the method 300 continues to block 304.
At block 304, the method 300 may include analyzing the documents to determine document characteristics. In one example, a computing system analyzes (e.g., through the analysis module 210 of the computing system 202 of
At block 306, the method 300 may include determining which compression technique to apply to each of the documents. For example, a computing system determines (e.g., through the compression determination module 212 of the computing system 202 of
In one example, the computing system may determine (e.g., through the compression determination module 212 of the computing system 202 of
Additionally, the computing system may determine (e.g., through the compression determination module 212 of the computing system 202 of
Once the computing system determines which compression technique to apply to each of the documents, the method 300 may include compressing the documents using the determined compression technique. In one example, the computing system compresses each of the plurality of documents using the determined one of the plurality of compression techniques. This may also include causing another computing system, or a component of the computing system, to compress the documents, rather than the computing system doing it directly.
Additional processes also may be included. For example, the method 300 may include the computing system generating an historical compression profile. The historical compression profile may be based in part on the analyzing at least the subset of the plurality of documents and may be further based in part on the determining which of the plurality of compression techniques to apply to each of the plurality of documents. The computing system then uses the historical compression profile to determine which of the plurality of compression techniques to apply to each of the documents. Using the historical compression profile enables the computing system to “learn” past behaviors and patterns of documents and of the compression techniques determined to apply to the various documents.
It should be understood that the processes depicted in
At block 402, the method 400 may include receiving a first set of documents. In one example, a computing system receives (e.g., at the computing system 202 of
At block 404, the method 400 may include determining which compression technique to apply to each of the documents. In an example, the computing system determines (e.g., through the compression determination module 210 of the computing system 202 of
In one example, the plurality of documents received may include a document of a first type and a document of a second type. In this case, determining which of the plurality of compression techniques to apply to each of the plurality of documents includes determining to apply a first compression technique to the document of the first type and determining to apply a second compression technique to the document of the second type.
Additionally, a second document of the first type may be compressed using the same compression technique that was determined to apply to the first document of the first time. That is, in an example where the document of the first type was an audio file that was compressed using an audio compression technique, the second document that is also an audio document may likewise be compressed using the same audio compression technique. Similarly, a second document of the second type may be compressed using the same compression technique that was determined to apply to the second document of the second type. The method 400 then continues to block 406.
At block 406, the method 400 may include compressing the first set of documents using the determined compression technique. For example, the computer system compresses (e.g., through the compression engine 103 of the
At block 408, the method 400 may include generating an historical compression profile based on the compression of the first set of documents. In an example, the computer system (e.g., the computing system 202 of
At block 410, the method 400 may include compressing the second set of documents by applying the historical compression profile. For example, the computer system compresses (e.g., through the compression engine 103 of the
Additional processes also may be included, and it should be understood that the processes depicted in
It should be emphasized that the above-described examples are merely possible examples of implementations and set forth for a clear understanding of the present disclosure. Many variations and modifications may be made to the above-described examples without departing substantially from the spirit and principles of the present disclosure. Further, the scope of the present disclosure is intended to cover any and all appropriate combinations and sub-combinations of all elements, features, and aspects discussed above. All such appropriate modifications and variations are intended to be included within the scope of the present disclosure, and all possible claims to individual aspects or combinations of elements or steps are intended to be supported by the present disclosure.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/EP2013/074780 | 11/26/2013 | WO | 00 |