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

Content agnostic file indexing method and system Download PDF

Info

Publication number
JP2022518194A
JP2022518194A JP2021540318A JP2021540318A JP2022518194A JP 2022518194 A JP2022518194 A JP 2022518194A JP 2021540318 A JP2021540318 A JP 2021540318A JP 2021540318 A JP2021540318 A JP 2021540318A JP 2022518194 A JP2022518194 A JP 2022518194A
Authority
JP
Japan
Prior art keywords
chunks
binary data
chunk
data file
index
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.)
Pending
Application number
JP2021540318A
Other languages
Japanese (ja)
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
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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)

Abstract

バイナリデータファイルのコンテンツ不可知参照の為のコンピュータ実装方法であって、特定の長さのデータの全ての順列の表を事前生成し、バイナリデータファイルの長さを決定し、その長さはバイナリデータファイルのビット数を含む、ステップと、バイナリデータをより小さい長さのデータのチャンクにチャンクするステップと、各チャンクについて、そのチャンクが事前生成された表にあるかどうかを判断し、ある場合は、事前生成された表のそのチャンクインデックスを使用し、ない場合はサブチャンクが事前生成された表に配置されるまでデータを再度チャンクし、チャンクの数及び関連するインデックスを使用してバイナリデータファイルを示すステップとを含む方法。A computer-implemented method for unknowing references to the contents of a binary data file, which pre-generates a table of all sequences of data of a particular length, determines the length of the binary data file, and that length is binary. A step that contains the number of bits in the data file, a step that chunks binary data into chunks of smaller length data, and for each chunk, determine if that chunk is in a pregenerated table, and if so. Uses that chunk index of the pregenerated table, otherwise chunks the data again until the subchunk is placed in the pregenerated table, and binary data using the number of chunks and the associated index. How to include a step to show the file.

Description

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

(コンピュータプログラムリスト-シーケンスリスト)
以下のコンピュータプログラムリストを本明細書に添付して提出し、参照により援用する。夫々のファイルは参照により援用される。以下のコンピュータプログラムリストは、以下の形式である。<バイト単位のサイズ> <作成日> <ファイル名>。
(Computer program list-Sequence list)
The following computer program list is submitted in attachment to this specification and is incorporated by reference. Each file is referenced by reference. The following computer program list is in the following format. <Size in bytes><Createddate><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 referencing a content unknown file. The present method further relates to a method for compressing content unknown data.

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

業界では、保存及び/又は送信しなければならないデータ量を減らす為に、ファイル参照及びデータ圧縮技術を改善する必要性が存在する。 There is a need in the industry to improve file reference 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 of improving computing technology with an enhanced content agnostic file reference system. This method 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 can further reduce the amount of information or data that must be persisted or transmitted, as it can be generated at access, as opposed to the data being persisted.

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

本開示及びその利点をより完全に理解する為に、ここで、添付の図面と併せて以下の説明を参照する。
同じ参照符号は、図面の幾つかの図を通して同じ部品又はステップを参照する。
本開示の一実施形態のステップを概説するフローチャートである。 本開示の別の実施形態のステップを概説する別のフローチャートである。 本開示の代替実施形態のステップを概説するフローチャートである。
For a more complete understanding of the present disclosure and its advantages, reference is made herein below in conjunction with the accompanying drawings.
The same reference code refers to the same part or step through several figures in the drawing.
It is a flowchart which outlines the step of one Embodiment of this disclosure. It is another flowchart which outlines the step of another embodiment of this disclosure. It is a flowchart which outlines the step of the alternative embodiment of this disclosure.

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

以下の開示では、例示としてバイナリデータの圧縮に関連して本発明を説明しているが、本教示は、「n-ary」データと呼ぶ方が相応しい、あらゆるタイプのデータで同様に機能する。例えば、本方法及びシステムは、量子ビット及びビットでも動作する。 Although the following disclosure illustrates the invention in connection with the compression of binary data by way of example, the teachings work equally well with any type of data that is more appropriate to be 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 flowchart depicted in FIG. Binary data (n i ) to be persisted or transmitted (eg, a data file) is analyzed to determine the bit length (l ( ni )). Using this information, in step 106, the method calculates all sequences of data of the identified length. For example, if the input data is as follows:
01

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

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

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

システムは指定されたインデックス(上記の例では1)に移動し、順列を返す。再び上記の例を用いて、元のバイナリデータの「01」が返される。 The system moves to the specified index (1 in the above example) and returns a sequence. Using the above example again, 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 2022518194000002
The above method is described for illustrative purposes in terms of a binary system (ie, the input data is binary data). The method and system operate similarly for n-ary systems. The above binary system basically operates in the Euclidean plane, but in n-ary data, Hilbert space provides conceptually the same advantage. This method and process can be generalized for n-ary data as follows.
d ^ n = p (i)
(D ^ n) n = p (f)
d = system order n = appropriate length in n-ary units according to the system order p (i) = initial index p (f) = final index
Figure 2022518194000002

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

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

Figure 2022518194000003
An example of this method is disclosed in the Ruby Code Snippet below. The following snippet shows a method as disclosed in FIG.
Figure 2022518194000003

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

Figure 2022518194000004
The following snippet shows the method disclosed in FIG. 2 when the input length (l (ni)) is 16 and the index ( n f ) is 72,629.
Figure 2022518194000004

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

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

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

Figure 2022518194000005
In one embodiment, the table may be stored in a corresponding indexed array as follows:
Figure 2022518194000005

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

入力データを受け取ると、本方法はデータをより小さなサブセットに「チャンク」する。本明細書では、「チャンク」とは、データストリングを取得して大きなデータストリングのサブセットを構成する小さなデータストリングを作成することを意味する。全てのチャンクを合わせると元のデータストリングになる。例えば、入力データが
011001110001
であれば、
Upon receiving the input data, the method "chunks" the data into smaller subsets. As used herein, "chunk" means taking a data string to create a small data string that constitutes a subset of the large data string. All chunks are combined to form the original data string. For example, 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
The individual chunks are then compared against the pre-generated table to see if there is a match. In the above example, if the chunk size is 4 bits, the table has a sequence of all 2-bit chunks, so each chunk cannot be found in the table. Therefore, each chunk is chunked again and becomes 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 a particular chunk is placed in a pre-generated table. At that point, the chunks are associated with each index, preferably a set of tuples indicating the chunk level and the corresponding index is generated. In the above example, the system has 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 finally divided into 6 chunks of 2 bit length. As shown, each chunk is represented by a chunk level (2) and a corresponding index to the pregenerated table.

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

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

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

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

その後、この方法は上記と同じように続く。 After that, this method continues in the same manner as above.

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

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

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

また、上記のように、チャンクは以下のように自らのチャンクレベル及び対応するインデックスに関連付けられる。
{2,1}{2,2}{2,1}{2,3}{1,0}
Also, as mentioned above, chunks are associated with their chunk level and their 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 as the chunk did not require a second chunk.

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

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

この代替実施形態は、図3のフローチャートに示されている。まず、以下のような特定の長さのデータの全ての順列を含む事前生成された表がステップ302で作成される。上述したように、好ましくは、その表は何らかの方法で永続化される。次に、システムは、ステップ304で、スクイーズ対象入力データを受け取る。次にプロセスは、ステップ306及び308で、データの長さが「事前生成された表」に配置される長さになるまで、データをより小さなセグメントにチャンクする。上述したように、このプロセスは、入力データセットが何回チャンクされたかをシステムが知ることができるように、チャンクレベルを維持する。その後、各チャンクはステップ310で事前生成された表に配置される。最後に、チャンク、そのチャンクレベル、及び事前生成された表内の夫々のインデックスが関連付けられ、その結果、ステップ312で、スクイーズされたデータが得られる。 This alternative embodiment is shown in the flowchart of FIG. First, a pre-generated table containing all the sequences of data of a particular length is created in step 302, such as: As mentioned above, preferably the table is persisted in some way. Next, the system receives the squeeze target input data in step 304. The process then chunks the data into smaller segments in steps 306 and 308 until the length of the data is long enough to be placed in the "pre-generated table". As mentioned above, this process maintains the chunk level so that the system knows how many times the input dataset has been chunked. Each chunk is then placed in the pregenerated table in step 310. Finally, the chunks, their chunk levels, and their respective indexes in the pregenerated table are associated, resulting in squeezed data in step 312.

本開示を、特定の実施形態及び一般的に関連する方法の観点から説明してきたが、これらの実施形態及び方法の変更及び順列は、当業者には明らかであろう。従って、例示的な実施形態に関する上記の説明は、本開示を制約するものではない。本開示の精神及び範囲から逸脱することなく、他の変更、置換、及び改変も可能である。

Although the present disclosure has been described in terms of specific embodiments and generally relevant methods, changes and sequence of these embodiments and methods will be apparent to those of skill in the art. Accordingly, the above description of exemplary embodiments does not limit the present disclosure. Other modifications, substitutions, and modifications may be made without departing from the spirit and scope of this disclosure.

Claims (19)

バイナリデータファイルのコンテンツ不可知参照の為のコンピュータ実装方法であって、
入力シードを用いて表を事前生成するステップであって、表は所定の長さのビットの全ての順列を含むステップと、
前記バイナリデータファイルの長さを決定するステップであって、前記長さは、前記バイナリデータファイルのビット数を含むステップと、
前記バイナリデータファイルを部分ストリングにチャンクするステップであって、各部分ストリングは前記バイナリデータファイルの長さよりも小さい長さであるステップと、
前記バイナリデータファイルの各チャンクについて、そのチャンクが前記事前生成された表内にあるかどうかを判断し、そのチャンクが事前生成された表内にある場合には、そのチャンクに前記事前生成された表内のチャンクの位置のインデックスを関連付け、そのチャンクが前記事前生成された表内にない場合には、チャンクされたバイナリデータを更に小さなチャンクに分割するステップと、
チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップと、を含む方法。
A computer implementation method for agnostic references to the contents of binary data files.
A step that pregenerates a table using an input seed, in which the table contains all the sequences of bits of a given length, and
A step of determining the length of the binary data file, wherein the length includes a step including the number of bits of the binary data file and a step.
A step of chunking the binary data file into partial strings, each substring having a length smaller than the length of the binary data file.
For each chunk of the binary data file, it is determined if the chunk is in the pregenerated table, and if the chunk is in the pregenerated table, the chunk is pregenerated. A step of associating an index of the position of chunks in a table and splitting the chunked binary data into smaller chunks if the chunk is not in the pregenerated table.
A method comprising a step of showing the binary data file using the number of chunks and the associated index of all chunks.
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記バイナリデータファイルの代わりに、前記チャンクの数及び全ての関連するインデックスを記憶装置に永続化するステップを含む、請求項1に記載の方法。
A step showing the binary data file using the number of chunks and the associated index of all chunks
The method of claim 1, comprising the step of persisting the number of chunks and all relevant indexes to storage instead of the binary data file.
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップが、
前記データファイルの代わりに前記チャンクの数及び全チャンクの関連するインデックスを送信するステップを含む、請求項1に記載の方法。
A step showing the binary data file using the number of chunks and the associated index of all chunks
The method of claim 1, comprising the step of transmitting the number of chunks and the associated index of all chunks on behalf of the data file.
前記送信するステップは、前記チャンクの数及び全チャンクの関連するインデックスをネットワーク上で送信する、請求項3に記載の方法。 The method of claim 3, wherein the transmitting step transmits the number of the chunks and the associated index of all chunks over the network. 前記送信するステップは、前記チャンク数及び全チャンクの関連するインデックスをバス上で送信する、請求項3に記載の方法。 The method of claim 3, wherein the transmitting step transmits the number of chunks and the associated index of all chunks on the bus. 前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、
各順序付けられたペアがチャンクレベル及び関連するインデックスを示す、順序付けられたペアのタプルを作成するステップを含む、請求項1に記載の方法。
The step of showing the binary data file using the number of chunks and the associated index of all chunks is
The method of claim 1, wherein each ordered pair indicates a chunk level and an associated index, comprising the step of creating a tuple of ordered pairs.
前記チャンクの数及び全チャンクの関連するインデックスを使用して前記バイナリデータファイルを示すステップは、前記チャンクの数及び全チャンクの関連するインデックスを記憶装置上に永続化することを含む、請求項1に記載の方法。 The step of showing the binary data file using the number of chunks and the associated index of all chunks comprises persisting the number of chunks and the associated index of all chunks on the storage device. The method described in. 前記記憶装置はディスクである、請求項7に記載の方法。 The method of claim 7, wherein the storage device is an optical disc. 前記事前生成された表がハッシュ表である、請求項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 partial strings further
The method of claim 1, comprising chunking the binary data into chunks of a predetermined length.
前記所定の長さが2メガバイトである、請求項13に記載の方法。 13. The method of claim 13, wherein the predetermined length is 2 megabytes. 前記所定の長さが2メガバイトよりも小さい、請求項13に記載の方法。 13. The method of claim 13, wherein the predetermined length is less than 2 megabytes. 前記所定の長さが2メガバイトよりも大きい、請求項13に記載の方法。 13. The method of claim 13, wherein the predetermined length is greater than 2 megabytes. 前記バイナリデータファイルを部分ストリングにチャンクすることは、更に、
前記バイナリデータファイルを、同じサイズの2つのチャンクに再帰的に分割することを含む請求項1に記載の方法。
Chunking the binary data file into partial strings further
The method of claim 1, wherein the binary data file is recursively divided into two chunks of the same size.
チャンクの数及び全チャンクの関連するインデックスに基づいてデータを取得する方法であって、
入力シードを使用して表を事前生成するステップであって、前記表は、所定の長さのビットの全ての順列を含み、前記事前生成された表を使用してチャンクの数及び関連するインデックスを生成するステップと、
各チャンクについて、そのチャンクに関連付けられたインデックスで表内にデータを配置するステップと、各チャンクに関連付けられたデータを返すステップと、を含む方法。
A method of retrieving data based on the number of chunks and the associated index of all chunks.
A step of pre-generating a table using an input seed, wherein the table contains all the sequences of bits of a given length, and the number of chunks and related using the pre-generated table. Steps to generate an index and
For each chunk, a method that includes placing data in the table at the index associated with that chunk and returning the data associated with each chunk.
各チャンクに関連するデータを返すステップは、
各チャンクに関連するデータを単一のビットストリームに連結することを含む、請求項18に記載の方法。

The step that returns the data associated with each chunk is
18. The method of claim 18, comprising concatenating the data associated with each chunk into a single bitstream.

JP2021540318A 2019-01-10 2020-01-08 Content agnostic file indexing method and system Pending JP2022518194A (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 (1)

Publication Number Publication Date
JP2022518194A true JP2022518194A (en) 2022-03-14

Family

ID=71520909

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021540318A Pending JP2022518194A (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) JP2022518194A (en)
KR (1) KR20210110875A (en)
AU (1) AU2020205970A1 (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

Family Cites Families (8)

* 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
KR20060106835A (en) * 2003-10-17 2006-10-12 팩바이트 소프트웨어 피티와이 리미티드 Data compression system and method
AU2007290044A1 (en) * 2006-09-01 2008-03-06 Pacbyte Software Pty Limited Method and system for transmitting a data file over a data network
US8533166B1 (en) * 2010-08-20 2013-09-10 Brevity Ventures LLC Methods and systems for encoding/decoding files and transmission thereof
US9639543B2 (en) * 2010-12-28 2017-05-02 Microsoft Technology Licensing, Llc Adaptive index for data deduplication
US11138152B2 (en) * 2017-10-11 2021-10-05 Lognovations Holdings, Llc Method and system for content agnostic file indexing

Also Published As

Publication number Publication date
CA3126012A1 (en) 2020-07-16
EP3908937A1 (en) 2021-11-17
WO2020146448A1 (en) 2020-07-16
KR20210110875A (en) 2021-09-09
EP3908937A4 (en) 2022-09-28
AU2020205970A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
US20220093210A1 (en) System and method for characterizing biological sequence data through a probabilistic data structure
US8554561B2 (en) Efficient indexing of documents with similar content
US9805079B2 (en) Executing constant time relational queries against structured and semi-structured data
JP4238233B2 (en) System and method for sharing storage resources between multiple files
US7447839B2 (en) System for a distributed column chunk data store
US10680645B2 (en) System and method for data storage, transfer, synchronization, and security using codeword probability estimation
US20120089579A1 (en) Compression pipeline for storing data in a storage cloud
WO2021068351A1 (en) Cloud-storage-based data transmission method and apparatus, and computer device
US20120089775A1 (en) Method and apparatus for selecting references to use in data compression
US9740734B2 (en) Group-by processing for data containing singleton groups
US11138152B2 (en) Method and system for content agnostic file indexing
JP6847079B2 (en) Optimal sort key compression and index rebuild
JP6807395B2 (en) Distributed data deduplication in the processor grid
US11366790B2 (en) System and method for random-access manipulation of compacted data files
US20200042502A1 (en) System and method for data storage, transfer, synchronization, and security using recursive encoding
US9639549B2 (en) Hybrid of proximity and identity similarity based deduplication in a data deduplication system
JP2022518194A (en) Content agnostic file indexing method and system
JP7047110B2 (en) Content-independent file indexing methods and systems
US10949088B1 (en) Method or an apparatus for having perfect deduplication, adapted for saving space in a deduplication file system
US8595195B2 (en) Creating a self-contained portable output file
Nakamura et al. Content-defined merkle trees for efficient container delivery
Liu et al. Adaptive CDCLZW algorithm for data compression

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