KR20210110875A - 콘텐츠 애그노스틱 파일 인덱싱을 위한 방법 및 시스템 - Google Patents
콘텐츠 애그노스틱 파일 인덱싱을 위한 방법 및 시스템 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6052—Synchronisation 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은 본 개시내용의 대안적인 실시형태의 단계들을 개략적으로 나타내는 흐름도이다.
유사한 참조 번호는 도면의 여러 도에 걸쳐 유사한 부분 또는 단계를 가리킨다.
도 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) = 최종 인덱스
동일한 입력 파일을 구비한 두 개의 대체가능한 오더드 시스템(alternative ordered system)을 고려하면, 더 높은 차수를 가진 시스템은 더 낮은 오더드 시스템을 구비하는 대안에 비해 더 높은 n-ary 밀도를 가질 것이라는 점이 주의되어야 한다.
이 방법의 실시예는 다음 루비(Ruby) 코드 스니펫(snippet)에 개시된다. 아래 스니펫은 도 1에 개시된 바와 같은 방법을 데모(demo)한다.
아래 스니펫은 16의 입력 길이(l(ni))와 72,629의 인덱스(nf)를 사용하여 도 2에 개시된 방법을 데모한다.
바람직한 실시형태에서, 입력 바이트 스트링은 입력 바이트 스트링의 표현에 대응되는 비트 스트링으로 변환된다. 이러한 비트 스트링은 다음으로 본원에 설명된 방법을 통해 처리되는 것이다.
대안적인 실시형태에서, 데이터의 길이에 기반하여 테이블을 생성하는 대신에, 테이블은 특정 길이의 데이터의 모든 순열로 미리 생성될 수 있다. 이러한 미리 생성된 테이블은, 비휘발성 또는 휘발성 메모리와 같은, 메모리에 지속될 수 있다. 위의 실시예를 사용하면, 미리 결정된 길이가 2비트인 경우, 미리 생성된 테이블은 다음과 같은 2비트 데이터의 모든 순열을 포함한다:
{00} {01} {10} {11}
일 실시형태에서, 이러한 테이블은 다음과 같이 대응되는 인덱스를 갖는 어레이에 저장될 수 있다:
이러한 미리 생성된 테이블은 디스크 상에, 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)
- 바이너리(binary) 데이터 파일의 콘텐츠 애그노스틱(content-agnostic) 참조를 위한 컴퓨터 구현 방법에 있어서,
입력 시드(seed)를 사용하여 테이블을 미리 생성하는 단계 - 상기 테이블은 미리 결정된 길이의 비트의 모든 순열을 포함함 -;
상기 바이너리 데이터 파일의 길이를 결정하는 단계 - 상기 길이는 상기 바이너리 데이터 파일의 비트의 수를 포함함 -;
상기 바이너리 데이터 파일을 서브스트링으로 청크(chunk)하는 단계 - 각각의 서브스트링은 상기 바이너리 데이터 파일의 길이보다 더 작은 길이를 가짐 -;
상기 바이너리 데이터 파일의 각각의 청크에 대해서, 상기 청크가 상기 미리 생성된 테이블에 있는지 결정하는 단계 - 상기 청크가 상기 미리 생성된 테이블에 있는 경우, 상기 청크를 상기 미리 생성된 테이블에서 상기 청크의 위치의 인덱스와 연관시키고, 상기 청크가 상기 미리 생성된 테이블에 없는 경우, 상기 청크된 바이너리 데이터를 더 작은 청크로 더 청크함 -; 및
상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계는,
상기 바이너리 데이터 파일 대신 청크의 수 및 모든 연관된 인덱스를 기억 장치에 지속시키는 단계를 포함하는, 방법. - 제1항에 있어서,
상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계는, 상기 데이터 파일 대신 청크의 수 및 모든 청크의 연관된 인덱스를 전송하는 단계를 포함하는, 방법. - 제3항에 있어서,
전송하는 단계는 네트워크 상에서 청크의 수 및 모든 청크의 연관된 인덱스를 전송하는, 방법. - 제3항에 있어서,
전송하는 단계는 버스(bus) 상에서 청크의 수 및 모든 청크의 연관된 인덱스를 전송하는, 방법. - 제1항에 있어서,
상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계는, 오더드(ordered) 쌍의 튜플을 생성하는 단계 - 각각의 오더드 쌍은 청크 레벨 및 연관된 인덱스를 나타냄 -를 포함하는, 방법. - 제1항에 있어서,
상기 바이너리 데이터 파일을 나타내기 위해 청크의 수 및 모든 청크의 연관된 인덱스를 사용하는 단계는 기억 장치에 청크의 수 및 모든 청크의 연관된 인덱스를 지속시키는 단계를 포함하는, 방법. - 제7항에 있어서,
상기 기억 장치는 디스크인, 방법. - 제1항에 있어서,
상기 미리 생성된 테이블은 해시(hash) 테이블인, 방법. - 제1항에 있어서,
상기 미리 생성된 테이블은 어레이(array)인, 방법. - 제1항에 있어서,
상기 미리 생성된 테이블은 휘발성 메모리에서 지속되는, 방법. - 제1항에 있어서,
상기 미리 생성된 테이블은 비휘발성 메모리에서 지속되는, 방법. - 제1항에 있어서,
상기 바이너리 데이터 파일을 서브스트링으로 청크하는 단계는, 상기 바이너리 데이터를 미리 결정된 길이의 청크로 청크하는 단계를 더 포함하는, 방법. - 제13항에 있어서,
상기 미리 결정된 길이는 2 메가바이트인, 방법. - 제13항에 있어서,
상기 미리 결정된 길이는 2 메가바이트보다 더 작은, 방법. - 제13항에 있어서,
상기 미리 결정된 길이는 2 메가바이트보다 더 큰, 방법. - 제1항에 있어서,
상기 바이너리 데이터 파일을 서브스트링으로 청크하는 단계는, 상기 바이너리 데이터 파일을 동일한 사이즈의 2개의 청크로 재귀적으로 분할하는 단계를 포함하는, 방법. - 청크의 수 및 모든 청크의 연관된 인덱스에 기반하여 데이터를 취출(retrieve)하는 방법에 있어서,
입력 시드를 사용하여 테이블을 미리 생성하는 단계 - 상기 테이블은 미리 결정된 길이의 비트의 모든 순열을 포함하며, 상기 미리 생성된 테이블은 청크의 수 및 연관된 인덱스를 생성하기 위해서 사용되었음 -;
각각의 청크에 대해, 상기 청크와 연관된 인덱스에서 상기 테이블에 데이터를 위치시키는 단계; 및 각각의 청크와 연관련된 데이터를 리턴(return)하는 단계를 포함하는, 방법. - 제18항에 있어서,
각각의 청크와 연관된 데이터를 리턴하는 단계는, 각각의 청크와 연관된 데이터를 단일 비트스트림으로 연결하는 단계를 포함하는, 방법.
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)
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)
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 |
-
2020
- 2020-01-08 KR KR1020217025238A patent/KR20210110875A/ko unknown
- 2020-01-08 WO PCT/US2020/012661 patent/WO2020146448A1/en unknown
- 2020-01-08 CA CA3126012A patent/CA3126012A1/en active Pending
- 2020-01-08 EP EP20737931.4A patent/EP3908937A4/en active Pending
- 2020-01-08 JP JP2021540318A patent/JP2022518194A/ja active Pending
- 2020-01-08 AU AU2020205970A patent/AU2020205970A1/en active Pending
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 |