KR102461943B1 - 변경할 수 없는 저장소 내의 데이터베이스 메타데이터 - Google Patents

변경할 수 없는 저장소 내의 데이터베이스 메타데이터 Download PDF

Info

Publication number
KR102461943B1
KR102461943B1 KR1020207015386A KR20207015386A KR102461943B1 KR 102461943 B1 KR102461943 B1 KR 102461943B1 KR 1020207015386 A KR1020207015386 A KR 1020207015386A KR 20207015386 A KR20207015386 A KR 20207015386A KR 102461943 B1 KR102461943 B1 KR 102461943B1
Authority
KR
South Korea
Prior art keywords
metadata
file
table data
files
stored
Prior art date
Application number
KR1020207015386A
Other languages
English (en)
Other versions
KR20200104856A (ko
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
Application filed by 스노우플레이크 인코포레이티드 filed Critical 스노우플레이크 인코포레이티드
Priority to KR1020227037740A priority Critical patent/KR102566416B1/ko
Publication of KR20200104856A publication Critical patent/KR20200104856A/ko
Application granted granted Critical
Publication of KR102461943B1 publication Critical patent/KR102461943B1/ko

Links

Images

Classifications

    • 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
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 시스템을 위한 방법은 데이터베이스에 대한 테이블 데이터를 저장하는 것을 포함하고, 테이블 데이터는 하나 이상의 데이터베이스 테이블의 행 및 열에 정보를 포함한다. 방법은 변경할 수 없는 저장소 상에 메타데이터를 저장하는 것을 포함하며, 메타데이터는 데이터베이스에 대한 테이블 데이터에 대한 정보를 포함한다. 일 실시예에서, 변경 가능한 메타데이터는 새로운 버전의 메타데이터 파일을 생성하기 위해 백그라운드에 주기적으로 통합될 수 있고, 이는 오래된 메타데이터 파일 및 오래된 데이터 파일의 삭제를 허용한다.

Description

변경할 수 없는 저장소 내의 데이터베이스 메타데이터
본 개시는 데이터베이스를 위한 시스템, 방법 및 디바이스에 관한 것이고, 더욱 구체적으로 변경 가능하지 않은(non-mutable) 저장 디바이스를 사용하여 메타데이터를 저장하고 유지하는 것에 관한 것이다.
데이터베이스는 컴퓨팅 애플리케이션(computing applications)에서 데이터 저장 및 액세스를 위해 광범위하게 사용된다. 데이터베이스는 질의를 사용하여 판독되거나, 수정되거나 또는 삭제될 수 있는 데이터를 포함하거나 참조하는 하나 이상의 테이블을 포함할 수 있다. 데이터베이스는 하나 이상의 테이블 내에 작거나 또는 상당히 큰 데이터 세트를 저장할 수 있다. 이 데이터는 조직에서 다양한 사용자에 의해 액세스되거나, 또는 심지어 웹 사이트 또는 애플리케이션 프로그램 인터페이스(application program interface, API)를 통해 공용 사용자에게 서비스하는 데 사용될 수 있다. 컴퓨팅 및 저장소 자원 양자뿐만 아니라, 그의 기본 아키텍처는 바람직한 데이터베이스 성능을 달성하는데 상당한 역할을 할 수 있다.
본 개시의 제한적이지 않고, 완전하지는 않은 실시예가 다음의 도면을 참조로 서술되며, 달리 명시되지 않는 한 유사한 참조 번호는 다양한 도면 전체에 걸쳐 유사한 부분을 지칭한다.
도 1은 본원에 서술된 시스템 및 방법의 예시적인 실시예에 따라 파일에 저장된 데이터를 갖는 테이블 및 연관된 메타데이터를 도시하는 블록도이다.
도 2는 본원에 서술된 시스템 및 방법의 예시적인 실시예에 따라 테이블에 추가한 이후의 도 1의 테이블 및 메타데이터를 도시하는 블록도이다.
도 3은 본원에 서술된 시스템 및 방법의 예시적인 실시예에 따라 테이블에 추가하거나 또는 그로부터 삭제한 이후의 도 2의 테이블 및 메타데이터를 도시하는 블록도이다.
도 4는 본원에 서술된 시스템 및 방법의 예시적인 실시예에 따른 데이터베이스 시스템에 대한 처리 플랫폼을 도시하는 블록도이다.
도 5는 일 실시예에 따른, 데이터베이스 서비스 관리자의 구성요소를 도시하는 블록도이다.
도 6은 본원에 서술된 시스템 및 방법의 예시적인 실시예에 따른, 변경할 수 없는(immutable) 저장소에서 파일에 저장된 데이터를 갖는 테이블 및 연관된 메타데이터 파일을 도시하는 블록도이다.
도 7은 본원에 서술된 시스템 및 방법의 예시적인 실시예에 따라 테이블에 대한 변경 이후의 도 6의 테이블 및 메타데이터를 도시하는 블록도이다.
도 8은 본원에 서술된 시스템 및 방법의 예시적인 실시예에 따른 메타데이터 파일의 통합을 도시하는 블록도이다.
도 9는 일 실시예에 따른 구성 및 메타데이터 관리자의 구성요소를 나타내는 블록도이다.
도 10은 일 실시예에 따른, 데이터베이스 시스템 내의 메타데이터를 관리하는 방법을 도시하는 개략적인 흐름도이다.
도 11은 일 실시예에 따른, 스캔 세트를 컴퓨팅하기 위한 방법을 도시하는 개략적인 흐름도이다.
도 12는 본원에 개시된 프로세스 및 시스템의 적어도 하나의 실시예와 일치하는 예시적인 컴퓨팅 디바이스를 도시하는 블록도이다.
본 개시는 클라우드 저장소 자원과 같이 변경 가능하지 않은 저장소 서비스를 사용하여 변경 가능한 메타데이터를 저장하고 유지하기 위한 시스템, 방법 및 디바이스에 관련된다. 데이터베이스 시스템은 대량의 메타데이터를 저장하고 유지한다. 이 메타데이터는 고객의 데이터베이스 테이블에 저장된 데이터를 서술하지만, 실제로 저장된 테이블 데이터인 것은 아니다. 특히 다수의 고객의 큰 데이터베이스 테이블이 있는 경우, 메타데이터는 매우 커질 수 있다. 현재 데이터베이스 시스템은 대량의 메타데이터를 취급하는데 심각한 제약을 갖는다.
현재 데이터베이스 시스템은 주메모리, 파일 시스템 및 키-값 저장소를 포함하는, 변경 가능한 저장 디바이스 및 서비스에 메타데이터를 저장한다. 이들 디바이스 및 서비스는 메타데이터가 그 자리에서(in-place) 업데이트된 데이터가 되는 것을 허용한다. 데이터 레코드가 변경되면, 이는 새로운 정보로 업데이트될 수 있다. 오래된 정보는 덮어 씌워진다. 이는 메타데이터를 그 자리에서 업데이트함으로써, 데이터베이스가 변경 가능한 메타데이터를 쉽게 유지하는 것을 허용한다.
하지만, 이들 저장 디바이스 및 서비스는 제약을 갖는다. 제약은 적어도 두 개이다. 첫째, 주메모리 및 파일 시스템과 유사한 변경 가능한 저장 디바이스는 저장소 용량에 대해 하드 제한(hard limit)을 갖는다. 메타데이터의 크기가 이들 제한을 초과하는 경우, 그곳에 더욱 많은 메타데이터를 저장하는 것은 불가능하다. 둘째, 키-값 저장소와 유사한 변경 가능한 저장소 서비스는 대량의 메타데이터를 판독할 때 저하되어 수행된다. 데이터를 판독하는 것은 범위 스캔을 사용하여 수행되며, 이는 완료에 긴 시간이 걸린다. 실제로, 범위 스캔은 대규모 전개에서 완료하는 데 몇 분 또는 심지어 1시간이 걸릴 수도 있다.
이들 제약은 기존의 변경할 수 없는 저장 디바이스 및 서비스 상에 대량의 메타데이터를 저장하는 것을 불가능하게 한다. 출원인은 변경할 수 없는(변경 가능하지 않은) 저장소에 메타데이터를 저장하는 것을 포함하는 개선된 메타데이터 저장 및 관리를 위한 시스템 및 방법을 개발하였다. 일 실시예에 따라, 데이터베이스를 저장하거나 또는 관리하기 위한 방법은 데이터베이스에 대한 테이블 데이터를 저장하는 것을 포함한다. 테이블 데이터는 하나 이상의 데이터베이스 테이블의 행 및 열 내의 정보를 포함한다. 방법은 변경할 수 없는 저장소 상에 메타데이터를 저장하는 것을 포함한다. 메타데이터는 데이터베이스에 대한 테이블 데이터에 관한 정보를 포함하지만, 테이블 데이터를 포함할 수 없다.
본원에 사용된, 변경할 수 없거나 또는 변경 가능하지 않은 저장소는 데이터가 그 자리에서 덮어 씌워지거나 또는 업데이트되도록 허가될 수 없거나 또는 허가되지 않은 저장소를 포함한다. 예를 들어, 저장 매체의 셀 또는 영역에 위치된 데이터에 대한 변경은 저장 매체의 상이한, 타임-스탬프된(time-stamped) 셀 또는 영역에 새로운 파일로서 저장될 수 있다. 변경 가능한 저장소는 데이터가 그 자리에서 덮어 씌워지거나 또는 업데이트되는 또는 그러하도록 허가되는 저장소를 포함할 수 있다. 예를 들어, 저장 매체의 주어진 셀 또는 영역에서의 데이터는 저장 매체의 그 셀 또는 영역에 관련된 데이터에 대한 변경이 있을 때 덮어 씌워질 수 있다.
일 실시예에서, 메타데이터는 클라우드에서의 변경 가능하지 않은 저장소 서비스 상에 저장되고 유지된다. 이들 저장소 서비스는 예를 들어, Amazon S3 ®, Microsoft Azure Blob Storage®, 및 Google Cloud Storage®를 포함할 수 있다. 이들 서비스 중 다수는 그 자리에서 데이터를 업데이트하는 것을 허용하지 않는다(즉, 변경 가능하지 않거나 또는 변경할 수 없다). 데이터 파일은 추가되거나 삭제만 될 수 있고, 업데이트될 수는 없다. 일 실시예에서, 이들 서비스 상의 메타데이터를 저장하고 유지하는 것은 메타데이터에서의 모든 변경에 대해, 메타데이터 파일이 저장소 서비스에 추가되는 것을 필요로 한다. 이들 메타데이터 파일은 백그라운드에서 더욱 큰 "압축된(compacted)" 또는 통합된 메타데이터 파일로 주기적으로 통합될 수 있다. 메타데이터 파일의 압축되거나 또는 통합된 버전 대 사전-압축 또는 사전-통합 버전에 대응하는 메타데이터 파일을 나타내기 위해, 메타데이터 파일 버전이 저장될 수 있다. 일 실시예에서, 새로운 버전의 메타데이터 파일을 생성하기 위해 백그라운드에 변경 가능한 메타데이터의 통합은 오래된 메타데이터 파일 및 오래된 데이터 파일의 삭제를 허용할 수 있다.
클라우드 저장소와 같은 변경할 수 없는 저장소를 사용함으로써, 실시예는 저장소 용량이 하드 제한을 갖지 않는 것을 허용한다. 클라우드에서 저장소 서비스를 사용하는 것은 사실상 무제한의 양의 메타데이터를 허용한다. 파일을 프리페치하는 것(prefetching)을 포함하여, 메타데이터 파일이 병렬로 다운로드될 수 있기 때문에, 대량의 메타데이터를 판독하는 것이 상당히 더 빨라질 수 있다. 메타데이터 파일은 또한, 한번보다 더욱 많이 다운로드되지 않도록 로컬 파일 시스템 상에 캐시(cached)될 수 있다. 실제 사용 시나리오 및 시험에서, 출원인은 클라우드에서 저장소 서비스로부터 메타데이터를 판독할 때, 키-값 저장소와 유사한 변경 가능한 저장소로부터 동일한 메타데이터 정보를 판독하는 것에 비해 200배의 성능 개선을 관찰하였다.
본 개시의 실시예와 일치하는 시스템 및 방법의 상세한 서술이 아래에 제공된다. 여러 실시예가 서술되지만, 본 개시가 어느 하나의 실시예로 제한되지 않고, 대신에 많은 대안, 수정 및 등가물을 포함한다는 것이 이해되어야 한다. 덧붙여, 본원에 개시된 실시예의 철저한 이해를 제공하기 위해 다음의 서술에서 다수의 특정한 세부사항이 제시되지만, 일부 실시예는 일부 또는 모든 이들 세부사항 없이 실시될 수 있다. 게다가, 명료함을 위해, 관련 기술분야에 알려진 특정한 기술 재료는 본 개시를 불필요하게 모호하게 하는 것을 피하기 위해 상세히 서술되지 않는다.
도 1 내지 3은 테이블 데이터가 (클라우드 자원과 같은) 변경할 수 없는 저장소에 저장되고 메타데이터가 (로컬 키-값 저장소와 같은) 변경 가능한 저장소에 저장될 때 데이터베이스 시스템의 예시적인 동작을 도시한다. 도 6-8은 테이블 데이터 및 메타데이터 양자가 변경할 수 없는 저장소에 저장될 때 데이터베이스 시스템의 예시적인 동작을 도시한다. 하나의 예시적인 실시예에서, 데이터베이스 테이블에서의 데이터는 클라우드에서 파일에 저장된다. 테이블 및 파일 주위의 메타데이터는 메타데이터 저장소에 저장된다. 메타데이터 저장소는 키-값 저장소일 수 있다. 다른 예시적인 시스템은 메타데이터를 저장하기 위해, 주메모리 저장소 또는 파일 시스템 저장소와 같은 다른 기법을 사용할 수 있다.
도 1은 파일에 저장된 데이터를 갖는 테이블(102) 및 연관된 메타데이터를 도시한다. 테이블(102)은 클라우드 저장소(104)에서 두 개의 물리적인 파일(F1 및 F2)에 저장된 "사용자" 테이블이다. 테이블(102)은 "uid" 열 및 "이름" 열을 포함한다. 파일(F1, F2)은 테이블(102)의 행 및 열에 대한 데이터(예를 들어, 필드 값)를 포함한다. 구체적으로, 파일(F1)은 처음 세 개의 행에 대한 테이블 데이터(즉, uid(1, 2 및 3) 및 이름(Allison, Max 및 Benoit))를 포함하는 한편, 파일(F2)은 마지막 세 개의 행에 대한 테이블 데이터(uid(4, 5 및 6) 및 이름(Neda, Thierry 및 Florian))를 포함한다. 일 실시예에서, 각 파일(F1 및 F2)은 인접한 블록에서 "uid"열에 대한 값 및 개별적인 파일 내의 인접한 블록에서 "이름"열에 대한 값을 갖는 데이터를 열 단위 포맷(column-by-column format)으로 저장한다.
파일 메타데이터는 메타데이터 저장소(106) 내에 저장된다. 파일 메타데이터는 테이블 버전 및 각 테이블 데이터 파일(이 경우 F1 및 F2)에 대한 정보를 포함한다. 메타데이터 저장소(106)는 로컬 파일 시스템, 시스템, 메모리 등과 같은 변경 가능한 저장소(그 위에 기록되거나 또는 그 자리에 기록될 수 있는 저장소)를 포함할 수 있다.
일 실시예에서, 파일 메타데이터는 두 개의 데이터 세트: 테이블 버전 및 파일 정보로 구성된다. 테이블 버전 데이터 세트는 추가된 파일 및 제거된 파일의 목록에 대한 테이블 버전의 매핑을 포함한다. 파일 정보는 예를 들어, 파일에 저장된 모든 행 및 열의 파일 경로, 파일 크기, 파일 키 id 및 요약을 포함하는, 각 파일에 대한 정보로 구성된다. 도시된 상태에서, 테이블 버전(V1)은 파일(F1 및 F2)이 추가되었음을 나타낸다(V1-> 추가됨: F1, F2). 파일 정보는 F1(F1 -> "cloud://path/to/file1", fileSize: 16MB, fileKeyId: 3452, 행 및 열의 요약 등) 및 F2(F2 -> "/path/to/file2", fileSize: 11MB, fileKeyId: 7965, 행 및 열의 요약 등)에 대한 정보를 나타낸다.
테이블의 각 수정은 새로운 파일 및 새로운 파일 메타데이터를 생성한다. 테이블로의 삽입은 새로운 파일을 생성한다. 테이블로부터의 삭제는 파일을 제거하고, 파일에서 모든 행이 삭제되지 않은 경우 테이블에서의 나머지 행을 갖는 새로운 파일을 잠재적으로 추가한다. 업데이트는 파일을 제거하고, 이를 업데이트된 레코드를 포함하는 행을 갖는 새로운 파일로 교체한다.
도 2는 "사용자" 테이블(102)에 레코드를 삽입한 이후, 도 1의 테이블 및 메타데이터를 도시한다. 예시로서, 레코드(7, "Difei")를 테이블 "사용자"에 삽입할 때, 데이터 창고(data warehouse)는 이 레코드를 포함하는 새로운 파일(F3)을 클라우드 저장소(104)에 생성한다. 또한, 메타데이터 저장소(106)에서 파일 메타데이터는 F3에 대한 새로운 테이블 버전(V2) 및 정보를 포함하도록 업데이트된다. 테이블 버전(V2)은 파일(F3)이 추가되었음을 기록한다. 파일 정보는 파일 경로, 계정, 생성된 타임스탬프, 파일 크기 및 파일(F3)에 저장된 모든 행과 열의 요약을 포함한다.
도 3은 "사용자" 테이블(102)에서 레코드를 삭제한 이후의 도 2의 테이블 및 메타데이터를 도시한다. 예를 들어, 테이블 "사용자"로부터 레코드(4, "Neda")를 삭제할 때 창고는 두 개의 레코드((5, "Thierry") 및 (6, "Florian"))만을 포함하는 새로운 파일(F4)을 생성할 수 있다. 파일(F2)은 클라우드로부터 삭제될 수 있다. 파일(F4)은 uid "4"를 갖는 행이 제거된 것을 제외하고 이전 파일(F2)과 동일할 수 있다. 새로운 파일(F4)이 클라우드에 저장되고 파일 메타데이터는 새로운 테이블 버전(V3) 및 파일(F4)에 대한 파일 정보로 업데이트된다. V3은 파일(F4)이 추가되었고 파일(F2)이 삭제되었음을 나타낸다.
테이블로부터 데이터를 검색할 때 데이터 창고는 판독되어야 하는 모든 파일의 스캔 세트를 컴퓨팅할 수 있다. 스캔 세트는 제거된 파일을 제외한 추가된 모든 파일의 집계이다. 스캔 세트는 테이블 버전을 사용하여 컴퓨팅될 수 있다. 현재 시간에 테이블로부터 데이터를 선택할 때, 모든 테이블 버전을 사용하여 가장 최근의 테이블 버전까지 스캔 세트가 컴퓨팅된다. 이른 시간에 테이블로부터 데이터를 선택할 때, 지정된 시간에 최신(current) 테이블 버전까지 모든 테이블 버전을 사용하여 스캔 세트가 컴퓨팅된다. 임의의 주어진 시간 동안 스캔 세트를 컴퓨팅하는 이 기법은 본원에서 "시간 이동(time travel)"으로 지칭될 수 있다. 예를 들어, V3이 구현된 이후, 사용자(예를 들어, 도 4의 사용자 1(404))가 도 3에서의 테이블 "사용자"로부터 데이터를 선택할 때, 데이터베이스 서비스 관리자(예를 들어, 도 4의 데이터베이스 서비스 관리자(404))는 테이블 버전(V1, V2, V3)을 사용하여 스캔 세트를 컴퓨팅한다. 스캔 세트는 삭제된 파일(F2)을 제외한 추가된 모든 파일(F1, F2, F3, F4)의 집계이다. 그러므로, 현재 시간에서의 스캔 세트는 파일(F1, F3, F4)로 구성된다.
다른 예시로서, 이른 시간에 데이터를 선택할 때 테이블 버전(V2)이 가장 최근의 것이면, 스캔 세트는 테이블 버전(V1 및 V2)을 사용하여 컴퓨팅된다. 스캔 세트는 추가된 모든 파일(F1, F2, F3)의 집계이다. 제거된 파일이 있지 않으므로, 스캔 세트는 파일(F1, F2, F3)로 구성된다. 일 실시예에서, 스캔 세트는 파일 정보를 사용하여 제거될(pruned) 수 있다. 예를 들어, 파일의 행 및 열의 요약은 이들 파일의 내용이 질의 결과를 컴퓨팅하는데 필요하지 않을 것이기 때문에, 스캔 세트로부터 파일을 제거하는데 사용될 수 있다.
메타데이터 저장소(106)에 파일 메타데이터를 저장하는 위의 예시적인 방법은 제약을 갖는다. 이는 너무 많은 공간을 소비하며, 느린 성능을 초래한다. 실제로, 수억 개의 파일의 파일 메타데이터는 수 테라바이트의 파일 메타데이터를 초래한다. 이는 스캔 세트를 컴퓨팅하고 스캔 세트를 제거할 때, 느린 성능을 초래한다. 본원에 개시된 실시예는 이들 제약 중 하나 이상을 극복한다. (변경 가능하지 않은) 클라우드 저장소 상에 이 (변경 가능한) 메타데이터를 저장하고 유지하는 것은 데이터베이스 시스템이 사실상 무제한의 저장소 용량을 갖고 메타데이터의 더욱 빠른 검색을 하는 것을 허용한다.
일 실시예에서, 메타데이터는 변경할 수 없는 저장소에서 메타데이터 파일에 저장될 수 있다. 일 실시예에서, 시스템은 데이터베이스 테이블의 모든 수정을 위해 메타데이터 파일을 클라우드 저장소에 기록할 수 있다. 일 실시예에서, 시스템은 스캔 세트를 컴퓨팅하기 위해 메타데이터 파일을 다운로드하고 판독할 수 있다. 메타데이터 파일은 스캔 세트 컴퓨팅을 개선하기 위해 병렬로 다운로드될 수 있다. 일 실시예에서, 시스템은 백그라운드에서 메타데이터 파일을 주기적으로 통합할 수 있다. 일 실시예에서, 프리-페칭, 캐싱, 열 지향 레이아웃(columnar layout) 등을 포함하는 성능 개선이 포함될 수 있다. 또한, 열 지향 레이아웃을 갖는 메타데이터 파일로 암호화 및 무결성 검사를 포함하는 보안 개선이 또한 가능하다.
도 4를 참조하면, 일 실시예에 따른 데이터베이스 서비스를 제공하기 위한 처리 플랫폼(400)을 도시하는 블록도가 도시된다. 처리 플랫폼(400)은 다수의 사용자(404, 406 및 408)에 의해 액세스 가능한 데이터베이스 서비스 관리자(402)를 포함한다. 데이터베이스 서비스 관리자(402)는 본원에서 자원 관리자 또는 전역 서비스로 또한 지칭될 수 있다. 일부 구현에서, 데이터베이스 서비스 관리자(402)는 처리 플랫폼(400)의 데이터 또는 서비스에 대한 액세스를 원하는 임의의 수의 사용자를 지원할 수 있다. 사용자(404-408)는 예를 들어, 데이터 저장 및 검색 질의 및 요청을 제공하는 최종 사용자, 본원에 서술된 시스템 및 방법을 관리하는 시스템 관리자, 데이터베이스와 상호 작용하는 소프트웨어 애플리케이션, 및 데이터베이스 서비스 관리자(402)와 상호 작용하는 다른 구성요소/디바이스를 포함할 수 있다.
데이터베이스 서비스 관리자(402)는 처리 플랫폼(400) 내의 시스템 및 구성요소의 동작을 지원하는 다양한 서비스 및 기능을 제공 할 수 있다. 데이터베이스 서비스 관리자(402)는 데이터 처리 플랫폼(400) 전체에 걸쳐 저장된 데이터와 연관된 저장된 메타데이터에 액세스한다. 데이터베이스 서비스 관리자(402)는 사용자 질의를 최적화하기 위해 메타데이터를 사용할 수 있다. 일부 실시예에서, 메타데이터는 원격 데이터 저장 시스템에 저장된 데이터의 요약뿐만 아니라 로컬 캐시(예를 들어, 실행 플랫폼(412)의 클러스터 중 하나 이상 내의 캐시)로부터 이용 가능한 데이터를 포함한다. 추가적으로, 메타데이터는 원격 데이터 저장 시스템 및 로컬 캐시에서 데이터가 어떻게 구성되는지에 관한 정보를 포함할 수 있다. 메타데이터는 시스템 및 서비스가 저장 디바이스로부터 실제 데이터를 로딩하거나 또는 액세스하지 않으면서 데이터(a piece of data)가 처리되어야 하는지를 결정하는 것을 허용한다.
데이터 처리 플랫폼(400)의 일부로서, 데이터 조작 언어(data manipulation language, DML)를 사용하여 데이터에 변경이 이루어질 때 메타데이터가 수집될 수 있으며, 변경은 임의의 DML 스테이트먼트(statement)에 의해 이루어질 수 있다. 데이터를 조작하는 것의 예시는 데이터를 선택하는 것, 업데이트하는 것, 변경하는 것, 병합하는 것(merging) 및 이를 테이블에 삽입하는 것을 포함할 수 있지만, 이에 제한되지는 않는다. 처리 플랫폼(400)의 일부로서, 파일이 생성될 수 있고 메타데이터는 파일마다 및 열마다 수집될 수 있다. 이 메타데이터의 수집은 데이터 가져오기(data ingestion) 동안 수행될 수 있거나, 또는 메타데이터 수집은 데이터가 가져와지거나 또는 로딩된 이후에 별도의 프로세스로서 수행될 수 있다. 일 구현에서, 메타데이터는 다수의 고유한 값(distinct value); 다수의 널 값(null values); 및 각 파일에 대한 최소값 및 최대 값을 포함할 수 있다. 일 구현에서, 메타데이터는 문자열 길이 정보 및 문자열의 문자 범위를 더 포함할 수 있다.
일 실시예에서, 메타데이터의 적어도 일 부분은 변경할 수 없는 저장소에 저장된다. 예를 들어, 메타데이터는 테이블 데이터와 함께 저장 플랫폼(414)상에 저장될 수 있다. 일 실시예에서, 테이블 데이터에 대해 사용된 것과 동일하거나 또는 별도의 클라우드 저장소 자원이 메타데이터에 대해 할당되고 사용될 수 있다. 일 실시예에서, 메타데이터는 로컬의 변경할 수 없는 저장소에 저장될 수 있다. 일 실시예에서, 변경할 수 없는 저장소에 있는 메타데이터에 대한 정보, 또는 변경할 수 없는 저장소에 저장된 메타데이터 파일에 대한 정보는 변경 가능한 저장소(410)에 저장된다. 메타데이터에 대한 정보는 변경할 수 없는 저장소에 저장된 메타데이터를 위치시키고 액세스하기 위해 참조될 수 있다. 일 실시예에서, 메타데이터 저장소가 변경할 수 없는 저장소에 위치된 메타데이터 파일에 대한 정보를 저장하는데 대신 사용되도록, 메타데이터 저장소를 갖는 시스템이 재구성될 수 있다.
데이터베이스 서비스 관리자(402)는 다양한 데이터 저장 및 데이터 검색 동작을 실행하는 컴퓨팅 자원을 제공하는, 실행 플랫폼(412)과 더 통신한다. 실행 플랫폼(412)은 하나 이상의 컴퓨팅 클러스터를 포함할 수 있다. 실행 플랫폼(412)은 저장 플랫폼(414)의 일부인 하나 이상의 데이터 저장소(416, 418 및 420)와 통신한다. 도 4에는 세 개의 데이터 저장 디바이스(416, 418 및 420)가 도시되었지만, 실행 플랫폼(412)은 임의의 수의 데이터 저장 디바이스와 통신할 수 있다. 일부 실시예에서, 데이터 저장 디바이스(416, 418 및 420)는 하나 이상의 지리적인 위치에 위치된 클라우드 기반 저장 디바이스이다. 예를 들어, 데이터 저장 디바이스(416, 418 및 420)는 공용 클라우드 인프라구조 또는 개인용 클라우드 인프라구조, 또는 임의의 다른 방식의 분산 저장 시스템의 일부일 수 있다. 데이터 저장 디바이스(416, 418, 420)는 하드 디스크 드라이브(HDD), 고체 상태 드라이브(solid state drives, SSD), 저장소 클러스터 또는 임의의 다른 데이터 저장 기법을 포함할 수 있다. 부가적으로, 저장 플랫폼(414)은 (예를 들어, HDFS(Hadoop Distributed File Systems)와 같은) 분산 파일 시스템, 객체 저장 시스템 등을 포함할 수 있다.
일부 실시예에서, 데이터베이스 서비스 관리자(402)와 사용자(404-408) 사이의 통신 링크, 메타데이터 파일(즉, 메타데이터 파일 메타데이터)에 대한 정보를 위한 변경 가능한 저장소(410) 및 실행 플랫폼(412)은 하나 이상의 데이터 통신 네트워크를 통해 구현되며, 사용자 요청이 최적화될 수 있도록 다양한 작업에 할당될 수 있다. 유사하게, 실행 플랫폼(412)과 저장 플랫폼(414)에서의 데이터 저장 디바이스(416-420) 사이의 통신 링크는 하나 이상의 데이터 통신 네트워크를 통해 구현된다. 이들 데이터 통신 네트워크는 임의의 통신 프로토콜 및 임의의 타입의 통신 매체를 이용할 수 있다. 일부 실시예에서, 데이터 통신 네트워크는 서로 결합된 두 개 이상의 데이터 통신 네트워크(또는 서브 네트워크)의 조합이다. 대안적인 실시예에서, 이들 통신 링크는 임의의 타입의 통신 매체 및 임의의 통신 프로토콜을 사용하여 구현된다.
데이터베이스 서비스 관리자(402), 변경 가능한 저장소(410), 실행 플랫폼(412) 및 저장 플랫폼(414)이 도 4에서 개별적인 구성요소로 도시된다. 하지만, 데이터베이스 서비스 관리자(402), 변경 가능한 저장소(410), 실행 플랫폼(412) 및 저장 플랫폼(414)의 각각은 (예를 들어, 다수의 지리적 위치에서 다수의 시스템/플랫폼으로 분산된) 분산 시스템으로서 구현될 수 있거나, 또는 하나 이상의 시스템으로 결합될 수 있다. 부가적으로, 데이터베이스 서비스 관리자(402), 변경 가능한 저장소(410), 실행 플랫폼(412) 및 저장 플랫폼(414)의 각각은 사용자(404-408)로부터 수신된 요청에 대한 변경 및 데이터 처리 플랫폼(400)의 변하는 요구에 의존하여 (서로 독립적으로) 확장되거나 또는 축소될 수 있다. 따라서, 서술된 실시예에서, 데이터 처리 플랫폼(400)은 동적이며, 현재 데이터 처리 요구를 충족시키기 위해 규칙적인 변경을 지원한다.
도 5는 일 실시예에 따른 데이터베이스 서비스 관리자(402)의 구성요소를 도시하는 블록도를 도시한다. 데이터베이스 서비스 관리자(402)는 데이터 저장 디바이스(506)에 결합된 액세스 관리자(502) 및 키 관리자(504)를 포함한다. 액세스 관리자(502)는 본원에 서술된 시스템에 대한 인증 및 허가(authorization) 작업을 처리한다. 키 관리자(504)는 인증 및 허가 작업 동안 사용된 키의 저장 및 인증을 관리한다. 요청 처리 서비스(508)는 수신된 데이터 저장 요청 및 데이터 검색 요청을 관리한다. 관리 콘솔 서비스(510)는 관리자 및 다른 시스템 관리자에 의한 다양한 시스템 및 프로세스에 대한 액세스를 지원한다.
데이터베이스 서비스 관리자(402)는 또한 SQL 컴파일러(512), SQL 최적화기(514) 및 SQL 실행기(516)를 포함한다. SQL 컴파일러(512)는 SQL 질의를 파싱하고(parses) 질의에 대한 실행 코드를 생성한다. SQL 최적화기(514)는 처리되어야 하는 데이터를 기초로 질의를 실행하기 위한 최선의 방법을 결정한다. SQL 실행기(516)는 데이터베이스 서비스 관리자(402)에 의해 수신된 질의에 대한 질의 코드를 실행한다. 질의 스케줄러 및 코디네이터(coordinator, 518)는 수신된 질의를 컴파일, 최적화 및 실행 플랫폼(512)으로 보내기(dispatch) 위해 적절한 서비스 또는 시스템으로 전송한다. 가상 창고 관리자(520)는 다수의 가상 창고의 동작을 관리한다.
부가적으로, 데이터베이스 서비스 관리자(402)는 원격 데이터 저장 디바이스에 및 로컬 캐시에 저장된 데이터에 관련된 정보를 관리하는, 구성 및 메타데이터 관리자(522)를 포함한다. 모니터 및 작업 부하 분석기(524)는 데이터베이스 서비스 관리자(402)에 의해 수행된 프로세스를 감독하고, 실행 플랫폼(412)에서 가상 창고 및 실행 노드에 걸친 작업(예를 들어, 작업 부하)의 분산을 관리한다. 구성 및 메타데이터 관리자(522) 및 모니터 및 작업 부하 분석기(524)는 데이터 저장 디바이스(526)에 결합된다. 일 실시예에서, 구성 및 메타데이터 관리자(522)는 변경할 수 없는 저장소 자원에서 메타데이터를 수집하고, 저장하며 관리한다. 일 실시예에서, 메타데이터에 대한 업데이트는 새로운 파일을 초래하고, 그 자리에서 업데이트되지 않는다.
본 명세서에서 논의된 바와 같이, 메타데이터 파일은 데이터 창고 내의 임의의 데이터베이스 테이블에 대한 수정(예를 들어, 각 수정)의 메타데이터를 포함하는 파일을 포함할 수 있다. 데이터베이스 테이블의 수정은 하나 이상의 메타데이터 파일 종종, 단일 메타데이터 파일을 생성할 수 있다. 일 실시예에서, 메타데이터 파일은 다음 정보: 버전 번호를 포함하는 메타데이터 파일에 대한 정보; 추가된 모든 테이블 데이터 파일의 목록; 삭제된 테이블 데이터 파일의 목록; 및 파일 경로, 파일 크기, 파일 키 id뿐만 아니라 테이블 데이터 파일에 저장된 모든 행 및 열의 요약을 포함하여 추가된 각 테이블 데이터 파일에 대한 정보를 포함한다.
일 실시예에서, 메타데이터 파일의 내용은 시간에 걸쳐 변할 수 있다. 메타데이터 파일의 포맷 또는 내용이 변경되면, 메타데이터 파일의 버전 번호가 증가될 수 있다. 일 실시예에서, 메타데이터 저장소(또는 다른 변경 가능한 데이터 저장소 자원)는 테이블 데이터 파일이 아닌, (변경할 수 없는 저장소에 저장되는) 메타데이터 파일에 대한 정보만을 저장한다. 실제로, 메타데이터 저장소(또는 다른 변경 가능한 저장소)에 저장된 메타데이터 파일에 대한 정보는 매우 제한적이며, 수천 개의 메타데이터 파일에 대한 데이터를 포함할 수 있다. 일 실시예에서, 최대 30,000개의 메타데이터 파일에 대한 정보가 메타데이터 파일 내에 저장될 수 있다. 이는 메타데이터 저장소 또는 다른 변경 가능한 저장소에 필요한 저장소의 양을 상당히 감소시킨다.
일 실시예에서, 시스템은 데이터베이스 테이블의 모든 수정(예를 들어, 테이블 데이터 파일의 수정)을 위해 메타데이터 파일을 클라우드 저장소에 기록한다. 파일을 추가하고 삭제하는 것에 부가하여, 데이터 창고에서 데이터베이스 테이블에 대한 모든 수정은 또한, 하나 이상의 메타데이터 파일을 생성한다. 통상적으로, 수정은 단일 메타데이터 파일을 생성한다. 하지만, 테이블에 대한 수정이 상당한 경우(예를 들어, 테이블에 매우 많은 파일을 생성하는 삽입), 다수의 메타데이터 파일의 생성을 초래할 수 있다. 구성 및 메타데이터 관리자(522)의 추가적인 동작은 도 6-12에 관련하여 더 논의될 것이다.
데이터베이스 서비스 관리자(402)는 또한, 트랜잭션 관리 및 액세스 제어 모듈(528)을 포함하며, 이는 데이터 저장 요청 및 데이터 액세스 요청의 처리와 연관된 다양한 작업 및 다른 활동을 관리한다. 예를 들어, 트랜잭션 관리 및 액세스 제어 모듈(528)은 다수의 사용자 또는 시스템에 의한 데이터에 대해 일관성 있고 동기화된 액세스를 제공한다. 다수의 사용자/시스템이 동일한 데이터에 동시에 액세스할 수 있기 때문에, 각 사용자/시스템이 현재 버전의 데이터로 작업하는 것을 보장하도록 데이터에 대한 변경이 동기화될 수 있다. 트랜잭션 관리 및 액세스 제어 모듈(528)은 데이터베이스 서비스 관리자(402)에서 단일의 중앙화된 위치에서 다양한 데이터 처리 활동의 제어를 제공한다.
도 6은 도 1의 테이블(602)과 클라우드 저장소에 저장된 메타데이터 파일을 도시한다. 사용자의 테이블(602)은 도 1에 도시된 구조에 유사하게, 클라우드 저장소(604) 내의 테이블 데이터 파일(F1 및 F2)에 저장된 테이블 데이터와 함께 도시된다. 하지만, 테이블 데이터 파일에 대한 메타데이터는 클라우드 저장소(604)에서의 메타데이터 파일(MF1)에도 저장된다. 메타데이터 파일(MF1)은 이들 파일에 대한 모든 파일 정보를 포함하는, 추가된 파일(F1 및 F2)의 목록을 포함한다. 예를 들어, 도 1의 실시예에서 키-값 저장소에 이전에 있었던 파일 정보는 메타데이터 파일(예를 들어, MF1)에 있다. 도 6에 도시된 시점에, 메타데이터 파일(MF1)에 나타난 삭제된 파일은 없다. 메타데이터 저장소(606)는 메타데이터 파일(MF1)에 매핑되는 테이블 버전(V1) 및 메타데이터 파일(MF1)에 대한 정보만을 저장한다. 메타데이터 파일(MF1)에 대한 정보는 MF1의 파일 경로를 포함하고, 더욱 많은 정보를 포함할 수 있다. 따라서, 테이블 데이터 파일 및 메타데이터 파일 양자는 클라우드 저장소에 저장되는 한편, 메타데이터 파일에 대한 정보는 메타데이터 저장소(606) 또는 다른 로컬 및/또는 변경 가능한 저장소에 저장된다.
도 7은 레코드(7, "Difei")를 추가하고 레코드(4, "Neda")를 삭제한 이후의, 도 6의 테이블 및 메타데이터를 도시한다. 제1 수정(uid "7" 및 이름 "Difei" 삽입)은 파일(F3) 및 메타데이터 파일(MF2)을 클라우드에 저장하였다. MF2는 F3에 대한 모든 파일 정보를 포함하여, 추가된 파일(F3)을 나열한다. 메타데이터 저장소(606)는 MF2에 매핑되는 테이블 버전(V2) 및 MF2에 대한 정보로 업데이트된다. 제2 수정(uid "4" 및 이름 "Neda" 삭제)은 파일(F4) 및 메타데이터 파일(MF3)을 클라우드 저장소(604)에 저장하였다. MF3은 F4의 모든 파일 정보를 포함하여 추가된 테이블 데이터 파일(F4)을 나열하고, F2의 삭제된 테이블 데이터 파일도 나열한다.
클라우드 저장소(604) 또는 변경할 수 없는 저장소에서 메타데이터 파일(MF1, MF2 및 MF3)의 저장소는 증가된 메타데이터 저장소 용량을 허용한다. 예를 들어, 테이블 데이터 파일(F1, F2, F3 및 F4)에 대한 모든 메타데이터는 메타데이터 파일(MF1, MF2 및 MF3)의 클라우드 저장소(604) 내에서 발견된다. 크기가 훨씬 작은 메타데이터 파일(MF1)(메타데이터에 대한 정보)에 대한 메타데이터는 키-값 저장소, 변경 가능한 저장소 및/또는 로컬 저장소에 저장된다.
일 실시예에서, 데이터 창고는 질의에 응답하기 위해 판독되어야 하는 파일의 스캔 세트를 컴퓨팅한다. 스캔 세트는 테이블 버전을 사용하여 컴퓨팅된다. 테이블 버전의 세트가 주어지면, 데이터 창고는 메타데이터 저장소로부터 대응하는 메타데이터 파일에 대한 정보를 판독한다. 그 후, 이는 클라우드로부터 메타데이터 파일을 다운로드하고, 추가된 및 삭제 파일의 목록을 판독한다. 이는 이들 목록을 사용하여 스캔 세트를 컴퓨팅한다. 스캔 세트는 메타데이터 파일에 저장된 파일 정보(예를 들어, 행 및 열에 대한 정보)를 사용하여 제거될 수 있다.
예를 들어, 도 7에 도시된 시간에 테이블 "사용자"로부터 데이터를 선택할 때, 스캔 세트는 테이블 버전(V1, V2 및 V3)을 사용하여 컴퓨팅된다. 창고는 대응하는 메타데이터 파일(MF1, MF2 및 MF3)에 대한 정보를 판독한다. 이는 클라우드로부터 이들 메타데이터 파일을 다운로드한다. 파일은 병렬로 다운로드될 수 있다. 일 실시예에서, 데이터베이스 서비스 관리자(402)는 다른 것이 아직 완전히 다운로드되지 않았더라도, 파일 중 하나를 판독하기 시작할 수 있다. 이는 추가된 파일(F1, F2, F3 및 F4)의 집계된 목록으로부터 삭제된 파일(F2)을 제거한다. 그러므로, 결과적인 스캔 세트는 F1, F3 및 F4일 것이다. 이들 파일(또는 이들의 서브-부분)은 질의를 실행하기 위한 실행 노드에 의해 검색될 수 있다.
일 실시예에서, 메타데이터 파일은 백그라운드에서 주기적으로 통합된다. 메타데이터 파일의 통합 또는 "압축(compaction)"은 모든 메타데이터 파일의 추가된 모든 파일을 집계하고 그 목록으로부터 삭제된 모든 파일을 제거한다. 통합은 이들 파일의 모든 파일 정보를 포함하여 결과적인 추가된 파일 목록 만을 포함하는 하나 이상의 압축된 메타데이터 파일을 생성한다. 통합의 목적은 두 가지이다. 첫째, 다수의 메타데이터 파일은 더욱 빠른 다운로드 및 판독을 위해, 더욱 작은 메타데이터 파일의 세트로 압축된다. 둘째, 압축된 메타데이터 파일에서 더 이상 참조되지 않는 파일은 오래된 메타데이터 파일이 제거되면 클라우드로부터 제거될 수 있다.
메타데이터 파일 버전은 상이한 메타데이터 파일의 세트를 구분한다. 하나의 메타데이터 파일 버전의 압축된 파일은 이전의 메타데이터 파일 버전의 모든 메타데이터 파일의 통합물이다. 새로운 메타데이터 파일은 가장 최근의 메타데이터 파일 버전으로 항상 등록된다. 오래된 메타데이터 파일은 그것이 통합된 이후에 클라우드 저장소로부터 삭제될 수 있다. 압축된 파일에서 참조되지 않는 모든 파일은 임의의 메타데이터 파일에서 더 이상 참조되지 않으면 삭제될 수 있다.
도 8은 도 7에 도시된 메타데이터 파일의 통합을 나타내는 블록도이다. 구체적으로, 메타데이터 파일(MF1, MF2 및 MF3)은 압축된 메타데이터 파일(MF4)에 통합된 것으로 도시된다. 메타데이터 파일(MF4)은 F2가 MF3에서 삭제되었으므로 추가된 파일(F1, F3, F4)만을 포함한다. MF4는 또한, F1, F3 및 F4의 모든 파일 정보를 포함한다. 일 실시예에서, 메타데이터 파일 버전(MF V3)이 생성되고 MF4가 MF V3에 등록된다. 새로운 메타데이터 파일(MF5)이 가장 최근의 메타데이터 파일 버전(MF V3)에 등록된다. MF5는 테이블 버전 V4(도 7에 도시되지 않음)에 대응한다. 테이블 버전(V3)은 이들이 정확하게 동일한 스캔 세트를 초래할 것이기 때문에, MF V1의 MF1, MF2 및 MF3, 또는 MF V3의 MF4를 가리킬 수 있다. 도시된 바와 같이, 통합된 메타데이터 파일(MF4)의 생성은 하나의 파일이 이전에 세 개의 파일에서 취한 것을 하도록 허용한다. 일 실시예에서, 메타데이터 파일 버전의 표시(indication)는 통합 이전의 버전이 여전히 결정되거나 액세스될 수 있도록, 통합을 완료한 이후에 저장될 수 있다. 모든 후속 테이블 데이터 변경은 MF4 또는 그 이후를 기초로 반영될 수 있다. 따라서, MF1, MF2 및 MF3은, 원하는 경우 또는 (예를 들어, "시간 이동" 피처의 목적으로) 더 이상 유지될 필요가 없는 버전을 나타내는 경우, 삭제될 수 있다.
테이블 버전에 대한 스캔 세트를 구성하는 것은 단일 메타데이터 파일 버전의 메타데이터 파일만을 사용한다. 사용할 메타데이터 파일 버전은 주어진 테이블 버전보다 낮거나 동일한 가장 높은 메타데이터 파일 버전이다. 예를 들어, 그것이 V3보다 낮거나 동일한 가장 높은 메타데이터 파일 버전이기 때문에, 도 7에서 테이블 버전(V3)에 대한 스캔 세트를 구성하는 것은 메타데이터 파일 버전(V3)을 사용한다. 도 7에서의 예시가 주어지면, 표 1은 주어진 테이블 버전에 대한 스캔 세트를 구성할 때 판독되어야 하는 메타데이터 파일의 목록을 제공한다.
[표 1]
Figure 112020054153240-pct00001
일 실시예에서, 메타데이터 파일의 통합은 사용자 작업 부하에 어느 영향도 미치지 않으면서, 데이터 창고의 백그라운드 프로세스에서 발생한다. 압축된 파일이 컴퓨팅되는 동안 새로운 메타데이터 파일이 추가될 수 있다. 압축된 파일이 클라우드에 업로드된 경우에만, 이는 그 스캔 세트를 컴퓨팅하는데 사용될 수 있다.
변경할 수 없는 메타데이터의 저장소로 다양한 성능 개선이 달성될 수 있다. 일 실시예에서, 메타데이터 파일은 프리페치된다. 예를 들어, 세트 메타데이터 파일을 다운로드 할 때, 프로세스에 의해 메타데이터 파일이 열리기 전에, 데이터 창고는 백그라운드에서 병렬로 메타데이터 파일을 다운로드한다. 프리페칭은 프로세스가 메타데이터 파일을 열기를 원할 때 프리페칭을 사용하여 이미 다운로드되었을 수 있으므로, 메타데이터 파일의 판독 시간을 개선한다.
일 실시예에서, 메타데이터 파일이 캐시된다. 메타데이터 파일은 프로세스의 로컬 파일 시스템 상에 캐시될 수 있다. 메타데이터 파일은 동일한 파일 시스템을 공유하는 다수의 상이한 프로세스에 의해 판독되더라도 한 번만 다운로드될 수 있다. 캐시의 공간이 부족해지면, 오래된 캐시된 메타데이터 파일은 캐시로부터 삭제될 수 있다. 이 경우, 메타데이터 파일은 필요에 따라 다시 다운로드될 수 있다.
일 실시예에서, 메타데이터 파일은 열 지향 레이아웃을 갖는다. 메타데이터 파일 내의 파일 정보는 열 지향 레이아웃으로 저장된다. 이는 메타데이터 파일의 포맷이 행 단위(row-by-row)가 아니라 열 단위임을 의미한다. 프로세스가 메타데이터 파일에서 열에 대한 정보를 판독하는 경우, 단일의 인접한 바이트 블록만을 판독하면 된다. 일 실시예에서, 모든 바이트 블록은 표준 압축 알고리즘("gzip")을 사용하여 압축된다. 이들 기법 양자는 판독 성능을 개선하였다.
보안 개선은 또한, 일부 실시예에서 구현된다. 일 실시예에서, 메타데이터 파일은 개별적인 파일 키를 사용하여 암호화된다. 메타데이터 파일 내에서, 열은 상이한 시작 카운터로 AES-CTR 모드를 사용하여 개별적으로 암호화될 수 있다. 이는 전체 파일을 한 번에 암호 해독할 필요 없이, 암호 해독될 수 있기 때문에, 데이터베이스 시스템이 메타데이터 파일로부터 개별적인 열을 판독하는 것을 허용한다. 암호화는 적절한 파일 키를 갖지 않으면 누구도 메타데이터 파일을 판독할 수 없기 때문에 보안을 개선시킨다.
메타데이터 파일이 변경되지 않았다는 검증을 위해, 시스템은 메타데이터 파일 내의 각 열에 대한 열의 해시를 저장할 수 있다. 데이터를 암호 해독하기 전에, 시스템은 암호화된 열의 해시와 이 메타데이터 파일의 열의 저장된 해시를 비교한다. 해시가 매칭하지 않는 경우, 메타데이터 파일은 변경되어야 한다. 메타데이터 파일의 변경이 데이터베이스 시스템에 의해 검출되기 때문에 이는 보안을 개선한다.
도 9는 일 실시예에 따른 구성 및 메타데이터 관리자(522)의 구성요소를 나타내는 블록도이다. 구성 및 메타데이터 관리자(522)는 테이블 데이터 파일에 대한 메타데이터뿐만 아니라 메타데이터 파일에 대한 메타데이터를 수집하고 저장하며 관리할 수 있다. 구성 및 메타데이터 관리자(522)는 테이블 데이터 구성요소(902), 메타데이터 구성요소(904), 메타데이터 정보 구성요소(906), 통합 구성요소(908), 스캔 세트 구성요소(910), 암호화 구성요소(912) 및 해시 구성요소(914)를 포함한다. 구성요소(902-914)는 단지 예시로서 제공되며, 모든 실시예에 모두 포함되지 않을 수 있다. 실제로, 일부 실시예는 구성요소(902-914)의 두 개 이상 중 하나 이상의 임의의 조합만을 포함할 수 있다. 예를 들어, 구성요소 중 일부는 데이터베이스 서비스 관리자(402) 또는 처리 플랫폼(400) 내에서와 같이 구성 및 메타데이터 관리자(522)의 외부에 있거나 이로부터 분리될 수 있다. 또한, 구성요소(902-914)는 기능을 수행하고 본원에서 논의된 구조를 제공하기 위해 하드웨어, 컴퓨터 판독가능 명령어, 또는 이 양자의 조합을 포함할 수 있다.
테이블 데이터 구성요소(902)는 데이터베이스에 대한 테이블 데이터를 저장하고, 테이블 데이터는 하나 이상의 데이터베이스 테이블의 행 및 열에서의 정보를 포함한다. 테이블 데이터 구성요소(902)는 테이블 데이터를 저장소 자원 내의 테이블 데이터 파일에 저장할 수 있다. 예시적인 저장소 자원은 클라우드 저장소 및/또는 변경할 수 없는 저장소를 포함한다. 일 실시예에서, 테이블 데이터 파일의 저장을 위한 저장소 자원은 저장 요구의 증가 또는 감소를 수용하기 위해 동적으로 할당될 수 있다. 테이블 데이터 구성요소(902)는 클라우드 저장소 자원 또는 서비스와 같이, 원격 자원에 데이터가 저장되거나 업데이트되게 함으로써 테이블 데이터를 관리하고 저장할 수 있다.
메타데이터 구성요소(904)는 변경할 수 없는 저장소 상에 메타데이터를 저장한다. 메타데이터는 테이블 데이터 구성요소(902)에 의해 저장된 데이터베이스에 대한 테이블 데이터에 대한 또는 이를 서술하는 정보를 포함할 수 있다. 일 실시예에서, 메타데이터 파일은 추가되거나 또는 삭제된 테이블 데이터 파일의 표시와 같은 메타데이터를 포함할 수 있다. 메타데이터는 테이블 데이터 파일에 대한 파일 정보를 포함할 수 있으며, 파일 정보는 파일 이름 및 저장 위치 중 하나 이상을 포함한다. 일 실시예에서, 메타데이터는 테이블 데이터와 동일한 클라우드 저장소 자원 상의 파일에 저장될 수 있다. 일 실시예에서, 메타데이터 구성요소(904)는 메타데이터가 원격 클라우드 저장소에서 열 단위의 포맷으로 메타데이터 파일 내에 저장되게 할 수 있다.
메타데이터 구성요소(904)는 또한, 변경할 수 없는 저장소 상에서 메타데이터 파일 내의 메타데이터의 저장소를 수집하고 관리할 수 있다. 메타데이터 구성요소(904)는 테이블 데이터의 변경에 응답하여, 이전의 메타데이터 파일을 수정하지 않으면서 변경할 수 없는 저장소에 새로운 메타데이터 파일을 생성할 수 있다. 새로운 메타데이터 파일은 테이블 데이터의 변경을 나타내는 메타데이터를 포함할 수 있다. 일 실시예에서, 새로운 메타데이터 파일에서의 메타데이터는 테이블 데이터를 포함하는 테이블 데이터 파일의 추가 또는 삭제를 나타낸다. 메타데이터 구성요소(904)는 또한 만기된 메타데이터 파일을 삭제할 수 있다. 만기된 메타데이터 파일은 특정한 에이지(age)보다 오래되었고 메타데이터 정보 구성요소(906)에 의해 저장된 메타데이터 정보에서 참조되지 않는 것을 포함할 수 있다.
메타데이터 정보 구성요소(906)는 변경 가능한 저장소에 메타데이터에 대한 정보를 저장하고 관리한다. 메타데이터(메타데이터 파일에 대한 메타데이터)에 대한 정보는 로컬 변경 가능한 저장소 및/또는 메타데이터 저장소(또는 메타데이터 저장소로 이전에 참조되었던 것)에 저장될 수 있다. 하지만, 일 실시예에서, 메타데이터에 대한 정보는 테이블 데이터 파일에 대한 메타데이터가 아닌, 메타데이터 파일에 대한 정보만을 포함한다. 따라서, 모든 테이블 데이터 메타데이터는 변경할 수 없는 저장소에 위치될 수 있다. 일 실시예에서, 메타데이터에 대한 정보는 그 자리에 저장되고 업데이트될 수 있다. 예를 들어, 일 실시예에서 메타데이터에 대한 정보는 키-값 저장소에 저장된다. 메타데이터에 대한 정보는 버전을 나타내고 버전에 대응하는 메타데이터를 포함한 하나 이상의 메타데이터 파일을 나타내는 정보를 포함한다.
통합 구성요소(908)는 메타데이터를 두 개 이상의 오래된 메타데이터 파일로부터 통합된 메타데이터 파일로 통합하거나 또는 압축한다. 일 실시예에서, 통합된 메타데이터 파일은 두 개 이상의 오래된 메타데이터 파일에 나타난 테이블 데이터 변경을 반영하는 메타데이터를 포함한다. 일 실시예에서, 통합 구성요소(908)는 두 개 이상의 오래된 메타데이터 파일을 삭제한다. 통합 구성요소(908)는 통합된 메타데이터 파일에서 메타데이터에 의해 참조되지 않는 하나 이상의 테이블 데이터 파일을 삭제할 수 있다.
스캔 세트 구성요소(910)는 질의에 대한 스캔 세트를 컴퓨팅할 수 있다. 일 실시예에서, 데이터베이스 시스템은 테이블 데이터를 포함하는 데이터베이스에 관련된 질의를 수신할 수 있다. 스캔 세트 구성요소는 복수의 캐시되지 않은 메타데이터 파일을 검색하거나, 또는 다른 구성요소가 그렇게 하게 할 수 있다. 메타데이터 파일은 질의에 대응하는 메타데이터 파일을 포함할 수 있다. 일 실시예에서, 스캔 세트 구성요소는 메타데이터 파일을 변경할 수 없는 저장소로부터 병렬로 다운로드한다. 일 실시예에서, 스캔 세트 구성요소는 제2 메타데이터 파일이 완전히 다운로드되기 전에 제1 메타데이터 파일을 판독함으로써 스캔 세트를 결정한다. 메타데이터의 처리 및 다운로드가 파일 단위 또는 청크(chunks) 단위로 이루어질 수 있기 때문에, 스캔 세트를 컴퓨팅하는데 개선된 속도를 허용할 수 있다. 따라서, 데이터베이스 시스템은 스캔 세트의 컴퓨팅을 시작하기 전에, 모든 파일이 다운로드되기를 기다릴 필요가 없으며, 이는 (캐시 또는 변경할 수 없는 저장소로부터) 메타데이터 파일이 검색될 때 스캔 세트를 컴퓨팅할 수 있다. 일 실시예에서, 스캔 세트는 질의를 수행하는데 필요한 하나 이상의 테이블 데이터 파일을 나타낸다.
암호화 구성요소(912)는 테이블 데이터 및 메타데이터를 암호화하도록 구성된다. 일 실시예에서, 암호화 구성요소(912)는 특정한 열에 대한 메타데이터의 독립적인 암호 해독 및 판독을 허용하기 위해, 메타데이터를 열 단위로 암호화한다.
해시 구성요소(914)는 열에 대한 해시를 컴퓨팅하고 저장한다. 예를 들어, 메타데이터 파일을 생성할 때, 해시 구성요소(814)는 메타데이터 파일에서 각 열에 대한 해시를 컴퓨팅하고 이 해시를 저장할 수 있다. 나중에, 파일 내의 열이 액세스될 때, 해시 구성요소(914)는 해시를 컴퓨팅하고, 이를 저장된 해시에 비교할 수 있다. 해시가 상이하면, 해시 구성요소(914)는 그 열에서의 메타데이터가 변경된 것으로 결정할 수 있다.
도 10은 데이터베이스 시스템에서 메타데이터를 관리하는 예시적인 방법(1000)을 도시하는 개략적인 흐름도이다. 방법(1000)은 구성 및 메타데이터 관리자(522), 데이터베이스 서비스 관리자(402), 처리 플랫폼(400) 및/또는 다른 서비스 또는 플랫폼에 의해 수행될 수 있다.
방법(1000)이 시작되고 테이블 데이터 구성요소(902)는 데이터베이스에 대한 테이블 데이터를 저장하며(1002), 테이블 데이터는 하나 이상의 데이터베이스 테이블의 행 및 열에서 정보를 포함한다. 메타데이터 구성요소(904)는 변경할 수 없는 저장소 상에 메타데이터를 저장하며(1004), 메타데이터는 데이터베이스에 대한 테이블 데이터에 대한 정보를 포함한다. 메타데이터 구성요소(904)는 테이블 데이터의 변경에 응답하여, 이전 메타데이터 파일을 수정하지 않으면서 변경할 수 없는 저장소에 새로운 메타데이터 파일을 생성한다(1006). 새로운 메타데이터 파일은 테이블 데이터에서의 변경을 나타내는 메타데이터를 포함한다. 통합 구성요소(908)는 두 개 이상의 오래된 메타데이터 파일로부터 통합된 메타데이터 파일로 메타데이터를 통합한다(1008).
도 11은 데이터베이스 시스템에서 스캔 세트를 컴퓨팅하기 위한 예시적인 방법(1000)을 도시하는 개략적인 흐름도이다. 방법(1100)은 구성 및 메타데이터 관리자(522), 데이터베이스 서비스 관리자(402), 처리 플랫폼(400) 및/또는 다른 서비스 또는 플랫폼에 의해 수행될 수 있다.
방법(1100)이 시작되고 데이터베이스 시스템은 테이블 데이터를 포함하는 데이터베이스에 관련된 질의를 수신한다(1102). 스캔 세트 구성요소(910)는 하나 이상의 관련된 메타데이터 파일을 식별한다(1104). 예를 들어, 스캔 세트 구성요소(910)는 메타데이터 저장소 또는 변경할 수 없는 저장소에 저장된 메타데이터 파일에 대한 정보를 기초로 관련된 메타데이터 파일을 식별할 수 있다(1104). 스캔 세트 구성요소(910)는 변경할 수 없는 저장소로부터 질의에 대응하는 복수의 캐시되지 않은 메타데이터 파일을 병렬로 검색한다(1106). 예를 들어, 스캔 세트를 컴퓨팅하는 데 필요하지만 캐시 내에 위치되지 않은 복수의 메타데이터 파일이 있는 경우, 복수의 메타데이터 파일은 병렬로 다운로드될 수 있다. 스캔 세트 구성요소(910)는 스캔 세트를 결정하기 위해 제2 메타데이터 파일이 완전히 다운로드되기 전에 제1 메타데이터 파일을 판독한다(1108). 예를 들어, 스캔 세트 구성요소(910)는 스캔 세트의 컴퓨팅을 시작하기 전에 모든 메타데이터 파일이 다운로드될 때까지 기다릴 필요가 없으며, 파일이 검색/다운로드될 때 스캔 세트의 컴퓨팅을 시작할 수 있다. 스캔 세트는 실행 노드에 제공될 수 있거나 및/또는 다른 방식으로, 질의를 처리하는데 필요한 테이블 데이터 파일 또는 정보를 검색하는 데 사용될 수 있다.
도 12는 예시적인 컴퓨팅 디바이스(1200)를 도시하는 블록도이다. 일부 실시예에서, 컴퓨팅 디바이스(1200)는 본원에서 논의된 시스템 및 구성요소 중 하나 이상을 구현하는데 사용된다. 예를 들어, 컴퓨팅 디바이스(1200)는 구성 및 메타데이터 관리자(522), 데이터베이스 서비스 관리자(402), 처리 플랫폼(400) 및/또는 본원에 논의된 임의의 다른 구성요소 또는 시스템을 포함하거나 그 일부일 수 있다. 다른 예시로서, 본원에서 논의된 구성요소, 시스템 또는 플랫폼은 하나 이상의 컴퓨팅 디바이스(1200)를 포함할 수 있다. 또한, 컴퓨팅 디바이스(1200)는 본원에서 서술된 시스템 및 구성요소 중 임의의 것과 상호작용할 수 있다. 따라서, 컴퓨팅 디바이스(1200)는 본원에서 논의된 것과 같은 다양한 절차 및 작업을 수행하는데 사용될 수 있다. 컴퓨팅 디바이스(1200)는 서버, 클라이언트 또는 임의의 다른 컴퓨팅 엔티티로서 기능을 할 수 있다. 컴퓨팅 디바이스(1200)는 데스크탑 컴퓨터, 노트북 컴퓨터, 서버 컴퓨터, 휴대형 컴퓨터(handheld computer), 태블릿 등과 같은 매우 다양한 컴퓨팅 디바이스 중 임의의 것일 수 있다.
컴퓨팅 디바이스(1200)는 하나 이상의 프로세서(들)(1202), 하나 이상의 메모리 디바이스(들)(1204), 하나 이상의 인터페이스(들)(1206), 하나 이상의 대용량 저장 디바이스(들)(1208) 및 하나 이상 입/출력(I/O) 디바이스(들)(1210)를 포함하며, 이들 모두는 버스(1212)에 결합된다. 프로세서(들)(1202)는 메모리 디바이스(들)(1204) 및/또는 대용량 저장 디바이스(들)(1208)에 저장된 명령어를 실행하는 하나 이상의 프로세서 또는 제어기를 포함한다. 프로세서(들)(1202)는 또한 캐시 메모리와 같은 다양한 타입의 컴퓨터 판독가능 매체를 포함할 수 있다.
메모리 디바이스(들)(1204)는 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM)) 및/또는 비휘발성 메모리(예를 들어, 판독-전용 메모리(ROM))와 같은 다양한 컴퓨터 판독가능 매체를 포함한다. 메모리 디바이스(들)(1204)는 또한 플래시 메모리와 같은 재기록 가능한 ROM(rewritable ROM)을 포함할 수 있다.
대용량 저장 디바이스(들)(1208)는 자기 테이프, 자기 디스크, 광 디스크, 고체 상태 메모리(예를 들어, 플래시 메모리) 등과 같은 다양한 컴퓨터 판독가능 매체를 포함한다. 다양한 컴퓨터 판독가능 매체로부터의 판독 및/또는 그로의 기록을 가능하게 하기 위해, 다양한 드라이브가 대용량 저장 디바이스(들)(1208)에 또한 포함될 수 있다. 대용량 저장 디바이스(들)(1208)는 이동식 매체(removable media) 및/또는 비-이동식 매체를 포함한다.
I/O 디바이스(들)(1210)는 데이터 및/또는 다른 정보가 컴퓨팅 디바이스(1200)에 입력되거나 그로부터 검색되는 것을 허용하는 다양한 디바이스를 포함한다. 예시적인 I/O 디바이스(들)(1210)는 커서 제어 디바이스, 키보드, 키패드, 마이크, 모니터 또는 다른 디스플레이 디바이스, 스피커, 프린터, 네트워크 인터페이스 카드, 모뎀, 렌즈, CCD 또는 다른 이미지 캡처 디바이스 등을 포함한다.
인터페이스(들)(1206)는 컴퓨팅 디바이스(1200)가 다른 시스템, 디바이스 또는 컴퓨팅 환경과 상호 작용하는 것을 허용하는 다양한 인터페이스를 포함한다. 예시적인 인터페이스(들)(1206)는 근거리 통신망(LAN), 광역 통신망(WAN), 무선 네트워크 및 인터넷에 대한 인터페이스과 같은 임의의 수의 상이한 네트워크 인터페이스를 포함한다.
버스(1212)는 프로세서(들)(1202), 메모리 디바이스(들)(1204), 인터페이스(들)(1206), 대용량 저장 디바이스(들)(1208) 및 I/O 디바이스(들)(1210)뿐만 아니라 버스(1212)에 결합된 다른 디바이스 또는 구성요소와 통신하는 것을 허용한다. 버스(1212)는 시스템 버스, PCI 버스, IEEE 1394 버스, USB 버스 등과 같은 여러 타입의 버스 구조 중 하나 이상을 나타낸다.
예시
다음의 예시는 추가적인 실시예에 관련된다.
예시 1은 데이터베이스에 대한 테이블 데이터를 저장하는 것을 포함하는 방법이며, 테이블 데이터는 하나 이상의 데이터베이스 테이블의 행 및 열에서의 정보를 포함한다. 방법은 변경할 수 없는 저장소 상에 메타데이터를 저장하는 것을 포함하며, 메타데이터는 데이터베이스에 대한 테이블 데이터에 대한 정보를 포함한다.
예시 2에서, 예시 1에서와 같이 메타데이터를 저장하는 것은 변경할 수 없는 저장소 상의 파일에 메타데이터를 저장하고 관리하는 것을 포함한다.
예시 3에서, 예시 1-2 중 어느 것에서와 같이 메타데이터는 추가되거나 또는 삭제된 테이블 데이터 파일의 표시를 포함한다.
예시 4에서, 예시 1-3 중 어느 것에서와 같이 메타데이터는 테이블 데이터를 포함하는 파일에 대한 파일 정보를 포함하고, 파일 정보는 파일 이름 및 저장 위치 중 하나 이상을 포함한다.
예시 5에서, 예시 1-4 중 어느 것에서와 같이 변경할 수 없는 저장소는 클라우드 저장소 자원을 포함한다.
예시 6에서, 예시 1-5 중 어느 것에서와 같이 방법은 메타데이터에 대한 정보를 변경 가능한 저장소에 저장하는 것을 포함한다.
예시 7에서, 예시 6의 메타데이터에 대한 정보는 키-값 저장소에 저장된다.
예시 8에서, 예시 6-7 중 어느 것에서와 같이 메타데이터에 대한 정보는 버전을 나타내고 버전에 대응하는 메타데이터를 포함하는 하나 이상의 메타데이터 파일을 나타내는 정보를 포함한다.
예시 9에서, 예시 1-8 중 어느 것에서와 같이 방법은, 테이블 데이터에서의 변경에 응답하여, 이전 메타데이터 파일을 수정하지 않으면서 변경할 수 없는 저장소에 새로운 메타데이터 파일을 생성하는 것을 더 포함하며, 새로운 메타데이터 파일은 테이블 데이터에서의 변경을 나타낸다.
예시 10에서, 예시 9의 새로운 메타데이터 파일에서의 메타데이터는 테이블 데이터를 포함하는 테이블 데이터 파일의 추가 또는 삭제를 나타낸다.
예시 11에서, 예시 9-10 중 어느 것에서와 같이 방법은 만기된 메타데이터 파일을 삭제하는 것을 더 포함한다.
예시 12에서, 예시 1-11 중 어느 것에서와 같이 방법은 두 개 이상의 오래된 메타데이터 파일로부터 통합된 메타데이터 파일로 메타데이터를 통합하는 것을 더 포함한다.
예시 13에서, 예시 12의 통합된 메타데이터 파일은 두 개 이상의 오래된 메타데이터 파일에 나타난 테이블 데이터 변경을 반영하는 메타데이터를 포함한다.
예시 14에서, 예시 12-13 중 어느 것에서 통합하는 것은 두 개 이상의 오래된 메타데이터 파일을 삭제하는 것을 포함한다.
예시 15에서, 예시 12-14 중 어느 것에서와 같이 방법은 통합된 메타데이터 파일에서 메타데이터에 의해 참조되지 않는 하나 이상의 테이블 데이터 파일을 삭제하는 것을 더 포함한다.
예시 16에서, 예시 1-15 중 어느 것에서와 같이 방법은 테이블 데이터를 포함하는 데이터베이스에 관련된 질의를 수신하는 것, 및 변경할 수 없는 저장소로부터 질의에 대응하는 복수의 캐시되지 않은 메타데이터 파일을 병렬로 검색하는 것을 포함한다.
예시 17에서, 예시 16의 방법은 질의에 대응하는 메타데이터 파일을 기초로 테이블 데이터 파일의 스캔 세트를 결정하는 것을 더 포함하고, 스캔 세트를 결정하는 것은 제2 메타데이터 파일이 완전히 다운로드되기 전에 제1 메타데이터 파일을 판독하는 것을 포함하며, 복수의 캐시되지 않은 메타데이터 파일은 제1 메타데이터 파일 및 제2 메타데이터 파일을 포함한다.
예시 18에서, 예시 17의 스캔 세트는 질의를 수행하는 데 필요한 하나 이상의 테이블 데이터 파일을 나타낸다.
예시 19에서, 예시 1-18 중 어느 것에서와 같이 메타데이터를 저장하는 것은 메타데이터를 열 단위의 포맷으로 저장하는 것을 포함한다.
예시 20에서, 예시 19의 방법은 특정 열에 대한 메타데이터의 독립적인 암호 해독 및 판독을 허용하기 위해 메타데이터를 열 단위로 암호화하는 것을 더 포함한다.
예시 21에서, 예시 19-20 중 어느 것의 방법은 메타데이터가 변경되었는지를 결정하기 위해 메타데이터 열의 해시를 저장하는 것 및 저장된 해시와 컴퓨팅된 해시(최근 컴퓨팅 된 해시)를 비교하는 것을 더 포함한다.
예시 22는 예시 1-21 중 어느 것에서와 같은 방법을 수행하기 위한 수단을 포함하는 장치이다.
예시 23은 실행될 때 예시 1-22 중 어느 것의 방법을 구현하거나 또는 장치를 실현하기 위한 기계-판독한 명령어를 포함하는 기계-판독가능 저장소이다.
본원의 흐름도 및 블록도는 본 개시의 다양한 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 아키텍처, 기능 및 동작을 도시한다. 이에 관련하여, 흐름도 또는 블록도에서 각 블록은 지정된 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 코드의 모듈, 세그먼트 또는 일부를 나타낼 수 있다. 또한, 블록도 및/또는 흐름도의 각 블록, 및 블록도 및/또는 흐름도의 블록의 조합은 지정된 기능 또는 동작을 수행하는 특수 목적의 하드웨어-기반 시스템, 또는 특수 목적 하드웨어 및 컴퓨터 명령어의 조합에 의해 구현될 수 있다. 이들 컴퓨터 프로그램 명령어는 또한, 컴퓨터 판독가능 매체에 저장된 명령어가 흐름도 및/또는 블록도의 블록(들)에 지정된 기능/동작을 구현하는 명령어를 포함하는 제조 물품을 생산하도록, 컴퓨터 또는 다른 프로그램 가능 데이터 처리 장치가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 매체에 저장될 수 있다.
본원에 서술된 시스템 및 방법은 새로운 데이터 처리 플랫폼, 방법, 시스템 및 알고리즘을 사용하여 유연하고 확장 가능한 데이터 창고를 제공한다. 일부 실시예에서, 서술된 시스템 및 방법은 클라우드 기반 저장소 자원, 컴퓨팅 자원 등을 지원하는 클라우드 인프라 구조를 이용한다(leverage). 예시적인 클라우드 기반 저장소 자원은 저렴한 비용으로 온-디맨드(on-demand)로 이용 가능한 상당한 저장소 용량을 제공한다. 또한, 이들 클라우드-기반 저장소 자원은 내결함성(fault-tolerant)이 있고 높은 확장성이 있을 수 있으며, 이는 개인용 데이터 저장 시스템에서 달성하는데 비용이 많이 들 수 있다. 예시적인 클라우드 기반 컴퓨팅 자원은 온-디맨드로 이용 가능하며 자원의 실제 사용 레벨을 기초로 가격이 매겨질 수 있다. 통상적으로, 클라우드 인프라구조는 빠른 방식으로 동적으로 전개되고, 재구성되며 및 폐기된다(decommissioned).
서술된 시스템 및 방법에서, 데이터 저장 시스템은 SQL(Structured Query Language) 기반 관계형 데이터베이스를 사용한다. 하지만, 이들 시스템 및 방법은 데이터베이스 내에서 데이터를 저장하고 검색하기 위해 임의의 데이터 저장소 아키텍처를 사용하고 임의의 언어를 사용하는 임의의 타입의 데이터베이스에 적용 가능할 수 있다. 본원에 서술된 시스템 및 방법은 또한, 상이한 고객/클라이언트 사이의 및 동일한 고객/클라이언트 내의 상이한 사용자 사이의 컴퓨팅 자원 및 데이터의 분리를 지원하는 다중 테넌트 시스템(multi-tenant system)을 제공할 수 있다.
다양한 기법 또는 이의 특정 양상 또는 일부는 플로피 디스켓, CD-ROM, 하드 드라이브, 비-일시적 컴퓨터 판독가능 저장 매체, 또는 임의의 다른 기계 판독가능 저장 매체와 같이 유형의 매체에 구현된 프로그램 코드(즉, 명령어)의 형태를 취할 수 있으며, 프로그램 코드가 컴퓨터와 같은 기계에 로딩되고 실행될 때, 기계는 다양한 기법을 실시하는 장치가 된다. 프로그램 가능 컴퓨터(programmable computers) 상의 프로그램 코드 실행의 경우, 컴퓨팅 디바이스는 프로세서, 프로세서에 의해 판독 가능한 (휘발성 및 비-휘발성 메모리 및/또는 저장 요소를 포함하는) 저장 매체, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스를 포함할 수 있다. 휘발성 및 비-휘발성 메모리 및/또는 저장 요소는 전자 데이터를 저장하기 위한 RAM, EPROM, 플래시 드라이브, 광학 드라이브, 자기 하드 드라이브, 또는 다른 매체일 수 있다. 본원에서 서술된 다양한 기법을 구현하거나 이용할 수 있는 하나 이상의 프로그램은 애플리케이션 인터페이스(API), 재사용 가능 제어 등을 사용할 수 있다. 이러한 프로그램은 컴퓨터 시스템과 통신하기 위해 높은 레벨의 절차적인 또는 객체-지향 프로그래밍 언어로 구현될 수 있다. 하지만, 프로그램(들)은 원하는 경우 어셈블리(assembly) 또는 기계 언어로 구현될 수 있다. 임의의 경우에서, 언어는 컴파일드 또는 인터프리트 언어(compiled or interpreted language)일 수 있으며, 하드웨어 구현과 결합될 수 있다.
본 명세서에 서술된 기능 유닛 중 다수가 하나 이상의 구성요소로서 구현될 수 있으며, 이는 이들의 구현 독립성을 더욱 특별히 강조하기 위해 사용되는 용어라는 것이 이해되어야 한다. 예를 들어, 구성요소는 맞춤형 초고밀도 집적(very large scale integration, VLSI) 회로 또는 게이트 어레이, 논리회로 칩, 트랜지스터 또는 다른 이산 구성요소와 같은 기성 반도체(off-the-shelf semiconductors)를 포함하는 하드웨어 회로로서 구현될 수 있다. 구성요소는 또한 필드 프로그램가능 게이트 어레이, 프로그램가능 어레이 논리회로, 프로그램가능 논리회로 디바이스 등과 같은 프로그램가능 하드웨어 디바이스로 구현될 수 있다.
구성요소는 또한, 다양한 타입의 프로세서에 의한 실행을 위해 소프트웨어로 구현될 수 있다. 예를 들어, 실행 가능 코드의 식별된 구성요소는 예를 들어, 객체, 절차 또는 기능으로서 구성될 수 있는 컴퓨터 명령어의 하나 이상의 물리적 또는 논리적 블록을 포함할 수 있다. 그럼에도 불구하고, 식별된 구성요소의 실행 가능(executables)은 물리적으로 함께 위치될 필요는 없지만, 논리적으로 함께 결합될 때 구성요소를 포함하고 구성요소에 대해 명시된 목적을 달성하는 상이한 위치에 저장된 여러 명령어를 포함할 수 있다.
실제로, 실행 가능한 코드의 구성요소는 단일 명령어 또는 다수의 명령어일 있으며, 심지어 여러 상이한 코드 세그먼트에 걸쳐, 상이한 프로그램 사이에서 및 여러 메모리 디바이스에 걸쳐 분산될 수 있다. 유사하게, 동작 데이터는 본원에서는 구성요소 내에서 식별되고 예시될 수 있고, 임의의 적절한 형태로 구현되고 임의의 적절한 타입의 데이터 구조 내에서 구성될 수 있다. 동작 데이터는 단일 데이터 세트로서 수집될 수 있거나, 또는 상이한 저장 디바이스를 포함하여 상이한 위치에 걸쳐 분산될 수 있으며, 적어도 부분적으로는 시스템 또는 네트워크상에서 단순히 전자 신호로서 존재할 수 있다. 원하는 기능을 수행하도록 동작 가능한 에이전트를 포함하는 구성요소는 수동적이거나 능동적일 수 있다.
본 명세서 전체에 걸쳐 "예시"에 대한 참조는 예시와 관련하여 서술된 특정한 피처, 구조 또는 특성이 본 개시의 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서 전체에 걸쳐 다양한 위치에서 "일 예시에서"라는 어구의 출현은 모두가 동일한 실시예를 참조하는 것은 아니다.
본원에서 사용되는 바와 같이, 복수의 물품, 구조적인 요소, 구성 요소 및/또는 재료는 편의상 공통 목록으로 제시될 수 있다. 하지만, 이들 목록은 목록의 각 멤버가 별도의 고유한 멤버로서 개별적으로 식별되는 것으로 해석되어야 한다. 따라서, 이러한 목록의 개별적인 멤버는 그 반대에 대한 지시 없이, 공통 그룹에서의 그의 표현만을 기초로 동일한 목록의 임의의 다른 멤버의 실질적인 등가물로서 해석되지 않아야 한다. 부가적으로, 본 개시의 다양한 실시예 및 예시가 본원에서 그의 다양한 구성요소에 대한 대안과 함께 참조될 수 있다. 이러한 실시예, 예시 및 대안이 서로 실질적인 등가물로서 해석되는 것이 아니라 본 개시의 별도의 주체적인 표현으로 간주되어야 한다는 것이 이해된다.
전술한 것이 명료함을 위해 어느 정도 상세하게 서술되었지만, 그의 원리를 벗어나지 않으면서 특정한 변경 및 수정이 이루어질 수 있음이 명백할 것이다. 본원에서 서술된 프로세스 및 장치 양자를 구현하는 다수의 대안적인 방식이 있음을 유의해야 한다. 따라서, 본 실시예는 제한적이지 않고 예시적인 것으로 간주되어야 한다.
통상의 기술자는 본 개시의 기본 원리를 벗어나지 않으면서 상술한 실시예의 세부사항에 대해 많은 변경이 이루어질 수 있음을 인식할 것이다. 그러므로, 본 개시의 범위는 아래의 청구범위에 의해서만 결정되어야 한다.

Claims (60)

  1. 데이터베이스 시스템으로서,
    데이터베이스에 대한 테이블 데이터를 저장하기 위한 수단 - 상기 테이블 데이터는 하나 이상의 데이터베이스 테이블의 행 및 열에서의 정보를 포함하고, 상기 테이블 데이터는 테이블 데이터 파일에 저장됨 -;
    변경할 수 없는 저장소(immutable storage) 상에 메타데이터를 저장하기 위한 수단 - 상기 메타데이터는 상기 데이터베이스에 대한 상기 테이블 데이터에 대한 정보를 포함하고, 상기 메타데이터는 메타데이터 파일에 저장됨 -;
    상기 테이블 데이터에 레코드를 추가하는 것에 응답하여, 상기 추가된 레코드를 가지는 새로운 테이블 데이터 파일을 생성하고 상기 추가된 레코드를 가지는 상기 새로운 테이블 데이터 파일의 상기 생성을 나타내는 대응하는 새로운 메타데이터 파일을 생성하기 위한 수단; 및
    상기 테이블 데이터로부터 레코드를 삭제하는 것에 응답하여, 상기 삭제된 레코드가 저장되었던 테이블 데이터 파일을 삭제하고, 상기 삭제된 레코드가 저장되었던 상기 삭제된 테이블 데이터 파일에 대응하며 상기 삭제된 레코드를 포함하지 않는 새로운 테이블 데이터 파일을 생성하고, 상기 삭제된 레코드가 저장되었던 상기 테이블 데이터 파일의 상기 삭제 및 상기 삭제된 레코드가 저장되었던 상기 삭제된 테이블 데이터 파일에 대응하며 상기 삭제된 레코드를 포함하지 않는 상기 새로운 테이블 데이터 파일의 상기 생성을 나타내는 새로운 메타데이터 파일을 생성하기 위한 수단을 포함하는, 데이터베이스 시스템.
  2. 제1항에 있어서, 변경 가능한 저장소에 상기 메타데이터에 대한 정보를 저장하기 위한 수단을 더 포함하고, 상기 메타데이터에 대한 정보를 저장하기 위한 수단은 키-값 저장소에 상기 메타데이터에 대한 상기 정보를 저장하기 위한 수단을 포함하며, 상기 메타데이터에 대한 상기 정보는 상기 테이블 데이터에 대한 버전을 포함하고 상기 버전에 대응하는 메타데이터를 포함하는 하나 이상의 메타데이터 파일을 나타내는(indicate), 데이터베이스 시스템.
  3. 삭제
  4. 제1항에 있어서, 두 개 이상의 오래된 메타데이터 파일로부터 통합된 메타데이터 파일로 메타데이터를 통합하기 위한 수단을 더 포함하고, 상기 통합된 메타데이터 파일은 상기 두 개 이상의 오래된 메타데이터 파일에 나타난 상기 테이블 데이터의 변경을 반영하는 메타데이터를 포함하는, 데이터베이스 시스템.
  5. 제4항에 있어서, 하나 이상의 메타데이터 파일 버전을 저장하기 위한 수단을 더 포함하고, 상기 메타데이터 파일 버전은 통합 이전의 버전 및 통합 이후의 버전에 대응하는 메타데이터 파일을 나타내는, 데이터베이스 시스템.
  6. 제1항에 있어서:
    상기 테이블 데이터를 포함하는 데이터베이스에 관련된 질의를 수신하기 위한 수단; 및
    상기 변경할 수 없는 저장소로부터 상기 질의에 대응하는 복수의 캐시되지 않은 메타데이터 파일을 병렬로 검색하기 위한 수단을 더 포함하는, 데이터베이스 시스템.
  7. 제6항에 있어서, 상기 질의에 대응하는 메타데이터 파일을 기초로 테이블 데이터 파일의 스캔 세트를 결정하기 위한 수단을 더 포함하고, 상기 스캔 세트를 결정하기 위한 상기 수단은 제2 메타데이터 파일이 완전히 다운로드되기 전에 제1 메타데이터 파일을 판독하고, 상기 복수의 캐시되지 않은 메타데이터 파일은 상기 제1 메타데이터 파일 및 상기 제2 메타데이터 파일을 포함하며, 상기 스캔 세트는 상기 질의를 수행하는데 필요한 하나 이상의 테이블 데이터 파일을 나타내는, 데이터베이스 시스템.
  8. 제1항에 있어서, 상기 메타데이터를 저장하기 위한 상기 수단은 상기 메타데이터를 열 단위 포맷으로(column-by-column format) 저장하고, 상기 데이터베이스 시스템은:
    특정한 열에 대한 메타데이터의 독립적인 암호 해독 및 판독을 허용하기 위해 상기 메타데이터를 열 단위로 암호화하기 위한 수단; 및
    상기 메타데이터가 변경되었는지를 결정하기 위해 상기 메타데이터의 열의 해시(hash)를 저장하고, 상기 저장된 해시와 컴퓨팅된 해시를 비교하기 위한 수단을 더 포함하는, 데이터베이스 시스템.
  9. 컴퓨팅 디바이스에 의해 메타데이터를 관리하기 위한 방법으로서,
    데이터베이스에 대한 테이블 데이터를 저장하는 것 - 상기 테이블 데이터는 하나 이상의 데이터베이스 테이블의 행 및 열에서의 정보를 포함하고, 상기 테이블 데이터는 테이블 데이터 파일에 저장됨 -;
    변경할 수 없는 저장소 상에 메타데이터를 저장하는 것 - 상기 메타데이터는 상기 데이터베이스에 대한 상기 테이블 데이터에 대한 정보를 포함하고, 상기 메타데이터는 메타데이터 파일에 저장됨 -;
    상기 테이블 데이터에 레코드를 추가하는 것에 응답하여, 상기 추가된 레코드를 가지는 새로운 테이블 데이터 파일을 생성하고 상기 추가된 레코드를 가지는 상기 새로운 테이블 데이터 파일의 상기 생성을 나타내는 대응하는 새로운 메타데이터 파일을 생성하는 것; 및
    상기 테이블 데이터로부터 레코드를 삭제하는 것에 응답하여, 상기 삭제된 레코드가 저장되었던 테이블 데이터 파일을 삭제하고, 상기 삭제된 레코드가 저장되었던 상기 삭제된 테이블 데이터 파일에 대응하며 상기 삭제된 레코드를 포함하지 않는 새로운 테이블 데이터 파일을 생성하고, 상기 삭제된 레코드가 저장되었던 상기 테이블 데이터 파일의 상기 삭제 및 상기 삭제된 레코드가 저장되었던 상기 삭제된 테이블 데이터 파일에 대응하며 상기 삭제된 레코드를 포함하지 않는 상기 새로운 테이블 데이터 파일의 상기 생성을 나타내는 새로운 메타데이터 파일을 생성하는 것을 포함하는, 방법.
  10. 삭제
  11. 삭제
  12. 제9항에 있어서, 상기 메타데이터는 상기 테이블 데이터를 포함하는 상기 테이블 데이터 파일에 대한 파일 정보를 더 포함하고, 상기 파일 정보는 파일 이름 및 저장 위치 중 하나 이상을 포함하는, 방법.
  13. 제9항에 있어서, 상기 변경할 수 없는 저장소는 클라우드 저장소 자원을 포함하는, 방법.
  14. 제9항에 있어서, 상기 방법은 상기 메타데이터에 대한 정보를 변경 가능한 저장소에 저장하는 것을 더 포함하는, 방법.
  15. 제14항에 있어서, 상기 메타데이터에 대한 상기 정보는 키-값 저장소에 저장되는, 방법.
  16. 제14항에 있어서, 상기 메타데이터에 대한 상기 정보는 버전을 나타내고, 상기 버전에 대응하는 메타데이터를 포함하는 하나 이상의 메타데이터 파일을 나타내는 정보를 포함하는, 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 제9항에 있어서, 상기 방법은 두 개 이상의 오래된 메타데이터 파일로부터 통합된 메타데이터 파일로 메타데이터를 통합하는 것을 더 포함하는, 방법.
  21. 제20항에 있어서, 상기 통합된 메타데이터 파일은 상기 두 개 이상의 오래된 메타데이터 파일에 나타난 상기 테이블 데이터의 변경을 반영하는 메타데이터를 포함하는, 방법.
  22. 제20항에 있어서, 상기 통합하는 것은 상기 두 개 이상의 오래된 메타데이터 파일을 삭제하는 것을 포함하는, 방법.
  23. 제20항에 있어서, 상기 통합된 메타데이터 파일에서 메타데이터에 의해 참조되지 않는 하나 이상의 테이블 데이터 파일을 삭제하는 것을 더 포함하는, 방법.
  24. 제20항에 있어서, 하나 이상의 메타데이터 파일 버전을 저장하는 것을 더 포함하고, 상기 메타데이터 파일 버전은 통합 이전의 버전 및 통합 이후의 버전에 대응하는 메타데이터 파일을 나타내는, 방법.
  25. 제9항에 있어서, 상기 방법은:
    상기 테이블 데이터를 포함하는 데이터베이스에 관련된 질의를 수신하는 것; 및
    상기 변경할 수 없는 저장소로부터 상기 질의에 대응하는 복수의 캐시되지 않은 메타데이터 파일을 병렬로 검색하는 것을 더 포함하는, 방법.
  26. 제25항에 있어서, 상기 질의에 대응하는 메타데이터 파일을 기초로 테이블 데이터 파일의 스캔 세트를 결정하는 것을 더 포함하고, 상기 스캔 세트를 결정하는 것은 제2 메타데이터 파일이 완전히 다운로드되기 전에 제1 메타데이터 파일을 판독하는 것을 포함하며, 상기 복수의 캐시되지 않은 메타데이터 파일은 상기 제1 메타데이터 파일 및 상기 제2 메타데이터 파일을 포함하는, 방법.
  27. 제26항에 있어서, 상기 스캔 세트는 상기 질의를 수행하는데 필요한 하나 이상의 테이블 데이터 파일을 나타내는, 방법.
  28. 제9항에 있어서, 상기 메타데이터를 저장하는 것은 상기 메타데이터를 열 단위 포맷으로 저장하는 것을 포함하는, 방법.
  29. 제28항에 있어서, 특정 열에 대한 메타데이터의 독립적인 암호 해독 및 판독을 허용하기 위해 상기 메타데이터를 열 단위로 암호화하는 것을 더 포함하는, 방법.
  30. 제28항에 있어서, 상기 메타데이터가 변경되었는지를 결정하기 위해 상기 메타데이터의 열의 해시를 저장하는 것 및 상기 저장된 해시와 컴퓨팅된 해시를 비교하는 것을 더 포함하는, 방법.
  31. 데이터베이스 시스템으로서, 상기 시스템은:
    데이터베이스에 대한 테이블 데이터를 저장하도록 구성된 테이블 데이터 구성요소 - 상기 테이블 데이터는 하나 이상의 데이터베이스 테이블의 행 및 열에서의 정보를 포함하고, 상기 테이블 데이터는 테이블 데이터 파일에 저장됨 -; 및
    메타데이터 구성요소를 포함하고, 상기 메타데이터 구성요소는:
    변경할 수 없는 저장소 상에 메타데이터를 저장하고 - 상기 메타데이터는 상기 데이터베이스에 대한 상기 테이블 데이터에 대한 정보를 포함하고, 상기 메타데이터는 메타데이터 파일에 저장됨 -;
    상기 테이블 데이터에 레코드를 추가하는 것에 응답하여, 상기 추가된 레코드를 가지는 새로운 테이블 데이터 파일을 생성하고 상기 추가된 레코드를 가지는 상기 새로운 테이블 데이터 파일의 상기 생성을 나타내는 대응하는 새로운 메타데이터 파일을 생성하고;
    상기 테이블 데이터로부터 레코드를 삭제하는 것에 응답하여, 상기 삭제된 레코드가 저장되었던 테이블 데이터 파일을 삭제하고, 상기 삭제된 레코드가 저장되었던 상기 삭제된 테이블 데이터 파일에 대응하며 상기 삭제된 레코드를 포함하지 않는 새로운 테이블 데이터 파일을 생성하고, 상기 삭제된 레코드가 저장되었던 상기 테이블 데이터 파일의 상기 삭제 및 상기 삭제된 레코드가 저장되었던 상기 삭제된 테이블 데이터 파일에 대응하며 상기 삭제된 레코드를 포함하지 않는 상기 새로운 테이블 데이터 파일의 상기 생성을 나타내는 새로운 메타데이터 파일을 생성하도록 구성되는, 데이터베이스 시스템.
  32. 제31항에 있어서, 변경 가능한 저장소에 상기 메타데이터에 대한 정보를 저장하기 위한 메타데이터 정보 구성요소를 더 포함하고, 상기 메타데이터에 정보 구성요소는 키-값 저장소에 상기 메타데이터에 대한 상기 정보를 저장하며, 상기 메타데이터에 대한 상기 정보는 상기 테이블 데이터에 대한 버전을 포함하고 상기 버전에 대응하는 메타데이터를 포함하는 하나 이상의 메타데이터 파일을 나타내는, 데이터베이스 시스템.
  33. 삭제
  34. 제31항에 있어서, 두 개 이상의 오래된 메타데이터 파일로부터 통합된 메타데이터 파일로 메타데이터를 통합하도록 구성된 통합 구성요소를 더 포함하고, 상기 통합된 메타데이터 파일은 상기 두 개 이상의 오래된 메타데이터 파일에 나타난 상기 테이블 데이터의 변경을 반영하는 메타데이터를 포함하는, 데이터베이스 시스템.
  35. 제34항에 있어서, 상기 통합 구성요소는 하나 이상의 메타데이터 파일 버전을 저장하고, 상기 메타데이터 파일 버전은 통합 이전의 버전 및 통합 이후의 버전에 대응하는 메타데이터 파일을 나타내는, 데이터베이스 시스템.
  36. 제31항에 있어서, 질의를 수행하는데 필요한 테이블 데이터 파일의 스캔 세트를 결정하도록 구성된 스캔 세트 구성요소를 더 포함하고, 상기 스캔 세트 구성요소는 상기 변경할 수 없는 저장소로부터 상기 질의에 대응하는 복수의 캐시되지 않은 메타데이터 파일을 병렬로 검색하는, 데이터베이스 시스템.
  37. 제36항에 있어서, 스캔 세트 구성요소는 제2 메타데이터 파일이 완전히 다운로드되기 전에 제1 메타데이터 파일을 판독하기 시작하며, 상기 복수의 캐시되지 않은 메타데이터 파일은 상기 제1 메타데이터 파일 및 상기 제2 메타데이터 파일을 포함하는, 데이터베이스 시스템.
  38. 제31항에 있어서, 상기 메타데이터 구성요소는 상기 메타데이터를 열 단위 포맷으로 저장하고, 상기 데이터베이스 시스템은:
    특정한 열에 대한 메타데이터의 독립적인 암호 해독 및 판독을 허용하기 위해 상기 메타데이터를 열 단위로 암호화하기 위한 암호화 구성요소; 및
    상기 메타데이터가 변경되었는지를 결정하기 위해 상기 메타데이터의 열의 해시를 저장하고, 상기 저장된 해시와 컴퓨팅된 해시를 비교하기 위한 해시 구성요소를 더 포함하는, 데이터베이스 시스템.
  39. 하나 이상의 프로세서에 의해 실행될 때, 상기 프로세서가:
    데이터베이스에 대한 테이블 데이터를 저장하는 것 - 상기 테이블 데이터는 하나 이상의 데이터베이스 테이블의 행 및 열에서의 정보를 포함하고, 상기 테이블 데이터는 테이블 데이터 파일에 저장됨 -;
    변경할 수 없는 저장소 상에 메타데이터를 저장하는 것 - 상기 메타데이터는 상기 데이터베이스에 대한 상기 테이블 데이터에 대한 정보를 포함하고, 상기 메타데이터는 메타데이터 파일에 저장됨 -;
    상기 테이블 데이터에 레코드를 추가하는 것에 응답하여, 상기 추가된 레코드를 가지는 새로운 테이블 데이터 파일을 생성하고 상기 추가된 레코드를 가지는 상기 새로운 테이블 데이터 파일의 상기 생성을 나타내는 대응하는 새로운 메타데이터 파일을 생성하는 것; 및
    상기 테이블 데이터로부터 레코드를 삭제하는 것에 응답하여, 상기 삭제된 레코드가 저장되었던 테이블 데이터 파일을 삭제하고, 상기 삭제된 레코드가 저장되었던 상기 삭제된 테이블 데이터 파일에 대응하며 상기 삭제된 레코드를 포함하지 않는 새로운 테이블 데이터 파일을 생성하고, 상기 삭제된 레코드가 저장되었던 상기 테이블 데이터 파일의 상기 삭제 및 상기 삭제된 레코드가 저장되었던 상기 삭제된 테이블 데이터 파일에 대응하며 상기 삭제된 레코드를 포함하지 않는 상기 새로운 테이블 데이터 파일의 상기 생성을 나타내는 새로운 메타데이터 파일을 생성하는 것을 하게 하는 명령어를 저장하는, 컴퓨터 판독가능 저장 매체.
  40. 삭제
  41. 삭제
  42. 제39항에 있어서, 상기 메타데이터는 상기 테이블 데이터를 포함하는 상기 테이블 데이터 파일에 대한 파일 정보를 더 포함하고, 상기 파일 정보는 파일 이름 및 저장 위치 중 하나 이상을 포함하는, 컴퓨터 판독가능 저장 매체.
  43. 제39항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 상기 변경할 수 없는 저장소를 포함하는 클라우드 저장소 자원 상에 저장함으로써 상기 메타데이터를 저장하게 하는, 컴퓨터 판독가능 저장 매체.
  44. 제39항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 변경 가능한 저장소에 상기 메타데이터에 대한 정보를 저장하는 것을 더 하게 하는, 컴퓨터 판독가능 저장 매체.
  45. 제44항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 키-값 저장소에 상기 메타데이터에 대한 상기 정보를 저장하게 하는, 컴퓨터 판독가능 저장 매체.
  46. 제44항에 있어서, 상기 메타데이터에 대한 상기 정보는 버전을 나타내고 상기 버전에 대응하는 메타데이터를 포함하는 하나 이상의 메타데이터 파일을 나타내는 정보를 포함하는, 컴퓨터 판독가능 저장 매체.
  47. 삭제
  48. 삭제
  49. 삭제
  50. 제39항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 두 개 이상의 오래된 메타데이터 파일을 통합된 메타데이터 파일로 메타데이터를 통합하는 것을 더 하게 하는, 컴퓨터 판독가능 저장 매체.
  51. 제50항에 있어서, 상기 통합된 메타데이터 파일은 상기 두 개 이상의 오래된 메타데이터 파일에 나타난 상기 테이블 데이터의 변경을 반영하는 메타데이터를 포함하는, 컴퓨터 판독가능 저장 매체.
  52. 제50항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 하나 이상의 메타데이터 파일 버전을 저장하는 것을 더 하게 하고, 상기 메타데이터 파일 버전은 통합 이전의 버전 및 통합 이후의 버전에 대응하는 메타데이터 파일을 나타내는, 컴퓨터 판독가능 저장 매체.
  53. 제50항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 상기 두 개 이상의 오래된 메타데이터 파일을 삭제하는 것을 더 하게 하는, 컴퓨터 판독가능 저장 매체.
  54. 제50항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 상기 통합된 메타데이터 파일에서 메타데이터에 의해 참조되지 않는 하나 이상의 테이블 데이터 파일을 삭제하는 것을 더 하게 하는, 컴퓨터 판독가능 저장 매체.
  55. 제39항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가:
    상기 테이블 데이터를 포함하는 데이터베이스에 관련된 질의를 수신하는 것; 및
    상기 변경할 수 없는 저장소로부터 상기 질의에 대응하는 복수의 캐시되지 않은 메타데이터 파일을 병렬로 검색하는 것을 더 하게 하는, 컴퓨터 판독가능 저장 매체.
  56. 제55항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 상기 질의에 대응하는 메타데이터 파일을 기초로 테이블 데이터 파일의 스캔 세트를 결정하는 것을 더 하게 하고, 상기 명령어는 상기 하나 이상의 프로세서가 제2 메타데이터 파일이 완전히 다운로드되기 전에 제1 메타데이터 파일을 판독함으로써 상기 스캔 세트를 결정하게 하고, 상기 복수의 캐시되지 않은 메타데이터 파일은 상기 제1 메타데이터 파일 및 상기 제2 메타데이터 파일을 포함하는, 컴퓨터 판독가능 저장 매체.
  57. 제56항에 있어서, 상기 스캔 세트는 상기 질의를 수행하는데 필요한 하나 이상의 테이블 데이터 파일을 나타내는, 컴퓨터 판독가능 저장 매체.
  58. 제39항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 상기 메타데이터를 열 단위 포맷으로 저장함으로써 상기 메타데이터를 저장하게 하는, 컴퓨터 판독가능 저장 매체.
  59. 제58항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 특정 열에 대한 메타데이터의 독립적인 암호 해독 및 판독을 허용하기 위해 상기 메타데이터를 열 단위로 암호화하는 것을 더 하게 하는, 컴퓨터 판독가능 저장 매체.
  60. 제58항에 있어서, 상기 명령어는 상기 하나 이상의 프로세서가 상기 메타데이터가 변경되었는지를 결정하기 위해 메타데이터의 열의 해시를 저장하는 것 및 상기 저장된 해시와 컴퓨팅된 해시를 비교하는 것을 더 하게 하는, 컴퓨터 판독가능 저장 매체.
KR1020207015386A 2017-11-14 2018-11-14 변경할 수 없는 저장소 내의 데이터베이스 메타데이터 KR102461943B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227037740A KR102566416B1 (ko) 2017-11-14 2018-11-14 변경할 수 없는 저장소 내의 데이터베이스 메타데이터

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/812,892 US10713238B2 (en) 2017-11-14 2017-11-14 Database metadata in immutable storage
US15/812,892 2017-11-14
PCT/US2018/060922 WO2019099446A1 (en) 2017-11-14 2018-11-14 Database metadata in immutable storage

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227037740A Division KR102566416B1 (ko) 2017-11-14 2018-11-14 변경할 수 없는 저장소 내의 데이터베이스 메타데이터

Publications (2)

Publication Number Publication Date
KR20200104856A KR20200104856A (ko) 2020-09-04
KR102461943B1 true KR102461943B1 (ko) 2022-11-03

Family

ID=66431330

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227037740A KR102566416B1 (ko) 2017-11-14 2018-11-14 변경할 수 없는 저장소 내의 데이터베이스 메타데이터
KR1020207015386A KR102461943B1 (ko) 2017-11-14 2018-11-14 변경할 수 없는 저장소 내의 데이터베이스 메타데이터

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227037740A KR102566416B1 (ko) 2017-11-14 2018-11-14 변경할 수 없는 저장소 내의 데이터베이스 메타데이터

Country Status (6)

Country Link
US (7) US10713238B2 (ko)
EP (1) EP3710957A4 (ko)
KR (2) KR102566416B1 (ko)
CN (1) CN111492354A (ko)
CA (1) CA3082554C (ko)
WO (1) WO2019099446A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713238B2 (en) 2017-11-14 2020-07-14 Snowflake Inc. Database metadata in immutable storage
US10528556B1 (en) * 2017-12-31 2020-01-07 Allscripts Software, Llc Database methodology for searching encrypted data records
US10528557B1 (en) * 2017-12-31 2020-01-07 Allscripts Software, Llc Database methodology for searching encrypted data records
US11080433B2 (en) * 2018-04-29 2021-08-03 Cryptowerk Corp. Cryptographic data storage
JP6614280B1 (ja) * 2018-06-05 2019-12-04 富士通株式会社 通信装置および通信方法
US11023419B2 (en) * 2018-08-13 2021-06-01 Sap Se Folder key management
US11232095B2 (en) * 2018-10-04 2022-01-25 Micro Focus Llc Composite metadata objects for database systems
US11573927B1 (en) 2018-10-31 2023-02-07 Anaplan, Inc. Method and system for implementing hidden subscriptions in a distributed computation system
US11475003B1 (en) 2018-10-31 2022-10-18 Anaplan, Inc. Method and system for servicing query requests using dataspaces
US11281683B1 (en) 2018-10-31 2022-03-22 Anaplan, Inc. Distributed computation system for servicing queries using revisions maps
US11580105B2 (en) 2018-10-31 2023-02-14 Anaplan, Inc. Method and system for implementing subscription barriers in a distributed computation system
US11481378B1 (en) * 2018-10-31 2022-10-25 Anaplan, Inc. Method and system for servicing query requests using document-based metadata
US11354324B1 (en) 2018-10-31 2022-06-07 Anaplan, Inc. Method and system for servicing query requests using revisions maps
US11347714B2 (en) 2018-11-06 2022-05-31 Snowflake Inc. Tracking changes in database data
US11700251B1 (en) * 2020-06-17 2023-07-11 Cyber Sonata, LLC Modification of device behavior for use in secure networking
US11567921B2 (en) * 2021-03-31 2023-01-31 Microsoft Technology Licensing, Llc Rowgroup consolidation with global delta accumulation and versioning in distributed systems
US11892910B2 (en) 2021-06-09 2024-02-06 EMC IP Holding Company LLC System and method for instant access of data in file based backups in a backup storage system using metadata files
US11853444B2 (en) 2021-09-27 2023-12-26 EMC IP Holding Company LLC System and method for securing instant access of data in file based backups in a backup storage system using metadata files
US12007849B2 (en) 2021-09-27 2024-06-11 EMC IP Holding Company LLC System and method for securing instant access of data in file based backups in a backup storage system using metadata files
KR20240040922A (ko) 2022-09-22 2024-03-29 삼성에스디에스 주식회사 개선된 처리 성능을 가지는 데이터 컴팩션 방법, 장치, 시스템 및 컴퓨터 프로그램
KR102612346B1 (ko) * 2022-11-18 2023-12-11 (주)위세아이텍 시계열 데이터 활용을 위한 메타데이터 카탈로그 시스템 및 방법

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020133668A1 (en) 1999-01-15 2002-09-19 Sherman David L. Memory device search system and method
US6789156B1 (en) 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US20080082834A1 (en) * 2006-09-29 2008-04-03 Protegrity Corporation Meta-complete data storage
US20080206297A1 (en) 2007-02-28 2008-08-28 Roeder Ryan K Porous composite biomaterials and related methods
US20140149656A1 (en) * 2007-01-26 2014-05-29 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory processor
US20140279915A1 (en) 2013-03-15 2014-09-18 Cloudendure, Ltd. System and method for maintaining a copy of a cloud-based computing environment and restoration thereof
US20150317328A1 (en) * 2011-12-02 2015-11-05 International Business Machines Corporation Managing redundant immutable files using deduplication in storage clouds
US9552242B1 (en) 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8005792B2 (en) 2004-05-14 2011-08-23 Oracle International Corporation System and method for managing versions of metadata
US7480654B2 (en) * 2004-12-20 2009-01-20 International Business Machines Corporation Achieving cache consistency while allowing concurrent changes to metadata
US20060224626A1 (en) * 2005-04-04 2006-10-05 Anand Lakshminath Versioned file group repository
US20070208780A1 (en) * 2006-03-02 2007-09-06 Anglin Matthew J Apparatus, system, and method for maintaining metadata for offline repositories in online databases for efficient access
US8601467B2 (en) 2006-10-03 2013-12-03 Salesforce.Com, Inc. Methods and systems for upgrading and installing application packages to an application platform
US8145606B2 (en) 2007-04-20 2012-03-27 Sap Ag System, method, and software for enforcing information retention using uniform retention rules
CN100478959C (zh) * 2007-05-30 2009-04-15 北京航空航天大学 嵌入式数据库的存储管理方法
US8775647B2 (en) 2007-12-10 2014-07-08 Deluxe Media Inc. Method and system for use in coordinating multimedia devices
WO2011075610A1 (en) * 2009-12-16 2011-06-23 Renew Data Corp. System and method for creating a de-duplicated data set
CN102035881B (zh) * 2010-11-19 2013-01-16 清华大学 一种云端存储系统的数据缓存方法
US8635187B2 (en) * 2011-01-07 2014-01-21 Symantec Corporation Method and system of performing incremental SQL server database backups
CN103023982B (zh) * 2012-11-22 2015-04-29 中国人民解放军国防科学技术大学 一种云存储客户端的低延迟元数据访问方法
US9720787B2 (en) * 2013-01-11 2017-08-01 Commvault Systems, Inc. Table level database restore in a data storage system
US10298545B2 (en) 2013-09-12 2019-05-21 International Business Machines Corporation Secure processing environment for protecting sensitive information
US9633051B1 (en) * 2013-09-20 2017-04-25 Amazon Technologies, Inc. Backup of partitioned database tables
US9361187B2 (en) * 2013-11-04 2016-06-07 Quantum Corporation File system metadata capture and restore
US9792063B2 (en) * 2014-01-15 2017-10-17 Intel Corporation Deduplication-based data security
CN104850565B (zh) * 2014-02-19 2018-05-22 北京京东尚科信息技术有限公司 一种基于k-v存储系统的元数据管理方法
CN104156278B (zh) * 2014-08-01 2017-06-27 江苏大学 一种文件版本控制系统及其方法
CN104516945A (zh) * 2014-11-18 2015-04-15 国家电网公司 一种基于关系数据库的hdfs元数据存储方法
US10255309B2 (en) 2014-11-25 2019-04-09 Sap Se Versioned insert only hash table for in-memory columnar stores
CN104573068A (zh) * 2015-01-23 2015-04-29 四川中科腾信科技有限公司 一种基于大数据的信息处理方法
US9881176B2 (en) 2015-06-02 2018-01-30 ALTR Solutions, Inc. Fragmenting data for the purposes of persistent storage across multiple immutable data structures
US10133761B2 (en) * 2015-12-02 2018-11-20 Quantum Corporation Metadump spatial database system
CN105678189B (zh) * 2016-01-15 2018-10-23 上海海事大学 加密数据文件存储和检索系统及方法
US10713238B2 (en) 2017-11-14 2020-07-14 Snowflake Inc. Database metadata in immutable storage

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020133668A1 (en) 1999-01-15 2002-09-19 Sherman David L. Memory device search system and method
US6789156B1 (en) 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US20080082834A1 (en) * 2006-09-29 2008-04-03 Protegrity Corporation Meta-complete data storage
US20140149656A1 (en) * 2007-01-26 2014-05-29 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory processor
US20080206297A1 (en) 2007-02-28 2008-08-28 Roeder Ryan K Porous composite biomaterials and related methods
US20150317328A1 (en) * 2011-12-02 2015-11-05 International Business Machines Corporation Managing redundant immutable files using deduplication in storage clouds
US20140279915A1 (en) 2013-03-15 2014-09-18 Cloudendure, Ltd. System and method for maintaining a copy of a cloud-based computing environment and restoration thereof
US9552242B1 (en) 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space

Also Published As

Publication number Publication date
CN111492354A (zh) 2020-08-04
EP3710957A1 (en) 2020-09-23
CA3082554A1 (en) 2019-05-23
US11080270B2 (en) 2021-08-03
KR20200104856A (ko) 2020-09-04
US10713238B2 (en) 2020-07-14
US10977241B2 (en) 2021-04-13
EP3710957A4 (en) 2021-08-18
WO2019099446A1 (en) 2019-05-23
US11048687B2 (en) 2021-06-29
US20200117654A1 (en) 2020-04-16
US10997157B2 (en) 2021-05-04
KR20220149635A (ko) 2022-11-08
US20200233856A1 (en) 2020-07-23
US10860573B2 (en) 2020-12-08
KR102566416B1 (ko) 2023-08-14
US20200364208A1 (en) 2020-11-19
US20200327115A1 (en) 2020-10-15
US20210073207A1 (en) 2021-03-11
US10628410B1 (en) 2020-04-21
CA3082554C (en) 2024-01-16
US20210073206A1 (en) 2021-03-11
US20190147078A1 (en) 2019-05-16

Similar Documents

Publication Publication Date Title
KR102461943B1 (ko) 변경할 수 없는 저장소 내의 데이터베이스 메타데이터
US10997212B2 (en) Storing database metadata in multiple levels
US11615067B2 (en) Transactional stores of change tracking data
US11636114B2 (en) Multi-level data for database systems

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right