[go: up one dir, main page]

JP7529673B2 - Content-agnostic file indexing method and system - Google Patents

Content-agnostic file indexing method and system Download PDF

Info

Publication number
JP7529673B2
JP7529673B2 JP2021540318A JP2021540318A JP7529673B2 JP 7529673 B2 JP7529673 B2 JP 7529673B2 JP 2021540318 A JP2021540318 A JP 2021540318A JP 2021540318 A JP2021540318 A JP 2021540318A JP 7529673 B2 JP7529673 B2 JP 7529673B2
Authority
JP
Japan
Prior art keywords
chunks
binary data
data file
chunk
data
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2021540318A
Other languages
Japanese (ja)
Other versions
JP2022518194A (en
Inventor
クリストファー マケルヴィーン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mcelveen Christopher
Lognovations Holdings LLC
Original Assignee
Mcelveen Christopher
Lognovations Holdings LLC
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
Priority claimed from US16/244,332 external-priority patent/US11138152B2/en
Application filed by Mcelveen Christopher, Lognovations Holdings LLC filed Critical Mcelveen Christopher
Publication of JP2022518194A publication Critical patent/JP2022518194A/en
Application granted granted Critical
Publication of JP7529673B2 publication Critical patent/JP7529673B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/174Redundancy elimination performed by the file system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6052Synchronisation of encoder and decoder

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

(関連出願の相互参照)
本出願は、2017年10月11日に出願された、「コンテンツ不可知ファイルインデキシングの方法及びシステム(Method and System for Content Agnostic File Indexing)」という名称の特許出願第15/730,043号の一部継続出願であり、同出願の内容はあらゆる目的の為に本明細書に参照により完全に援用される。
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation-in-part of patent application Ser. No. 15/730,043, filed Oct. 11, 2017, and entitled "Method and System for Content Agnostic File Indexing," the contents of which are hereby incorporated by reference in their entirety for all purposes.

(コンピュータプログラムリスト-シーケンスリスト)
以下のコンピュータプログラムリストを本明細書に添付して提出し、参照により援用する。夫々のファイルは参照により援用される。以下のコンピュータプログラムリストは、以下の形式である。<バイト単位のサイズ> <作成日> <ファイル名>。
(Computer Program Listing - Sequence Listing)
The following computer program listing is submitted herewith and incorporated by reference. Each file is incorporated by reference. The computer program listing below is in the following format: <size in bytes><creationdate><filename>.

3864 May 16 2018 squeeze-master-README-md.txt* 3864 May 16 2018 squeeze-master-README-md.txt*

83675 May 16 2018 squeeze-master-SqueezeReport-ipynb.txt* 83675 May 16 2018 squeeze-master-SqueezeReport-ipynb.txt*

4293 May 16 2018 squeeze-master-demo_app-py.txt* 4293 May 16 2018 squeeze-master-demo_app-py.txt*

98 May 16 2018 squeeze-master-gitignore.txt* 98 May 16 2018 squeeze-master-gitignore.txt*

1383 May 16 2018 squeeze-master-requirements.txt* 1383 May 16 2018 squeeze-master-requirements.txt*

2490 May 16 2018 squeeze-master-rpc_server-py.txt* 2490 May 16 2018 squeeze-master-rpc_server-py.txt*

239 May 16 2018 squeeze-master-scripts-buildprotos.txt* 239 May 16 2018 squeeze-master-scripts-buildprotos.txt*

942 May 16 2018 squeeze-master-scripts-file_test-py.txt* 942 May 16 2018 squeeze-master-scripts-file_test-py.txt*

1391 May 16 2018 squeeze-master-scripts-generate_key-py.txt* 1391 May 16 2018 squeeze-master-scripts-generate_key-py.txt*

711 May 16 2018 squeeze-master-scripts-generate_keyset-py.txt* 711 May 16 2018 squeeze-master-scripts-generate_keyset-py.txt*

629 May 16 2018 squeeze-master-scripts-keys_from_folder-py.txt* 629 May 16 2018 squeeze-master-scripts-keys_from_folder-py.txt*

377 May 16 2018 squeeze-master-scripts-lzw_test-py.txt* 377 May 16 2018 squeeze-master-scripts-lzw_test-py.txt*

107 May 16 2018 squeeze-master-scripts-runserver.txt* 107 May 16 2018 squeeze-master-scripts-runserver.txt*

3928 May 16 2018 squeeze-master-scripts-squeeze-bytes-report-py.txt* 3928 May 16 2018 squeeze-master-scripts-squeeze-bytes-report-py.txt*

63 May 16 2018 squeeze-master-scripts-squeeze_file-py.txt* 63 May 16 2018 squeeze-master-scripts-squeeze_file-py.txt*

1060 May 16 2018 squeeze-master-scripts-squeeze_test-py.txt* 1060 May 16 2018 squeeze-master-scripts-squeeze_test-py.txt*

947 May 16 2018 squeeze-master-scripts-string_test-py.txt* 947 May 16 2018 squeeze-master-scripts-string_test-py.txt*

222 May 16 2018 squeeze-master-scripts-test_binary-py.txt* 222 May 16 2018 squeeze-master-scripts-test_binary-py.txt*

1799 May 16 2018 squeeze-master-scripts-test_rpc-py.txt* 1799 May 16 2018 squeeze-master-scripts-test_rpc-py.txt*

2736 May 16 2018 squeeze-master-scripts-time-squeeze-string-py.txt* 2736 May 16 2018 squeeze-master-scripts-time-squeeze-string-py.txt*

211 May 16 2018 squeeze-master-scripts-time_keygen-py.txt* 211 May 16 2018 squeeze-master-scripts-time_keygen-py.txt*

65 May 16 2018 squeeze-master-scripts-unsqueeze_file-py.txt* 65 May 16 2018 squeeze-master-scripts-unsqueeze_file-py.txt*

80 May 16 2018 squeeze-master-setup-py.txt* 80 May 16 2018 squeeze-master-setup-py.txt*

10657 May 16 2018 squeeze-master-squeeze- _ init _ -py.txt* 10657 May 16 2018 squeeze-master-squeeze- _ init _ -py.txt*

2783 May 16 2018 squeeze-master-squeeze-bitstring-py.txt* 2783 May 16 2018 squeeze-master-squeeze-bitstring-py.txt*

9191 May 16 2018 squeeze-master-squeeze-keys-py.txt* 9191 May 16 2018 squeeze-master-squeeze-keys-py.txt*

613 May 16 2018 squeeze-master-squeeze-performance-csv.txt* 613 May 16 2018 squeeze-master-squeeze-performance-csv.txt*

22445 May 16 2018 squeeze-master-squeeze-squeeze_pb2-py.txt* 22445 May 16 2018 squeeze-master-squeeze-squeeze_pb2-py.txt*

2232 May 16 2018 squeeze-master-squeeze-squeeze_pb2_grpc-py.txt* 2232 May 16 2018 squeeze-master-squeeze-squeeze_pb2_grpc-py.txt*

3366 May 16 2018 squeeze-master-squeeze-proto.txt* 3366 May 16 2018 squeeze-master-squeeze-proto.txt*

875 May 16 2018 squeeze-master-templates-layout-html.txt* 875 May 16 2018 squeeze-master-templates-layout-html.txt*

816 May 16 2018 squeeze-master-templates-upload_form-html.txt* 816 May 16 2018 squeeze-master-templates-upload_form-html.txt*

1513 May 16 2018 squeeze-master-templates-uploaded_file-html.txt* 1513 May 16 2018 squeeze-master-templates-uploaded_file-html.txt*

200 May 16 2018 squeezerpc-master-Makefile.txt* 200 May 16 2018 squeezerpc-master-Makefile.txt*

1131 May 16 2018 squeezerpc-master-README-md.txt* 1131 May 16 2018 squeezerpc-master-README-md.txt*

7 May 16 2018 squeezerpc-master-gitignore.txt* 7 May 16 2018 squeezerpc-master-gitignore.txt*

8995 May 16 2018 squeezerpc-master-main-go.txt* 8995 May 16 2018 squeezerpc-master-main-go.txt*

21292 May 16 2018 squeezerpc-master-squeeze-squeeze-pb-go.txt* 21292 May 16 2018 squeezerpc-master-squeeze-squeeze-pb-go.txt*

3366 May 16 2018 squeezerpc-master-squeeze-proto.txt* 3366 May 16 2018 squeezerpc-master-squeeze-proto.txt*

本開示は、コンテンツ不可知ファイル参照の為の方法に関するものである。本方法は、更に、コンテンツ不可知データ圧縮の為の方法に関するものである。 The present disclosure relates to a method for content agnostic file referencing. The method further relates to a method for content agnostic data compression.

ファイル参照技術は、一般に、ファイル参照システムにおいてデータを効率的にインデキシングする為に、保存されているデータの種類に関する知識を必要とする。同様に、問題となっているデータに関する知識は、一般的に、送信、保存等の為にデータサイズを縮小する為の改良された圧縮アプローチを作成する際にも使用される。 File referencing techniques typically require knowledge of the type of data being stored in order to efficiently index the data in the file referencing system. Similarly, knowledge of the data in question is typically used in creating improved compression approaches to reduce the size of data for transmission, storage, etc.

業界では、保存及び/又は送信しなければならないデータ量を減らす為に、ファイル参照及びデータ圧縮技術を改善する必要性が存在する。 There is a need in the industry for improved file referencing and data compression techniques to reduce the amount of data that must be stored and/or transmitted.

一実施形態によれば、本開示は、強化されたコンテンツ不可知ファイル参照システムを用いてコンピューティング技術を改善する方法を提供する。この方法は、コンピュータ自体の動作を改善するものである。 According to one embodiment, the present disclosure provides a method for improving computing technology using an enhanced content-agnostic file referencing system, which improves the operation of the computer itself.

開示された方法は幾つかの重要な利点を有する。例えば、開示された方法は、任意のコンテンツタイプのファイル参照を可能にする。 The disclosed method has several important advantages. For example, the disclosed method allows file references of any content type.

開示された方法は、更に、データが永続化されるのとは対照的に、アクセス時に生成され得るので、永続化又は送信されなければならない情報又はデータの量を大幅に減少させることができる。 The disclosed method may further significantly reduce the amount of information or data that must be persisted or transmitted because the data may be generated at the time of access, as opposed to being persisted.

本開示の様々な実施形態は、これらの利点の何れも有していなくても、又はその一部或いは全てを有していてもよい。当業者には、本開示の他の技術的利点も容易に明らかになり得る。 Various embodiments of the present disclosure may have none, some, or all of these advantages. Other technical advantages of the present disclosure may be readily apparent to those skilled in the art.

本開示及びその利点をより完全に理解する為に、ここで、添付の図面と併せて以下の説明を参照する。
同じ参照符号は、図面の幾つかの図を通して同じ部品又はステップを参照する。
本開示の一実施形態のステップを概説するフローチャートである。 本開示の別の実施形態のステップを概説する別のフローチャートである。 本開示の代替実施形態のステップを概説するフローチャートである。
For a more complete understanding of the present disclosure and its advantages, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
The same reference numbers refer to the same parts or steps throughout the several views of the drawings.
1 is a flow chart outlining the steps of one embodiment of the present disclosure. 4 is another flowchart outlining the steps of another embodiment of the present disclosure. 1 is a flow chart outlining the steps of an alternative embodiment of the present disclosure.

本開示は、データのコンテンツ不可知インデキシングの為の方法に関するものである。本方法は、例えば、ファイル参照システムや圧縮システムとして等、コンピュータ特有の様々なニーズに使用され得る。 This disclosure relates to a method for content-agnostic indexing of data. The method can be used for a variety of computer-specific needs, such as, for example, as a file referencing system or a compression system.

以下の開示では、例示としてバイナリデータの圧縮に関連して本発明を説明しているが、本教示は、「n-ary」データと呼ぶ方が相応しい、あらゆるタイプのデータで同様に機能する。例えば、本方法及びシステムは、量子ビット及びビットでも動作する。 In the following disclosure, the invention is described with respect to compressing binary data as an example, but the teachings work equally well with any type of data that is better referred to as "n-ary" data. For example, the methods and systems also work with qubits and bits.

本発明の一実施形態は、図1に描かれたフローチャートに記載されているような方法を含む。永続化又は送信されるバイナリデータ(n)(例えば、データファイル)が分析され、ビット単位の長さ(l(n))が決定される。この情報を用いて、ステップ106で、本方法は、識別された長さのデータの全ての順列を計算する。例えば、入力データが次のような場合、
01
One embodiment of the present invention includes a method as described in the flow chart depicted in Figure 1. Binary data (n i ) to be persisted or transmitted (e.g., a data file) is analyzed to determine its length in bits (l(n i )). Using this information, in step 106, the method calculates all permutations of data of the identified length. For example, if the input data is:
01

入力データは2ビットの長さとなる。ステップ106で、2ビットの全ての順列が生成され、即ち次のようになる。
{00}{01}{10}{11}
The input data is 2 bits long. In step 106, all permutations of the 2 bits are generated, namely:
{00}{01}{10}{11}

ステップ108で、本方法は、生成された順列における入力バイナリデータファイルのインデックス(n)を決定する。上記の例では、返されるインデックス(n)は「1」となる。最後に、入力されたバイナリデータ(即ち「01」)を保存又は送信するのではなく、システムは代わりに長さ(2)とインデックス(1)を保存する。 At step 108, the method determines the index ( nf ) of the input binary data file in the generated permutation. In the above example, the returned index ( nf ) would be "1." Finally, rather than storing or transmitting the input binary data (i.e., "01"), the system instead stores the length (2) and index (1).

元の入力データをデコードする必要が生じた場合(例えば、元のバイナリデータをディスクから取得する要求や、ネットワークを介して送信されたデータの受信)、この方法は、入力として長さ(l(n))とインデックス(n)のみを必要とする。上記の例では、長さ(2)とインデックス(1)が入力となる。図2に示すように、システムは、入力された長さの全ての順列を計算する。上記の例では、次のような順列が生成される。
{00}{01}{10}{11}
When the original input data needs to be decoded (e.g., a request to retrieve the original binary data from a disk or receiving data sent over a network), the method only requires the length (l(n i )) and index (n f ) as input. In the above example, the inputs are length (2) and index (1). As shown in Figure 2, the system computes all permutations of the input length. In the above example, the following permutations are generated:
{00}{01}{10}{11}

システムは指定されたインデックス(上記の例では1)に移動し、順列を返す。再び上記の例を用いて、元のバイナリデータの「01」が返される。 The system moves to the specified index (1 in the above example) and returns the permutation. Again, using the above example, the original binary data "01" is returned.

上記の方法は、例示の目的で、バイナリシステム(即ち、入力データがバイナリデータである)の観点から説明されている。本方法及びシステムは、n-aryシステムについても同様に動作する。上記のバイナリシステムは基本的にユークリッド平面で動作するが、n-aryデータではヒルベルト空間が概念的に同じ利点を提供する。この方法とプロセスは、以下のようにn-aryデータに対して一般化され得る。
d^n=p(i)
(d^n)n=p(f)
d=システムの次数
n=システムの次数に応じた適切なn-ary単位での長さ
p(i)=初期インデックス
p(f)=最終インデックス

Figure 0007529673000001
The above method is described in terms of a binary system (i.e., the input data is binary data) for illustrative purposes. The method and system work similarly for n-ary systems. Although the above binary system essentially operates in the Euclidean plane, for n-ary data, Hilbert space offers the same conceptual advantages. The method and process can be generalized to n-ary data as follows.
d^n=p(i)
(d^n)n=p(f)
d = system order n = length in n-ary units appropriate to the system order p(i) = initial index p(f) = final index
Figure 0007529673000001

同じ入力ファイルで2つの代替的な順序付けされたシステムが与えられた場合、より高い順序を持つシステムが、より低い順序を持つ代替的なシステムと比較して、より高いn-ary密度を有することに留意すべきである。 It should be noted that given two alternative ordered systems with the same input file, the system with the higher order will have a higher n-ary density compared to the alternative system with the lower order.

本方法の一例は、以下のRubyコードスニペットに開示されている。以下のスニペットは、図1に開示されているような方法を示している。

Figure 0007529673000002
An example of this method is disclosed in the following Ruby code snippet: The following snippet illustrates the method as disclosed in FIG.
Figure 0007529673000002

以下のスニペットは、入力長(l(n))が16、インデックス(n)が72,629の場合の、図2に開示されている方法を示している。

Figure 0007529673000003
The following snippet illustrates the method disclosed in FIG. 2 for an input length (l(n i )) of 16 and an index (n f ) of 72,629.
Figure 0007529673000003

好ましい実施形態では、入力バイトストリングは、入力バイトストリングの表現に対応するビットストリングに変換される。このビットストリングは、次に本明細書に記載された方法によって処理されるものである。 In a preferred embodiment, an input byte string is converted into a bit string that corresponds to a representation of the input byte string. This bit string is then processed by the methods described herein.

代替的な実施形態では、データの長さに基づいて表を生成するのではなく、特定の長さのデータの全ての順列で表を事前生成してもよい。この事前生成された表は、不揮発性メモリ又は揮発性メモリの何れかのメモリに永続化されてもよい。上記の例では、所定の長さが2ビットの場合、事前生成された表には、次のような2ビットデータの全ての順列が含まれる。
{00}{01}{10}{11}
In an alternative embodiment, rather than generating a table based on the length of the data, a table may be pre-generated with all permutations of data of a particular length. This pre-generated table may be persisted in memory, either non-volatile or volatile. In the above example, if the given length is 2 bits, the pre-generated table would include all permutations of 2-bit data such as:
{00}{01}{10}{11}

一実施形態では、この表は、以下のように対応するインデックスを付けた配列で格納されてもよい。

Figure 0007529673000004
In one embodiment, this table may be stored in a correspondingly indexed array as follows:
Figure 0007529673000004

この事前生成された表は、ディスクやRAM等に保存されてもよい。好ましくは、この事前生成された表は、ファイルサイズを縮小する(又はファイルをスクイーズする)計算機システムと、縮小されたファイルを拡張する(又はデータをスクイーズ解除する)計算機システムとで保存される。 This pre-generated table may be stored on disk, in RAM, etc. Preferably, this pre-generated table is stored on the computer system that reduces the file size (or squeezes the file) and on the computer system that expands the reduced file (or unsqueezes the data).

入力データを受け取ると、本方法はデータをより小さなサブセットに「チャンク」する。本明細書では、「チャンク」とは、データストリングを取得して大きなデータストリングのサブセットを構成する小さなデータストリングを作成することを意味する。全てのチャンクを合わせると元のデータストリングになる。例えば、入力データが
011001110001
であれば、
Upon receiving input data, the method "chunks" the data into smaller subsets. As used herein, "chunking" means taking a data string and creating smaller data strings that constitute subsets of the larger data string. All the chunks taken together make up the original data string. For example, if the input data is 011001110001
If,

以下の4ビットチャンクにチャンクされることになる。
0010 0111 0001
It will be chunked into the following 4-bit chunks:
0010 0111 0001

次に、個々のチャンクは、事前生成された表と比較され、一致するものがあるかどうかを確認する。上記の例では、チャンクのサイズが4ビットの場合、表には全2ビットチャンクの順列を有する為、各チャンクは表に見つからないことになる。従って、各チャンクは再度チャンクされ、以下のようになる。
01 10 01 11 00 01
Then each chunk is compared to the pre-generated table to see if there is a match. In the above example, if the chunk size is 4 bits, each chunk will not be found in the table since the table has all the permutations of the 2-bit chunks. Therefore, each chunk is re-chunked, as follows:
01 10 01 11 00 01

この方法は、特定のチャンクが事前生成された表の中に配置される時点まで、各チャンクに対して続けられる。その時点で、チャンクは夫々のインデックスと関連付けられ、好ましくは、チャンクレベル及び対応するインデックスを示す一連のタプルが生成される。上記の例では、システムが2回チャンクしたので、インデックスの関連付けは以下のようになる。
{2,1}{2,2}{2,1}{2,3}{2,0}{2,1}
This method continues for each chunk until the particular chunk is placed in the pre-generated table. At that point, the chunk is associated with a respective index and preferably a series of tuples are generated indicating the chunk level and the corresponding index. In the above example, the system chunked twice, so the index associations are as follows:
{2,1}{2,2}{2,1}{2,3}{2,0}{2,1}

この例では、元の入力データ「011001110001」は、最終的に2ビット長の6つのチャンクに分割された。図示のように、各チャンクはチャンクレベル(2)と、事前生成された表への対応するインデックスで表されている。 In this example, the original input data "011001110001" was ultimately split into 6 chunks of 2-bit length. As shown, each chunk is represented by its chunk level (2) and a corresponding index into the pre-generated table.

データは、任意の数の方法でチャンクされ得る。例えば、データは、上記の例のように、事前に決定されたサイズに基づいてチャンクされてもよい(ここで、事前に決定されたサイズは、例の目的の為に4ビットであった)。或いは、各データチャンクが事前生成された表の中で見つかるまで入力データを2つの別々のデータチャンクに再帰的にチャンクしてもよい。上記と同じ入力データを使用して、データを分割してチャンク化する方法では、次のような第1レベルのチャンクになる。
011001 110001
The data may be chunked in any number of ways. For example, the data may be chunked based on a pre-determined size, as in the example above (where the pre-determined size was 4 bits for purposes of the example). Alternatively, the input data may be recursively chunked into two separate data chunks until each data chunk is found in the pre-generated table. Using the same input data as above, the method of splitting and chunking the data would result in the following first level chunks:
011001 110001

ここで、データセットが事前生成された表に見つからないので、再度チャンクされる。
011 001 110 001
Here, the dataset is not found in the pre-generated table and is therefore re-chunked.
011 001 110 001

ここでも、チャンクされたデータは事前生成された表では見つからないので、再度チャンクされなければならない。
00 1 00 1 11 0 00 1
Again, the chunked data cannot be found in the pre-generated table and must be re-chunked.
00 1 00 1 11 0 00 1

注目すべきは、幾つかのセグメントが、事前生成された表のサイズよりも小さいデータにチャンクされていることである(即ち、セグメント「1」、「1」、「0」、「1」)。これらのセグメントは、事前生成された表と比較する為にパディングされることがある。一貫性が保たれていれば、数字はビッグエンディアン又はリトルエンディアンバイトオーダーで保存され得る。例えば、ビッグエンディアンバイトオーダーを使った場合、上記のチャンクデータは次のように表される。
00 10 00 10 11 00 00 10
It is worth noting that some segments have been chunked into data smaller than the size of the pre-generated table (i.e. segments "1", "1", "0", "1"). These segments may be padded to make them comparable to the pre-generated table. As long as consistency is maintained, numbers may be stored in either big-endian or little-endian byte order. For example, using big-endian byte order, the above chunked data would be represented as follows:
00 10 00 10 11 00 00 10

その後、この方法は上記と同じように続く。 The method then continues as above.

データの全てのチャンクが、同じデータチャンクレベルで事前生成された表の中で見つかることは必要ではない。例えば、2ビットの組み合わせに関する上記の事前生成された表を使用して、もし入力データが以下であれば、
0110011100
It is not necessary that all chunks of data be found in the pre-generated tables at the same data chunk level. For example, using the above pre-generated tables for 2-bit combinations, if the input data is:
0110011100

このデータは本来、上記のように4ビットのシーケンスに分割してチャンクされ得る。
0110 0111 00
This data can be essentially chunked into sequences of 4 bits as described above.
0110 0111 00

上記と同様に、最初の2つの4ビットシーケンス(即ち「0110」と「0111」)は、事前生成された表に配置される為に、より小さなチャンクに再度チャンクされなければならず、その結果、以下のチャンクになる。
01 10 01 11 00
Similar to above, the first two 4-bit sequences (i.e., “0110” and “0111”) must be re-chunked into smaller chunks in order to be placed into the pre-generated table, resulting in the following chunks:
01 10 01 11 00

また、上記のように、チャンクは以下のように自らのチャンクレベル及び対応するインデックスに関連付けられる。
{2,1}{2,2}{2,1}{2,3}{1,0}
Also, as above, chunks are associated with their chunk level and corresponding index as follows:
{2,1}{2,2}{2,1}{2,3}{1,0}

上記の最後のタプルは、そのチャンクが2回目のチャンキングを必要としなかったので、チャンクレベルが1であることを示していることに留意されたい。 Note that the last tuple above indicates that the chunk level is 1, since the chunk did not require a second chunking.

入力データが一連のチャンクレベルとインデックスに還元されると、その一連のチャンクレベルとインデックスを使用して、元のデータを識別する。関連付けは、一連のタプルとして、個別のビットストリングとして、及びその他の方法で保存され得る。 Once the input data is reduced to a set of chunk levels and indices, the set of chunk levels and indices is used to identify the original data. The associations can be stored as a set of tuples, as individual bit strings, and in other ways.

一連のチャンクレベルとインデックスに基づいてデータを再作成(又はスクイーズ解除)するには、プロセスは逆に動作する。この場合も、システムには同じ事前生成された表が必要である。チャンクレベルとインデックスの各タプルに対して、システムは事前生成された表を参照して、スクイーズされたチャンクをアンパックし、元のデータに戻す。 To recreate (or unsqueeze) the data based on a set of chunk levels and indexes, the process works in reverse. In this case, the system still needs the same pre-generated tables. For each chunk level and index tuple, the system consults the pre-generated tables to unpack the squeezed chunk back into the original data.

この代替実施形態は、図3のフローチャートに示されている。まず、以下のような特定の長さのデータの全ての順列を含む事前生成された表がステップ302で作成される。上述したように、好ましくは、その表は何らかの方法で永続化される。次に、システムは、ステップ304で、スクイーズ対象入力データを受け取る。次にプロセスは、ステップ306及び308で、データの長さが「事前生成された表」に配置される長さになるまで、データをより小さなセグメントにチャンクする。上述したように、このプロセスは、入力データセットが何回チャンクされたかをシステムが知ることができるように、チャンクレベルを維持する。その後、各チャンクはステップ310で事前生成された表に配置される。最後に、チャンク、そのチャンクレベル、及び事前生成された表内の夫々のインデックスが関連付けられ、その結果、ステップ312で、スクイーズされたデータが得られる。 This alternative embodiment is illustrated in the flow chart of FIG. 3. First, a pre-generated table is created in step 302 that contains all permutations of data of a particular length, such as: 1 x ...

本開示を、特定の実施形態及び一般的に関連する方法の観点から説明してきたが、これらの実施形態及び方法の変更及び順列は、当業者には明らかであろう。従って、例示的な実施形態に関する上記の説明は、本開示を制約するものではない。本開示の精神及び範囲から逸脱することなく、他の変更、置換、及び改変も可能である。
〔付記1〕
バイナリデータファイルのコンテンツ不可知参照の為のコンピュータ実装方法であって、
入力シードを用いて表を事前生成するステップであって、表は所定の長さのビットの全ての順列を含むステップと、
前記バイナリデータファイルの長さを決定するステップであって、前記長さは、前記バイナリデータファイルのビット数を含むステップと、
前記バイナリデータファイルを部分ストリングにチャンクするステップであって、各部分ストリングは前記バイナリデータファイルの長さよりも小さい長さであるステップと、
前記バイナリデータファイルの各チャンクについて、そのチャンクが前記事前生成された表内にあるかどうかを判断し、そのチャンクが事前生成された表内にある場合には、そのチャンクに前記事前生成された表内のチャンクの位置のインデックスを関連付け、そのチャンクが前記事前生成された表内にない場合には、チャンクされたバイナリデータを更に小さなチャンクに分割するステップと、
チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップと、を含む方法。
〔付記2〕
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記バイナリデータファイルの代わりに、前記チャンクの数及び全ての関連するインデックスを記憶装置に永続化するステップを含む、付記1に記載の方法。
〔付記3〕
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記データファイルの代わりに前記チャンクの数及び全チャンクの関連するインデックスを送信するステップを含む、付記1に記載の方法。
〔付記4〕
前記送信するステップは、前記チャンクの数及び全チャンクの関連するインデックスをネットワーク上で送信する、付記3に記載の方法。
〔付記5〕
前記送信するステップは、前記チャンク数及び全チャンクの関連するインデックスをバス上で送信する、付記3に記載の方法。
〔付記6〕
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、
各順序付けられたペアがチャンクレベル及び関連するインデックスを示す、順序付けられたペアのタプルを作成するステップを含む、付記1に記載の方法。
〔付記7〕
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、前記チャンクの数及び全チャンクの関連するインデックスを記憶装置上に永続化することを含む、付記1に記載の方法。
〔付記8〕
前記記憶装置はディスクである、付記7に記載の方法。
〔付記9〕
前記事前生成された表がハッシュ表である、付記1に記載の方法。
〔付記10〕
前記事前生成された表が行列である、付記1に記載の方法。
〔付記11〕
前記事前生成された表が揮発性メモリに永続化される、付記1に記載の方法。
〔付記12〕
前記事前生成された表が不揮発性メモリに永続化される、付記1に記載の方法。
〔付記13〕
前記バイナリデータファイルを部分ストリングにチャンクすることは、更に、
前記バイナリデータを所定の長さのチャンクにチャンクすることを含む、付記1に記載の方法。
〔付記14〕
前記所定の長さが2メガバイトである、付記13に記載の方法。
〔付記15〕
前記所定の長さが2メガバイトよりも小さい、付記13に記載の方法。
〔付記16〕
前記所定の長さが2メガバイトよりも大きい、付記13に記載の方法。
〔付記17〕
前記バイナリデータファイルを部分ストリングにチャンクすることは、更に、
前記バイナリデータファイルを、同じサイズの2つのチャンクに再帰的に分割することを含む付記1に記載の方法。
〔付記18〕
チャンクの数及び全チャンクの関連するインデックスに基づいてデータを取得する方法であって、
入力シードを使用して表を事前生成するステップであって、前記表は、所定の長さのビットの全ての順列を含み、前記事前生成された表を使用してチャンクの数及び関連するインデックスを生成するステップと、
各チャンクについて、そのチャンクに関連付けられたインデックスで表内にデータを配置するステップと、各チャンクに関連付けられたデータを返すステップと、を含む方法。
〔付記19〕
各チャンクに関連するデータを返すステップは、
各チャンクに関連するデータを単一のビットストリームに連結することを含む、付記18に記載の方法。
While the present disclosure has been described in terms of specific embodiments and generally associated methods, modifications and permutations of these embodiments and methods will be apparent to those skilled in the art. Thus, the above description of exemplary embodiments does not constrain the present disclosure. Other changes, substitutions, and alterations are possible without departing from the spirit and scope of the present disclosure.
[Appendix 1]
1. A computer-implemented method for content-agnostic browsing of a binary data file, comprising:
pre-generating a table using an input seed, the table containing all permutations of bits of a predetermined length;
determining a length of the binary data file, the length comprising a number of bits in the binary data file;
chunking the binary data file into substrings, each substring being of a length less than a length of the binary data file;
for each chunk of the binary data file, determining whether the chunk is within the pre-generated table, and if the chunk is within the pre-generated table, associating with the chunk an index of the chunk's location within the pre-generated table, and if the chunk is not within the pre-generated table, splitting the chunked binary data into smaller chunks;
and indicating the binary data file using a number of chunks and associated indices of all chunks.
[Appendix 2]
indicating the binary data file using the number of chunks and associated indices of all chunks,
2. The method of claim 1, further comprising persisting the number of chunks and all associated indexes to a storage device in place of the binary data file.
[Appendix 3]
indicating the binary data file using the number of chunks and associated indices of all chunks,
2. The method of claim 1, comprising sending the number of chunks and associated indices of all chunks instead of the data file.
[Appendix 4]
4. The method of claim 3, wherein the transmitting step transmits the number of chunks and associated indices of all chunks over a network.
[Appendix 5]
4. The method of claim 3, wherein the transmitting step transmits the number of chunks and associated indices of all chunks over a bus.
[Appendix 6]
indicating the binary data file using the number of chunks and associated indices of all chunks,
2. The method of claim 1, comprising creating a tuple of ordered pairs, each ordered pair indicating a chunk level and an associated index.
[Appendix 7]
2. The method of claim 1, wherein the step of indicating the binary data file using the number of chunks and associated indexes of all chunks includes persisting the number of chunks and associated indexes of all chunks on a storage device.
[Appendix 8]
8. The method of claim 7, wherein the storage device is a disk.
[Appendix 9]
2. The method of claim 1, wherein the pre-generated table is a hash table.
[Appendix 10]
2. The method of claim 1, wherein the pre-generated table is a matrix.
[Appendix 11]
2. The method of claim 1, wherein the pre-generated table is persisted in volatile memory.
[Appendix 12]
2. The method of claim 1, wherein the pre-generated table is persisted in non-volatile memory.
[Appendix 13]
Chunking the binary data file into substrings further comprises:
2. The method of claim 1, comprising chunking the binary data into chunks of a predetermined length.
[Appendix 14]
14. The method of claim 13, wherein the predetermined length is 2 megabytes.
[Appendix 15]
14. The method of claim 13, wherein the predetermined length is less than 2 megabytes.
[Appendix 16]
14. The method of claim 13, wherein the predetermined length is greater than 2 megabytes.
[Appendix 17]
Chunking the binary data file into substrings further comprises:
2. The method of claim 1, comprising recursively splitting the binary data file into two chunks of equal size.
[Appendix 18]
1. A method for retrieving data based on a number of chunks and associated indexes of all chunks, comprising:
pre-generating a table using an input seed, the table containing all permutations of bits of a given length, and generating a number of chunks and associated indexes using the pre-generated table;
The method includes the steps of: for each chunk, locating data in a table at an index associated with the chunk; and returning data associated with each chunk.
[Appendix 19]
The steps to return the data associated with each chunk are:
19. The method of claim 18, comprising concatenating data associated with each chunk into a single bitstream.

Claims (17)

計算機システム上で実行されるバイナリデータファイルのコンテンツ不可知参照の為の情報処理方法であって、
前記計算機システムを使用して、入力シードを用いて表を事前生成するステップであって、表は所定の長さのビットの全ての順列を含むステップと、
前記計算機システムを使用して、前記バイナリデータファイルの長さを決定するステップであって、前記長さは、前記バイナリデータファイルのビット数を含むステップと、
前記計算機システムを使用して、前記バイナリデータファイルを部分ストリングにチャンクするステップであって、各部分ストリングは前記バイナリデータファイルの長さよりも小さい長さであるステップと、
前記計算機システムを使用して、前記バイナリデータファイルの各チャンクについて、そのチャンクが前記事前生成された表内にあるかどうかを判断し、そのチャンクが事前生成された表内にある場合には、そのチャンクに前記事前生成された表内のチャンクの位置のインデックスを関連付け、そのチャンクが前記事前生成された表内にない場合には、チャンクされたバイナリデータを更に小さなチャンクに分割するステップと、
前記計算機システムを使用して、チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップと、を含む方法。
1. An information processing method for content-agnostic referencing of binary data files executed on a computer system, comprising:
using said computer system to pre-generate a table using an input seed, the table containing all permutations of bits of a predetermined length;
using the computer system to determine a length of the binary data file, the length comprising a number of bits in the binary data file;
using the computer system, chunking the binary data file into substrings, each substring being of a length less than a length of the binary data file;
using the computer system to determine, for each chunk of the binary data file, whether the chunk is within the pre-generated table, and if the chunk is within the pre-generated table, associating with the chunk an index of the chunk's location within the pre-generated table, and if the chunk is not within the pre-generated table, splitting the chunked binary data into smaller chunks;
and using the computer system to index the binary data file using a number of chunks and associated indices of all chunks.
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記バイナリデータファイルの代わりに、前記チャンクの数及び全ての関連するインデックスを記憶装置に永続化するステップを含む、請求項1に記載の方法。
indicating the binary data file using the number of chunks and associated indices of all chunks,
The method of claim 1 , further comprising persisting the number of chunks and any associated indexes to a storage device in place of the binary data file.
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記バイナリデータファイルの代わりにチャンクの数及び全チャンクの関連するインデックスを送信するステップを含む、請求項1に記載の方法。
indicating the binary data file using the number of chunks and associated indices of all chunks,
The method of claim 1 , comprising transmitting a number of chunks and associated indices of all chunks in place of the binary data file .
前記送信するステップは、前記チャンクの数及び全チャンクの関連するインデックスをネットワーク上で送信する、請求項3に記載の方法。 The method of claim 3, wherein the transmitting step transmits the number of chunks and associated indices of all chunks over a network. 前記送信するステップは、前記チャンクの数及び全チャンクの関連するインデックスをバス上で送信する、請求項3に記載の方法。 4. The method of claim 3, wherein the transmitting step transmits the number of chunks and associated indices of all chunks over a bus. 前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、
各順序付けられたペアがチャンクレベル及び関連するインデックスを示す、順序付けられたペアのタプルを作成するステップを含む、請求項1に記載の方法。
indicating the binary data file using the number of chunks and associated indices of all chunks,
The method of claim 1 , comprising creating a tuple of ordered pairs, each ordered pair indicating a chunk level and an associated index.
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、前記チャンクの数及び全チャンクの関連するインデックスを記憶装置上に永続化することを含む、請求項1に記載の方法。 The method of claim 1, wherein the step of indicating the binary data file using the number of chunks and associated indexes of all chunks includes persisting the number of chunks and associated indexes of all chunks on a storage device. 前記記憶装置はディスクである、請求項7に記載の方法。 The method of claim 7, wherein the storage device is a disk. 前記事前生成された表がハッシュ表である、請求項1に記載の方法。 The method of claim 1, wherein the pre-generated table is a hash table. 前記事前生成された表が行列である、請求項1に記載の方法。 The method of claim 1, wherein the pre-generated table is a matrix. 前記事前生成された表が揮発性メモリに永続化される、請求項1に記載の方法。 The method of claim 1, wherein the pre-generated table is persisted in volatile memory. 前記事前生成された表が不揮発性メモリに永続化される、請求項1に記載の方法。 The method of claim 1, wherein the pre-generated table is persisted in non-volatile memory. 前記バイナリデータファイルを部分ストリングにチャンクすることは、更に、
前記バイナリデータを所定の長さのチャンクにチャンクすることを含む、請求項1に記載の方法。
Chunking the binary data file into substrings further comprises:
The method of claim 1 , comprising chunking the binary data into chunks of a predetermined length.
前記所定の長さが2メガバイトである、請求項13に記載の方法。 The method of claim 13, wherein the predetermined length is 2 megabytes. 前記所定の長さが2メガバイトよりも小さい、請求項13に記載の方法。 The method of claim 13, wherein the predetermined length is less than 2 megabytes. 前記所定の長さが2メガバイトよりも大きい、請求項13に記載の方法。 The method of claim 13, wherein the predetermined length is greater than 2 megabytes. 前記バイナリデータファイルを部分ストリングにチャンクすることは、更に、
前記バイナリデータファイルを、同じサイズの2つのチャンクに再帰的に分割することを含む請求項1に記載の方法。
Chunking the binary data file into substrings further comprises:
2. The method of claim 1, comprising recursively splitting the binary data file into two chunks of equal size.
JP2021540318A 2019-01-10 2020-01-08 Content-agnostic file indexing method and system Active JP7529673B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/244,332 2019-01-10
US16/244,332 US11138152B2 (en) 2017-10-11 2019-01-10 Method and system for content agnostic file indexing
PCT/US2020/012661 WO2020146448A1 (en) 2019-01-10 2020-01-08 Method and system for content agnostic file indexing

Publications (2)

Publication Number Publication Date
JP2022518194A JP2022518194A (en) 2022-03-14
JP7529673B2 true JP7529673B2 (en) 2024-08-06

Family

ID=71520909

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021540318A Active JP7529673B2 (en) 2019-01-10 2020-01-08 Content-agnostic file indexing method and system

Country Status (6)

Country Link
EP (1) EP3908937A4 (en)
JP (1) JP7529673B2 (en)
KR (1) KR20210110875A (en)
AU (1) AU2020205970B2 (en)
CA (1) CA3126012A1 (en)
WO (1) WO2020146448A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11138152B2 (en) 2017-10-11 2021-10-05 Lognovations Holdings, Llc Method and system for content agnostic file indexing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007508753A (en) 2003-10-17 2007-04-05 パクバイト ソフトウエア プロプライアタリー リミティド Data compression system and method
US20120166448A1 (en) 2010-12-28 2012-06-28 Microsoft Corporation Adaptive Index for Data Deduplication
US20150201043A1 (en) 2010-08-20 2015-07-16 Abdulrahman Ahmed Sulieman Methods and systems for encoding/decoding files and transmissions thereof

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5594435A (en) * 1995-09-13 1997-01-14 Philosophers' Stone Llc Permutation-based data compression
US7882139B2 (en) * 2003-09-29 2011-02-01 Xunlei Networking Technologies, Ltd Content oriented index and search method and system
US20050071151A1 (en) * 2003-09-30 2005-03-31 Ali-Reza Adl-Tabatabai Compression-decompression mechanism
US8510459B2 (en) * 2006-09-01 2013-08-13 Pacbyte Software Pty Limited Method and system for transmitting a data file over a data network
GB2539966B (en) * 2015-07-03 2017-08-30 Sisp Tech Ltd Data processing method and apparatus
US11138152B2 (en) * 2017-10-11 2021-10-05 Lognovations Holdings, Llc Method and system for content agnostic file indexing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007508753A (en) 2003-10-17 2007-04-05 パクバイト ソフトウエア プロプライアタリー リミティド Data compression system and method
US20150201043A1 (en) 2010-08-20 2015-07-16 Abdulrahman Ahmed Sulieman Methods and systems for encoding/decoding files and transmissions thereof
US20120166448A1 (en) 2010-12-28 2012-06-28 Microsoft Corporation Adaptive Index for Data Deduplication

Also Published As

Publication number Publication date
WO2020146448A1 (en) 2020-07-16
JP2022518194A (en) 2022-03-14
CA3126012A1 (en) 2020-07-16
AU2020205970B2 (en) 2025-06-26
EP3908937A4 (en) 2022-09-28
KR20210110875A (en) 2021-09-09
EP3908937A1 (en) 2021-11-17
AU2020205970A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
US8244530B2 (en) Efficient indexing of documents with similar content
US11899641B2 (en) Trie-based indices for databases
US9805079B2 (en) Executing constant time relational queries against structured and semi-structured data
US10680645B2 (en) System and method for data storage, transfer, synchronization, and security using codeword probability estimation
US9892237B2 (en) System and method for characterizing biological sequence data through a probabilistic data structure
CN109299086B (en) Optimal sort key compression and index reconstruction
US20120089579A1 (en) Compression pipeline for storing data in a storage cloud
US11366790B2 (en) System and method for random-access manipulation of compacted data files
US11138152B2 (en) Method and system for content agnostic file indexing
US11880368B2 (en) Compressing data sets for storage in a database system
US11139828B2 (en) Memory compression method and apparatus
JP7529673B2 (en) Content-agnostic file indexing method and system
CN112416879B (en) NTFS file system-based block-level data deduplication method
CN118861100A (en) Large object reading method, storage medium and device for database
JP7047110B2 (en) Content-independent file indexing methods and systems
US8595195B2 (en) Creating a self-contained portable output file
CN118885485A (en) Storage method and related products of temporary large objects in database
CN118861063A (en) Database large object rewriting method, storage medium and device
CN118861064A (en) Database large object deletion method, storage medium and device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221024

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240517

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240625

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240725

R150 Certificate of patent or registration of utility model

Ref document number: 7529673

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150