KR20210110875A - 콘텐츠 애그노스틱 파일 인덱싱을 위한 방법 및 시스템 - Google Patents

콘텐츠 애그노스틱 파일 인덱싱을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20210110875A
KR20210110875A KR1020217025238A KR20217025238A KR20210110875A KR 20210110875 A KR20210110875 A KR 20210110875A KR 1020217025238 A KR1020217025238 A KR 1020217025238A KR 20217025238 A KR20217025238 A KR 20217025238A KR 20210110875 A KR20210110875 A KR 20210110875A
Authority
KR
South Korea
Prior art keywords
chunks
binary data
chunk
data file
data
Prior art date
Application number
KR1020217025238A
Other languages
English (en)
Inventor
크리스토퍼 매켈빈
Original Assignee
로그노베이션스 홀딩스, 엘엘씨
크리스토퍼 매켈빈
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 로그노베이션스 홀딩스, 엘엘씨, 크리스토퍼 매켈빈 filed Critical 로그노베이션스 홀딩스, 엘엘씨
Publication of KR20210110875A publication Critical patent/KR20210110875A/ko

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

바이너리(binary) 데이터 파일의 콘텐츠 애그노스틱(content-agnostic) 참조를 위한 컴퓨터 구현 방법은 특정 길이의 데이터의 모든 순열의 테이블을 미리 생성하는 단계, 바이너리 데이터 파일의 길이를 결정하는 단계 - 길이는 바이너리 데이터 파일의 비트의 수를 포함함 -, 이진 데이터를 더 작은 길이의 데이터의 청크로 청크하는 단계, 각각의 청크에 대해, 청크가 미리 생성된 테이블에 있는지 결정하고, 만약 그렇다면, 미리 생성된 테이블에서 이러한 청크 인덱스를 사용하고, 그렇지 않다면, 서브청크가 미리 생성된 테이블에 위치될 때까지 데이터를 다시 청크하는 단계, 및 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 연관된 인덱스를 사용하는 단계를 포함한다.

Description

콘텐츠 애그노스틱 파일 인덱싱을 위한 방법 및 시스템
관련 출원에 대한 교차 참조
본 출원은, 2017년 10월 11일자로 출원된 발명의 명칭이 "Method and System for Content Agnostic File Indexing"인 출원 번호 제15/730,043호의 일부계속(continuation-in-part)출원이며, 그 내용은 모든 목적을 위해 참조로 본원에 완전히 포함된다.
컴퓨터 프로그램 목록 - 시퀀스 목록
다음 컴퓨터 프로그램 목록이 본원과 함께 제출되며 참조로 통합된다. 각각의 파일은 참조로 포함된다. 아래의 컴퓨터 프로그램 목록은 <사이즈(바이트)> <만든 날짜> <파일 이름> 형식이다:
3864 May 16 2018 squeeze-master-README-md.txt*
83675 May 16 2018 squeeze-master-SqueezeReport-ipynb.txt*
4293 May 16 2018 squeeze-master-demo_app-py.txt*
98 May 16 2018 squeeze-master-gitignore.txt*
1383 May 16 2018 squeeze-master-requirements.txt*
2490 May 16 2018 squeeze-master-rpc_server-py.txt*
239 May 16 2018 squeeze-master-scripts-buildprotos.txt*
942 May 16 2018 squeeze-master-scripts-file_test-py.txt*
1391 May 16 2018 squeeze-master-scripts-generate_key-py.txt*
711 May 16 2018 squeeze-master-scripts-generate_keyset-py.txt*
629 May 16 2018 squeeze-master-scripts-keys_firom_folder-py.txt*
377 May 16 2018 squeeze-master-scripts-lzw_test-py.txt*
107 May 16 2018 squeeze-master-scripts-runserver.txt*
3928 May 16 2018 squeeze-master-scripts-squeeze-bytes-report-py.txt*
63 May 16 2018 squeeze-master-scripts-squeeze_file-py.txt*
1060 May 16 2018 squeeze-master-scripts-squeeze_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*
1799 May 16 2018 squeeze-master-scripts-test_rpc-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*
65 May 16 2018 squeeze-master-scripts-unsqueeze_file-py.txt*
80 May 16 2018 squeeze-master-setup-py.txt*
10657 May 16 2018 squeeze-master-squeeze- _ init _ -py.txt*
2783 May 16 2018 squeeze-master-squeeze-bitstring-py.txt*
9191 May 16 2018 squeeze-master-squeeze-keys-py.txt*
613 May 16 2018 squeeze-master-squeeze-performance-csv.txt*
22445 May 162018 squeeze-master-squeeze-squeeze_pb2-py.txt*
2232 May 16 2018 squeeze-master-squeeze-squeeze_pb2_grpc-py.txt*
3366 May 16 2018 squeeze-master-squeeze-proto.txt*
875 May 16 2018 squeeze-master-templates-layout-html.txt*
816 May 16 2018 squeeze-master-templates-upload_form-html.txt*
1513 May 16 2018 squeeze-master-templates-uploaded_file-html.txt*
200 May 16 2018 squeezerpc-master-Makefile.txt*
1131 May 16 2018 squeezerpc-master-README-md.txt*
7 May 16 2018 squeezerpc-master-gitignore.txt*
8995 May 16 2018 squeezerpc-master-main-go.txt*
21292 May 16 2018 squeezerpc-master-squeeze-squeeze-pb-go.txt*
3366 May 16 2018 squeezerpc-master-squeeze-proto.txt*
본 개시내용은 콘텐츠 애그노스틱 파일 참조(content agnostic file referencing)를 위한 방법에 관한 것이다. 방법은 또한 콘텐츠 애그노스틱 데이터 압축을 위한 방법에 관한 것일 수 있다.
파일 참조 기술은 일반적으로, 파일 참조 시스템에서 데이터를 효율적으로 인덱싱하기 위해 저장되는 데이터의 종류에 대한 지식을 요구한다. 유사하게, 논의되는 데이터에 대한 지식은 일반적으로 전송, 저장 등을 위한 데이터 사이즈를 감소시키기 위해 개선된 압축 접근 방식을 생성하는 데 사용된다.
본 산업분야에서는, 저장되고/되거나 전송되어야 하는 데이터의 양을 감소시키기 위해 파일 참조 기술 및 데이터 압축 기술을 개선할 필요가 있다.
일 실시형태에 따르면, 본 개시내용은 향상된 콘텐츠 애그노스틱 파일 참조 시스템으로 컴퓨팅 기술을 개선하기 위한 방법을 제공한다. 이 방법은 컴퓨터 자체의 작동을 개선한다.
개시된 방법은 몇 가지 중요한 장점을 갖는다. 예를 들어, 개시된 방법은 모든 콘텐츠 유형의 파일 참조를 허용한다.
개시된 방법은, 데이터가 지속되는 것과는 대조적으로 액세스 시간에 생성될 수 있기 때문에 지속되거나 전송되어야 하는 정보 또는 데이터의 양의 상당한 감소를 추가로 허용한다.
본 개시내용의 다양한 실시형태는 이러한 이점을 전혀 갖지 않거나, 이의 일부 또는 전부를 가질 수 있다. 본 개시내용의 다른 기술적 장점은 또한, 당업자에게 용이하게 명백할 수 있다.
본 개시내용 및 이의 장점에 대한 보다 완전한 이해를 위해, 이제 수반된 도면과 함께 취해진 다음 설명을 참조한다.
도 1은 본 개시내용의 일 실시형태의 단계들을 개략적으로 나타내는 흐름도이다.
도 2는 본 개시내용의 다른 실시형태의 단계들을 개략적으로 나타내는 다른 흐름도이다.
도 3은 본 개시내용의 대안적인 실시형태의 단계들을 개략적으로 나타내는 흐름도이다.
유사한 참조 번호는 도면의 여러 도에 걸쳐 유사한 부분 또는 단계를 가리킨다.
본 개시내용은 데이터의 콘텐츠 애크노스틱 인덱싱을 위한 방법에 관한 것이다. 이 방법은, 예를 들어, 파일 참조 시스템 또는 압축 시스템을 포함하여, 다양한 컴퓨터 특이적 필요성(computer-specific need)을 위해서 사용될 수 있다.
이하의 개시내용은 예시로서 바이너리(binary) 데이터의 압축과 관련하여 본 발명을 설명하지만, 본 교시는 또한 "n-ary" 데이터로 더 잘 지칭되는 임의의 유형의 데이터와 함께 작동된다. 예를 들어, 방법 및 시스템은 또한 큐비트(qubit) 및 비트로 작동된다. 본 발명의 일 실시형태는 도 1에 도시된 흐름도에 설명된 바와 같은 방법을 포함한다. 지속되거나 전송될 바이너리 데이터(ni)(예컨대, 데이터 파일)는 비트 단위의 길이(l(ni))를 결정하기 위해 분석된다. 이 정보를 사용하여, 단계 106에서, 방법은 식별된 길이의 데이터의 모든 순열을 계산한다. 예를 들어, 입력 데이터가 다음과 같은 경우:
01
입력 데이터는 2비트 길이이다. 단계 106에서, 2비트의 다음과 같은 모든 순열이 생성됩니다:
{00} {01} {10} {11}
단계 108에서, 방법은 생성된 순열에서 입력 바이너리 데이터 파일의 인덱스(nf)를 결정한다. 위의 실시예를 사용하면, 리턴(return)되는 인덱스(nf)는 "1"이 될 것이다. 마지막으로, 시스템은, 입력 바이너리 데이터(즉, "01")를 저장하거나 전송하는 대신, 길이(2)와 인덱스(1)를 저장한다.
원래의 입력 데이터를 디코딩할 필요가 있는 경우(예를 들어, 디스크로부터 원래의 바이너리 데이터를 취출(retrieve)하는 요청, 또는 네트워크를 통해 전송된 데이터의 수신), 방법은 입력으로서 길이(l(ni)) 및 인덱스(nf)만을 필요로 한다. 위의 실시예를 사용하면, 제공되는 입력은 길이(2) 및 인덱스(1)일 것이다. 도 2에 도시된 바와 같이, 시스템은 입력된 길이의 모든 순열을 계산한다. 위와 같이, 이것은 다음 순열을 생성할 것이다.
{00} {01} {10} {11}
다음으로, 시스템은 제공된 인덱스(위의 실시예에서 1)로 이동되고, 순열을 리턴할 것이다. 다시, 위의 실시예를 사용하면, 이것은 원래의 바이너리 데이터 "01"을 리턴할 것이다.
위의 방법은, 예시의 목적을 위해서, 바이너리 시스템(즉, 입력 데이터가 바이너리 데이터임)의 관점에서 설명되었다. 방법 및 시스템은 n-ary 시스템에 대해 유사하게 작동된다. 위에서 설명된 바이너리 시스템은 본질적으로 유클리드 평면에서 작동되지만, n-ary 데이터를 사용하면 힐베르트(Hilbert) 공간이 개념적으로 동일한 장점을 제공한다. 방법 및 프로세스는 아래와 같이 n-ary 데이터에 대해 일반화될 수 있다.
d^n = p(i)
(d^n)n = p(f)
d = 시스템의 차수
n = 시스템의 차수에 대한 적절한 n-ary 단위의 길이
p(i) = 초기 인덱스
p(f) = 최종 인덱스
Figure pct00001
동일한 입력 파일을 구비한 두 개의 대체가능한 오더드 시스템(alternative ordered system)을 고려하면, 더 높은 차수를 가진 시스템은 더 낮은 오더드 시스템을 구비하는 대안에 비해 더 높은 n-ary 밀도를 가질 것이라는 점이 주의되어야 한다.
이 방법의 실시예는 다음 루비(Ruby) 코드 스니펫(snippet)에 개시된다. 아래 스니펫은 도 1에 개시된 바와 같은 방법을 데모(demo)한다.
Figure pct00002
Figure pct00003
아래 스니펫은 16의 입력 길이(l(ni))와 72,629의 인덱스(nf)를 사용하여 도 2에 개시된 방법을 데모한다.
Figure pct00004
Figure pct00005
바람직한 실시형태에서, 입력 바이트 스트링은 입력 바이트 스트링의 표현에 대응되는 비트 스트링으로 변환된다. 이러한 비트 스트링은 다음으로 본원에 설명된 방법을 통해 처리되는 것이다.
대안적인 실시형태에서, 데이터의 길이에 기반하여 테이블을 생성하는 대신에, 테이블은 특정 길이의 데이터의 모든 순열로 미리 생성될 수 있다. 이러한 미리 생성된 테이블은, 비휘발성 또는 휘발성 메모리와 같은, 메모리에 지속될 수 있다. 위의 실시예를 사용하면, 미리 결정된 길이가 2비트인 경우, 미리 생성된 테이블은 다음과 같은 2비트 데이터의 모든 순열을 포함한다:
{00} {01} {10} {11}
일 실시형태에서, 이러한 테이블은 다음과 같이 대응되는 인덱스를 갖는 어레이에 저장될 수 있다:
Figure pct00006
이러한 미리 생성된 테이블은 디스크 상에, RAM에, 또는 다른 방법으로 저장될 수 있다.
바람직하게는, 이러한 미리 생성된 테이블은 파일 사이즈를 감소시키는(또는 파일을 스퀴즈(squeeze)하는) 컴퓨팅 시스템뿐만 아니라 감소된 파일을 확장하는(또는 데이터를 언스퀴즈(unsqueeze)하는) 컴퓨팅 시스템과 함께 저장된다.
입력 데이터를 수신하면, 방법은 데이터를 더 작은 데이터 서브세트로 "청크(chunk)"한다. 본원에서 사용되는 문맥에서, "청크"는, 데이터 스트링을 취하고, 더 큰 데이터 스트링의 서브세트를 포함하는 더 작은 데이터 스트링을 생성하는 것을 의미한다. 모든 청크는 함께 원래의 데이터 스트링을 형성할 것이다. 실시예를 들어, 입력 데이터가 다음과 같은 경우:
011001110001
이것은 다음과 같은 4비트 청크로 청크될 수 있다.
0110 0111 0001
다음으로, 각각의 개별 청크는, 미리 생성된 테이블에 매칭이 있는지 확인하기 위해서 미리 생성된 테이블과 비교될 것이다. 위의 실시예를 사용하면, 4비트의 청크 사이즈를 갖는 각각의 청크는, 테이블이 모두 2비트 청크를 위한 순열을 갖고 있으므로, 테이블에서 찾아질 수 없을 것이다. 따라서, 각각의 청크는 다시 청크되며, 다음으로 귀결된다:
01 10 01 11 00 01
이 방법은 미리 생성된 테이블에서 특정 청크가 위치되는 지점까지 각각의 청크에 대해 계속될 것이다. 이 지점에서, 청크는 각각의 인덱스와 연관될 것이고, 바람직하게는 청크 레벨 및 대응되는 인덱스를 나타내는 일련의 튜플(tuple)이 생성될 것이다. 위의 실시예에서, 시스템은 두 번 청크되고, 따라서 인덱스 연관(index association)은 다음과 같을 것이다:
{2, 1} {2, 2} {2, 1} {2, 3} {2, 0} {2, 1}
본 실시예에서, 원래의 입력 데이터 "011001110001"은 결국 각각 2비트 길이의 6개의 청크로 분할되었다. 보여지는 바와 같이, 각각의 청크는 청크 레벨(2) 및 미리 생성된 테이블 안에서 대응되는 인덱스로 표시된다.
데이터는 다양한 방법으로 청크될 수 있다. 예를 들어, 데이터는 위의 실시예에서와 같이 미리 결정된 사이즈에 기반하여 청크될 수 있다(여기서 사전 결정된 사이즈는, 예시의 목적을 위해서, 4비트임). 대안적으로, 입력 데이터는, 각각의 데이터 청크가 미리 생성된 테이블에서 찾아질 수 있을 때까지 2개의 개별 데이터 청크로 재귀적으로 청크될 수 있다. 위와 동일한 입력 데이터를 사용하면, 데이터를 분할함으로써 데이터를 청크하는 방법은 다음과 같은 제1 레벨 청크로 귀결될 것이다:
011001 110001
여기서, 데이터 세트는 미리 생성된 테이블에서 찾아지지 않고, 따라서 이들은 다시 청크된다.
011 001 110 001
다시, 청크된 데이터는 미리 생성된 테이블에서 찾아지지 않고, 따라서 이는 다시 청크되어야 한다.
00 1 00 1 11 0 00 1
특히, 일부 세그먼트는 미리 생성된 테이블 사이즈보다 더 작은 데이터로 청크된다(즉, 세그먼트 "1", "1", "0" 및 "1"). 이러한 세그먼트는 이들을 미리 생성된 테이블과 비교하기 위해 패드(pad)될 수 있다. 일관성이 유지되는 한, 빅 엔디안(big endian) 또는 리틀 엔디안(little endian) 바이트 오더를 사용하여 숫자가 저장될 수 있다. 예를 들어, 빅 엔디안 바이트 오더를 사용하면, 위의 청크된 데이터는 다음과 같이 표시될 것이다:
00 10 00 10 11 00 00 10
그러면, 방법은 위에서와 같이 계속될 것이다.
동일한 데이터 청크 레벨에서 모든 데이터 청크가 미리 생성된 테이블에서 찾아지는 것이 요구되지 않는다. 예를 들어, 2비트 조합에 대한 위의 미리 생성된 테이블을 사용하면, 입력 데이터가 다음과 같은 경우:
0110011100
데이터는, 이를 4비트 시퀀스로 분할함으로써 위와 같이 원래대로 청크될 수 있다.
0110 0111 00
위와 같이, 처음 두 개의 4비트 시퀀스(즉, "0110" 및 "0111")는 미리 생성된 테이블에 위치되기 위해 더 작은 청크로 다시 청크되어야 하며, 다음 청크로 귀결된다:
01 10 01 11 00
그리고 위와 같이, 청크는 다음과 같이 청크 레벨 및 대응되는 인덱스와 연관될 것이다.
{2, 1} {2, 2} {2, 1} {2, 3} {1, 0}
위의 마지막 튜플은, 이 청크가 청크의 제2차 라운드를 요구하지 않았기 때문에, 1의 청크 레벨을 나타낸다는 점에 주의한다.
일단 입력 데이터가 일련의 청크 레벨 및 인덱스로 감소되면, 이러한 일련의 청크 레벨 및 인덱스는 원래의 데이터를 식별하기 위해서 사용된다. 연관은 일련의 튜플로서, 별개의 비트 문자로서, 또는 다른 방법으로 저장될 수 있다.
일련의 청크 레벨 및 인덱스에 기반하여 데이터를 재생성(또는 언스퀴즈)하기 위해서, 프로세스는 역으로 동작된다. 다시, 시스템은 동일한 미리 생성된 테이블을 가져야 한다. 청크 레벨 및 인덱스의 각각의 튜플에 대해, 시스템은 스퀴즈된 청크를 언팩(unpack)하고 이를 이의 원래의 데이터로 리턴하기 위해 미리 생성된 테이블을 컨설트(consult)한다.
이러한 대안적인 실시형태는 도 3의 흐름도에 도시된다. 먼저, 특정 길이의 데이터의 모든 순열을 포함하는 미리 생성된 테이블이 단계 302에서 생성된다. 위에서 언급된 바와 같이, 바람직하게는, 이러한 테이블은 어떤 방식으로 지속된다. 다음으로, 시스템은 단계 304에서 스퀴즈될 입력 데이터를 수신한다. 다음으로, 프로세스는, 데이터 길이가 단계 306 및 단계 308에서 미리 생성된 테이블에 위치될 수 있는 길이가 될 때까지 데이터를 더 작은 세그먼트로 청크한다. 위에서 언급된 바와 같이, 프로세스는, 시스템이 입력 데이터 세트가 청크된 횟수를 알도록 청크 레벨을 유지한다. 각각의 청크는 단계 310에서 미리 생성된 테이블에 위치된다. 마지막으로, 청크, 청크 레벨 및 미리 생성된 테이블의 각각의 인덱스가 연관되며, 단계 312에서 스퀴즈된 데이터로 귀결된다.
본 개시내용이 특정 실시형태 및 일반적으로 연관된 방법의 관점에서 설명되었지만, 이러한 실시형태 및 방법의 변경예 및 변형예는 당업자에게 명백할 것이다. 따라서, 예시적인 실시형태에 대한 위의 설명은 본 개시내용을 제약하지 않는다. 본 개시내용의 사상 및 범위를 벗어나지 않으면서 다른 변형물, 대체물, 및 변경물이 또한 가능하다.

Claims (19)

  1. 바이너리(binary) 데이터 파일의 콘텐츠 애그노스틱(content-agnostic) 참조를 위한 컴퓨터 구현 방법에 있어서,
    입력 시드(seed)를 사용하여 테이블을 미리 생성하는 단계 - 상기 테이블은 미리 결정된 길이의 비트의 모든 순열을 포함함 -;
    상기 바이너리 데이터 파일의 길이를 결정하는 단계 - 상기 길이는 상기 바이너리 데이터 파일의 비트의 수를 포함함 -;
    상기 바이너리 데이터 파일을 서브스트링으로 청크(chunk)하는 단계 - 각각의 서브스트링은 상기 바이너리 데이터 파일의 길이보다 더 작은 길이를 가짐 -;
    상기 바이너리 데이터 파일의 각각의 청크에 대해서, 상기 청크가 상기 미리 생성된 테이블에 있는지 결정하는 단계 - 상기 청크가 상기 미리 생성된 테이블에 있는 경우, 상기 청크를 상기 미리 생성된 테이블에서 상기 청크의 위치의 인덱스와 연관시키고, 상기 청크가 상기 미리 생성된 테이블에 없는 경우, 상기 청크된 바이너리 데이터를 더 작은 청크로 더 청크함 -; 및
    상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계는,
    상기 바이너리 데이터 파일 대신 청크의 수 및 모든 연관된 인덱스를 기억 장치에 지속시키는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계는, 상기 데이터 파일 대신 청크의 수 및 모든 청크의 연관된 인덱스를 전송하는 단계를 포함하는, 방법.
  4. 제3항에 있어서,
    전송하는 단계는 네트워크 상에서 청크의 수 및 모든 청크의 연관된 인덱스를 전송하는, 방법.
  5. 제3항에 있어서,
    전송하는 단계는 버스(bus) 상에서 청크의 수 및 모든 청크의 연관된 인덱스를 전송하는, 방법.
  6. 제1항에 있어서,
    상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계는, 오더드(ordered) 쌍의 튜플을 생성하는 단계 - 각각의 오더드 쌍은 청크 레벨 및 연관된 인덱스를 나타냄 -를 포함하는, 방법.
  7. 제1항에 있어서,
    상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계는 기억 장치에 청크의 수 및 모든 청크의 연관된 인덱스를 지속시키는 단계를 포함하는, 방법.
  8. 제7항에 있어서,
    상기 기억 장치는 디스크인, 방법.
  9. 제1항에 있어서,
    상기 미리 생성된 테이블은 해시(hash) 테이블인, 방법.
  10. 제1항에 있어서,
    상기 미리 생성된 테이블은 어레이(array)인, 방법.
  11. 제1항에 있어서,
    상기 미리 생성된 테이블은 휘발성 메모리에서 지속되는, 방법.
  12. 제1항에 있어서,
    상기 미리 생성된 테이블은 비휘발성 메모리에서 지속되는, 방법.
  13. 제1항에 있어서,
    상기 바이너리 데이터 파일을 서브스트링으로 청크하는 단계는, 상기 바이너리 데이터를 미리 결정된 길이의 청크로 청크하는 단계를 더 포함하는, 방법.
  14. 제13항에 있어서,
    상기 미리 결정된 길이는 2 메가바이트인, 방법.
  15. 제13항에 있어서,
    상기 미리 결정된 길이는 2 메가바이트보다 더 작은, 방법.
  16. 제13항에 있어서,
    상기 미리 결정된 길이는 2 메가바이트보다 더 큰, 방법.
  17. 제1항에 있어서,
    상기 바이너리 데이터 파일을 서브스트링으로 청크하는 단계는, 상기 바이너리 데이터 파일을 동일한 사이즈의 2개의 청크로 재귀적으로 분할하는 단계를 포함하는, 방법.
  18. 청크의 수 및 모든 청크의 연관된 인덱스에 기반하여 데이터를 취출(retrieve)하는 방법에 있어서,
    입력 시드를 사용하여 테이블을 미리 생성하는 단계 - 상기 테이블은 미리 결정된 길이의 비트의 모든 순열을 포함하며, 상기 미리 생성된 테이블은 청크의 수 및 연관된 인덱스를 생성하기 위해서 사용되었음 -;
    각각의 청크에 대해, 상기 청크와 연관된 인덱스에서 상기 테이블에 데이터를 위치시키는 단계; 및 각각의 청크와 연관련된 데이터를 리턴(return)하는 단계를 포함하는, 방법.
  19. 제18항에 있어서,
    각각의 청크와 연관된 데이터를 리턴하는 단계는, 각각의 청크와 연관된 데이터를 단일 비트스트림으로 연결하는 단계를 포함하는, 방법.
KR1020217025238A 2019-01-10 2020-01-08 콘텐츠 애그노스틱 파일 인덱싱을 위한 방법 및 시스템 KR20210110875A (ko)

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
KR20210110875A true KR20210110875A (ko) 2021-09-09

Family

ID=71520909

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217025238A KR20210110875A (ko) 2019-01-10 2020-01-08 콘텐츠 애그노스틱 파일 인덱싱을 위한 방법 및 시스템

Country Status (6)

Country Link
EP (1) EP3908937A4 (ko)
JP (1) JP2022518194A (ko)
KR (1) KR20210110875A (ko)
AU (1) AU2020205970A1 (ko)
CA (1) CA3126012A1 (ko)
WO (1) WO2020146448A1 (ko)

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
EP1676368A4 (en) * 2003-10-17 2008-10-08 Pacbyte Software Pty Ltd DATA COMPRESSION SYSTEM AND METHOD
EP2153527A4 (en) * 2006-09-01 2010-09-08 Pacbyte Software Pty Ltd METHOD AND SYSTEM FOR SENDING A DATA FILE VIA 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
WO2020146448A1 (en) 2020-07-16
CA3126012A1 (en) 2020-07-16
EP3908937A1 (en) 2021-11-17
JP2022518194A (ja) 2022-03-14
EP3908937A4 (en) 2022-09-28
AU2020205970A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
Chambi et al. Better bitmap performance with roaring bitmaps
US8175875B1 (en) Efficient indexing of documents with similar content
US11138152B2 (en) Method and system for content agnostic file indexing
JP4238233B2 (ja) 複数のファイル間で記憶資源を共有するシステムおよび方法
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
US20120089579A1 (en) Compression pipeline for storing data in a storage cloud
KR20130062889A (ko) 데이터 압축 방법 및 시스템
US20180024746A1 (en) Methods of encoding and storing multiple versions of data, method of decoding encoded multiple versions of data and distributed storage system
AU2014353667A1 (en) A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure
US11366790B2 (en) System and method for random-access manipulation of compacted data files
US20200212932A1 (en) Reducing storage of blockchain metadata via dictionary-style compression
KR20210110875A (ko) 콘텐츠 애그노스틱 파일 인덱싱을 위한 방법 및 시스템
Lou et al. Data deduplication with random substitutions
CN112416879B (zh) 一种基于ntfs文件系统的块级数据去重方法
JP7047110B2 (ja) コンテンツ非依存のファイルインデックス化の方法及びシステム
Dong et al. Content-aware partial compression for big textual data analysis acceleration
CN114461768A (zh) 一种基于同态加密的多关键词文件加密检索方法及系统
JP6291435B2 (ja) プログラムおよびクラスタシステム
Slechta et al. Optimizing query execution for variable-aligned length compression of bitmap indices
US20240168929A1 (en) Optimizing storage of data in row-oriented data storages
Vaddeman et al. Data formats
Нікітін et al. Modification of hashing algorithm to increase rate of operations in nosql databases
Nikitin et al. Modification of hashing algorithm to increase rate of operations in NOSQL databases
Hoobin et al. Fast and efficient compression of high-throughput sequencing reads