CN111492354A - 不可变存储装置中的数据库元数据 - Google Patents
不可变存储装置中的数据库元数据 Download PDFInfo
- Publication number
- CN111492354A CN111492354A CN201880082019.1A CN201880082019A CN111492354A CN 111492354 A CN111492354 A CN 111492354A CN 201880082019 A CN201880082019 A CN 201880082019A CN 111492354 A CN111492354 A CN 111492354A
- Authority
- CN
- China
- Prior art keywords
- metadata
- file
- table data
- files
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 196
- 238000000034 method Methods 0.000 claims abstract description 84
- 238000012217 deletion Methods 0.000 claims abstract description 8
- 230000037430 deletion Effects 0.000 claims abstract description 8
- 230000008859 change Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 7
- OWZPCEFYPSAJFR-UHFFFAOYSA-N 2-(butan-2-yl)-4,6-dinitrophenol Chemical compound CCC(C)C1=CC([N+]([O-])=O)=CC([N+]([O-])=O)=C1O OWZPCEFYPSAJFR-UHFFFAOYSA-N 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 24
- 238000013500 data storage Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 20
- 238000012986 modification Methods 0.000 description 14
- 230000004048 modification Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000007726 management method Methods 0.000 description 5
- 241001057495 Neda Species 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000001444 catalytic combustion detection Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000004557 technical material Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/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
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- 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
技术领域
本公开涉及用于数据库的系统、方法和设备,并且更具体地说,涉及使用非可变存储服务来存储和维护元数据。
背景
数据库广泛用于计算应用中的数据存储和访问。数据库可以包括一个或更多个表,该一个或更多个表包括或引用可以使用查询来读取、修改、或删除的数据。数据库可以在一个或更多个表中存储小的或极大的数据集。诸如通过网站或应用程序接口(API),该数据可被组织中的各个用户访问,或者甚至可用于服务公共用户。计算资源和存储资源二者及它们的底层架构在实现理想的数据库性能方面都可以发挥重要作用。
附图简述
参考以下附图对本公开的非限制性和非穷举性实施例进行描述,其中除非另有说明,否则在各个图中类似的参考数字指代类似部件。
图1是图示根据本文描述的系统和方法的示例实施例的具有在文件中存储的数据的表和相关联的元数据的框图。
图2是图示根据本文描述的系统和方法的示例实施例的在向表添加之后图1的表和元数据的框图。
图3是图示根据本文描述的系统和方法的示例实施例的在向表添加和从表中删除之后的图2的表和元数据的框图。
图4是图示根据本文描述的系统和方法的示例实施例的用于数据库系统的处理平台的框图。
图5是图示根据一个实施例的数据库服务管理器的部件的框图。
图6是图示根据本文描述的系统和方法的示例实施例的在不可变存储装置中的具有在文件中存储的数据的表和相关联的元数据文件的框图。
图7是图示根据本文描述的系统和方法的示例实施例的在表变化之后的图6的表和元数据的框图。
图8是图示根据本文描述的系统和方法的示例实施例的元数据文件的合并的框图。
图9是图示根据一个实施例的配置和元数据管理器的部件的框图。
图10是图示根据一个实施例的用于管理数据库系统中的元数据的方法的示意性流程图。
图11是图示根据一个实施例的用于计算扫描集的方法的示意性流程图。
图12是描绘与本文公开的过程和系统的至少一个实施例一致的示例计算设备的框图。
详细描述
本公开涉及用于使用非可变存储服务(诸如云存储资源)存储以及维护可变元数据的系统、方法、和设备。数据库系统存储和维护大量元数据。该元数据描述在客户数据库表中存储的数据,但实际上不是存储的表数据。元数据可以变得非常大,尤其是在有许多客户的大型数据库表时。当前的数据库系统在处理大量元数据方面存在严重的局限性。
当前的数据库系统将元数据存储在可变存储设备和服务中,包括主存储器、文件系统、和键值储存器。这些设备和服务允许元数据就地更新数据。如果数据记录发生变化了,则可以用新的信息进行更新。旧的信息被覆盖。这允许数据库轻松维护可变元数据:通过就地更新元数据。
然而,这些存储设备和服务有局限性。局限性至少有两方面。首先,像主存储器和文件系统这样的可变存储设备在存储容量方面有一个硬限制。如果元数据的大小超过了这些限制,就不可能在此存储更多的元数据。其次,当读取大量元数据时,像键值储存器这样的可变存储服务性能很差。使用范围扫描来执行读取数据,这需要很长时间才能完成。实际上,在大规模部署中,范围扫描可能花费很多分钟或甚至接近一小时才能完成。
这些局限性使得不可能在现有的可变存储设备和服务上存储大量元数据。申请人已经开发了用于改进元数据存储和管理的系统和方法,包括将元数据存储在不可变(非可变)存储装置中。根据一个实施例,一种用于存储或管理数据库的方法,包括存储数据库的表数据。表数据包括一个或更多个数据库表的行和列中的信息。该方法包括在不可变存储装置上存储元数据。元数据包括关于数据库的表数据的信息,但可能不包括表数据。
如本文所使用的,不可变或非可变存储装置包括数据不能或不允许被就地覆盖或更新的存储装置。例如,对位于存储介质的单元或区域中的数据的变化可以作为新文件被存储在存储介质的带时间戳的不同的单元或区域中。可变存储装置可以包括数据被就地覆盖或更新或被允许被就地覆盖或更新的存储装置。例如,当与存储介质的给定单元或区域相关的数据发生变化时,存储介质的该给定单元或区域中的数据可以被覆盖。
在一个实施例中,元数据在云中的非可变存储服务上得到存储和维护。这些存储服务可包括,例如,AmazonMicrosoft Azure Blob和Google Cloud这些服务中的许多服务不允许就地更新数据(即,非可变或不可变)。数据文件只可以被添加或删除,但不能更新。在一个实施例中,在这些服务上存储和维护元数据要求:对于元数据中的每一个变化,元数据文件被添加到存储服务。这些元数据文件可以在后台周期性地合并成更大的“压缩”或合并的元数据文件。元数据文件版本可以被存储,以指示对应于压缩或合并版本的元数据文件与预压缩或预合并版本的元数据文件。在一个实施例中,在后台合并可变元数据以创建新版本的元数据文件,可以允许删除旧的元数据文件和旧的数据文件。
通过使用不可变存储装置(诸如云存储装置),实施例允许存储容量没有硬限制。在云中使用存储服务允许几乎无限量的元数据。读取大量元数据可能会快得多,因为元数据文件可以被并行下载,包括文件的预取。元数据文件也可以被缓存在本地文件系统中,使得它们不会被下载超过一次。在实际使用场景和测试中,申请人已经观察到,与从像键值储存器那样的可变存储装置中读取相同的元数据信息相比,在从云中的存储服务中读取元数据时,有200倍的性能提升。
下面提供了与本公开实施例一致的系统和方法的详细描述。虽然描述了几个实施例,但是应当理解,本公开不限于任何一个实施例,而是涵盖许多替代、修改、和等同物。另外,尽管在以下描述中阐述了许多具体细节,以便提供对本文所公开实施例的全面理解,但是一些实施例可以在没有这些细节中的一些或全部的情况下被实践。此外,为了清楚起见,相关领域中已知的某些技术材料没有详细描述,以避免不必要地模糊本公开。
图1-3图示了当表数据存储于不可变存储装置(诸如云资源)中并且元数据存储于可变存储装置(诸如本地键值储存器)中时数据库系统的示例操作。图6-8图示了当表数据和元数据二者都存储在不可变存储装置中时数据库系统的示例操作。在一个示例实施例中,数据库表中的数据被存储在云中的文件中。围绕表和文件的元数据被存储在元数据储存器中。元数据储存器可以是键值储存器。其他示例系统可以使用其他技术(诸如主存储器存储装置或文件系统存储装置)来存储元数据。
图1示出了具有存储在文件中的数据的表102和相关联的元数据。表102是存储在云存储装置104中的两个物理文件F1和F2中的“用户”表。表102包括“uid”列和“名字”列。文件F1、F2包括表102的行和列的数据(例如,字段值)。具体而言,文件F1包括前三行的表数据(即,uid1、2、和3,以及名字Allison、Max、和Benoit),而文件F2包括后三行的表数据(uid4、5、和6,以及名字Neda、Thierry、和Florian)。在一个实施例中,每个文件F1和F2以逐列的格式存储数据,其中“uid”列的值在连续块中,而“名字”列的值在相应文件的连续块中。
文件元数据被存储在元数据存储装置106内。文件元数据包含表版本和关于每个表数据文件(本例中为F1和F2)的信息。元数据存储装置106可以包括可变存储装置(可以被覆盖或就地写入的存储装置),诸如本地文件系统、系统、存储器等。
在一个实施例中,文件元数据由两个数据集组成:表版本和文件信息。表版本数据集包括表版本到添加文件和移除文件的列表的映射。文件信息包含关于每个文件的信息,例如,包括文件路径、文件大小、文件密钥id、以及文件中存储的所有行和列的概要。在所示的状态中,表版本V1指示添加了文件F1和F2(V1->添加:F1,F2)。文件信息显示关于Fl的信息(Fl->"云://路径/至/文件1",fileSize:16MB,fileKeyId:3452,行和列的概要等)和关于F2的信息(F2->"//路径/至/文件2",fileSize:11MB,fileKeyId:7965,行和列的概要等)。
表的每次修改都会创建新文件和新文件元数据。向表中的插入创建新文件。从表中删除移除文件,以及如果并非文件中的所有行被删除,则可能会用表中的剩余行添加新文件。更新移除文件,并且用其中的行包含更新记录的新文件替换它们。
图2图示了在“用户”表102中插入记录之后的图1的表和元数据。举例来说,当将记录(7,“Difei”)插入“用户”表时,数据仓库在云存储装置104中创建包含该记录的新文件F3。此外,元数据存储装置106中的文件元数据已经被更新,以包括新的表版本V2和关于F3的信息。表版本V2记录了文件F3被添加。文件信息包括文件路径、帐户、创建的时间戳、文件大小、以及存储文件F3的所有行和列的概要。
图3图示了在“用户”表102中删除记录之后的图2的表和元数据。例如,当从“用户”表中删除记录(4,“Neda”)时,仓库可以创建仅包含两个记录(5,“Thierry”)和(6,“Florian”)的新的文件F4。文件F2可以从云中被删除。文件F4可能与以前的文件F2相同,不同之处在于uid为“4”的行已被删除。新文件F4被存储在云中,且文件元数据用新的表版本V3和关于文件F4的文件信息进行更新。V3指示文件F4已被添加,并且文件F2已被删除。
当从表中检索数据时,数据仓库可以计算需要被读取的所有文件的扫描集。扫描集是除已被移除的文件之外的所有已添加文件的聚合。可以使用表版本来计算扫描集。当在当前时间从表中选择数据时,扫描集是使用直到最新表版本的所有表版本计算的。当在较早的时间从表中选择数据时,扫描集是使用直到在指定时间的当前表版本的所有表版本来计算的。这种针对任何给定时间计算扫描集的技术在本文中可以被称为“时间旅行(timetravel)”。例如,当用户(例如,图4中的用户1 404)在V3被实现之后从图3中的“用户”表中选择数据时,数据库服务管理器(例如,图4中的数据库服务管理器404)使用表版本V1、V2、V3来计算扫描集。扫描集是所有添加的文件F1、F2、F3、F4除删除的文件F2之外的聚合。因此,在当前时间扫描集包含文件F1、F3、F4。
作为另一个示例,当在表版本V2是当前版本时的较早时间选择数据时,使用表版本V1和V2来计算扫描集。扫描集是所有添加的文件F1、F2、F3的聚合。由于没有移除的文件,因此扫描集包含文件F1、F2、F3。在一个实施例中,可以使用文件信息精简扫描集。例如,文件的行和列的概要可以被用于从扫描集中精简文件,因为计算查询结果将不需要这些文件的内容。
上述在元数据存储装置106中存储文件元数据的示例方法具有局限性。它占用太多空间,且导致性能缓慢。实际上,数亿个文件的文件元数据会导致兆兆字节的文件元数据。这导致在计算扫描集和精简扫描集时性能缓慢。本文公开的实施例克服了这些局限性中的一个或更多个。在(不可变的)云存储装置上存储和维护这种(可变的)元数据允许数据库系统具有几乎无限的存储容量和更快的元数据检索。
在一个实施例中,元数据可以被存储在不可变存储装置中的元数据文件中。在一个实施例中,系统可以针对数据库表的每次修改将元数据文件写入云存储装置。在一个实施例中,系统可以下载并读取元数据文件,以计算扫描集。元数据文件可以被并行下载,以改进扫描集计算。在一个实施例中,系统可以周期性地在后台合并元数据文件。在一个实施例中,可以包括性能改进,包括预取、缓存、柱状布局等。此外,包括加密和完整性检查在内的安全改进也可以通过具有柱状布局的元数据文件来实现。
转到图4,示出了图示根据一个实施例的用于提供数据库服务的处理平台400的框图。处理平台400包括可由多个用户404、406、和408访问的数据库服务管理器402。数据库服务管理器402在本文中也可以被称为资源管理器或全局服务。在一些实现方式中,数据库服务管理器402可以支持希望访问处理平台400的数据或服务的任何数量的用户。例如,用户404-408可以包括提供数据存储以及检索查询和请求的终端用户、管理本文所描述的系统和方法的系统管理员、与数据库交互的软件应用、以及与数据库服务管理器402交互的其它部件/设备。
数据库服务管理器402可以提供支持处理平台400内的系统和部件的操作的各种服务和功能。数据库服务管理器402可以访问与存储在整个数据处理平台400的数据相关联的存储的元数据。数据库服务管理器402可以使用元数据来优化用户查询。在一些实施例中,元数据包括存储在远程数据存储系统中的数据以及可从本地缓存(例如,在执行平台412的一个或更多个集群内的缓存)获得的数据的概要。另外,元数据可以包括关于数据是如何在远程数据存储系统和本地缓存中进行组织的信息。元数据允许系统和服务确定是否需要在不从存储设备加载或访问实际数据的情况下处理一段数据。
作为数据处理平台400的一部分,元数据可以在使用数据操纵语言(DML)对数据做出变化时被收集,所述变化可以通过任何DML语句进行。操纵数据的示例可以包括但不限于选择、更新、变化、合并数据、以及将数据插入到表中。作为处理平台400的一部分,文件可以被创建,并且元数据可以在每个文件和每个列的基础上进行收集。这种元数据的收集可以在数据获取(ingestion)期间执行,或者元数据的收集可以在数据被获取(ingested)或加载之后作为单独的进程被执行。在实现方式中,元数据可以包括不同值的数量(a numberof distinct values);空值的数量(a number of null values);以及每个文件的最小值和最大值。在实现方式中,元数据可以进一步包括字符串长度信息和字符串中的字符范围。
在一个实施例中,元数据的至少一部分被存储在不可变存储装置中。例如,元数据可以与表数据一起存储在存储平台414上。在一个实施例中,可以为元数据分配和使用与用于表数据的云存储资源相同的或单独的云存储资源。在一个实施例中,元数据可以存储在本地不可变存储装置中。在一个实施例中,关于不可变存储装置中的元数据的信息或者关于存储在不可变存储装置中的元数据文件的信息被存储在可变存储装置410中。关于元数据的信息可以被引用来定位和访问存储在不可变存储装置中的元数据。在一个实施例中,具有元数据存储装置的系统可以被重构成使得元数据存储装置改为用来存储关于位于不可变存储装置中的元数据文件的信息。
数据库服务管理器402还与执行平台412通信,执行平台412提供执行各种数据存储和数据检索操作的计算资源。执行平台412可以包括一个或更多个计算集群。执行平台412与作为存储平台414的一部分的一个或更多个数据存储设备416、418、和420通信。尽管在图4中示出了三个数据存储设备416、418、和420,但是执行平台412能够与任何数量的数据存储设备通信。在一些实施例中,数据存储设备416、418、和420是位于一个或更多个地理位置的基于云的存储设备。例如,数据存储设备416、418、和420可以是公共云基础设施或私有云基础设施、或任何其它方式的分布式存储装置系统的一部分。数据存储设备416、418、和420可以包括硬盘驱动(HDD)、固态驱动(SSD)、存储集群、或任何其它数据存储技术。另外,存储平台414可以包括分布式文件系统(诸如Hadoop分布式文件系统(HDFS))、对象存储系统等。
在一些实施例中,数据库服务管理器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处理本文所描述的系统的认证和授权任务。密钥管理器504管理在认证和授权任务期间使用的密钥的存储和认证。请求处理服务508管理接收的数据存储请求和数据检索请求。管理控制台服务510支持管理员和其他系统管理人员对各种系统和进程的访问。
数据库服务管理器402还包括SQL编译器512、SQL优化器514和SQL执行器516。SQL编译器512分析SQL查询并为查询生成执行代码。SQL优化器514基于需要被处理的数据确定执行查询的最佳方法。SQL执行器516执行关于由数据库服务管理器402接收的查询的查询代码。查询调度器和协调器518将接收到的查询发送到适当的服务或系统,以用于编译、优化、和调度到执行平台512。虚拟仓库管理器520管理多个虚拟仓库的操作。
此外,数据库服务管理器402包括配置和元数据管理器522,其管理与存储在远程数据存储设备和本地缓存中的数据相关的信息。监视器和工作负荷分析器524监视由数据库服务管理器402执行的进程,并管理任务(例如,工作负荷)在执行平台412中的执行节点和虚拟仓库上的分配。配置和元数据管理器522以及监视器和工作负荷分析器524耦合到数据存储设备526。在一个实施例中,配置和元数据管理器522收集、存储、和管理不可变存储资源中的元数据。在一个实施例中,对元数据的更新导致新文件,并且不就地更新。
如本文所讨论的,元数据文件可以包括包含对数据仓库中的任何数据库表的修改(例如,每次修改)的元数据的文件。对数据库表的修改可以生成一个或更多个元数据文件,通常只是单个元数据文件。在一个实施例中,元数据文件包含以下信息:关于元数据文件的信息,包括版本号;所有添加的表数据文件的列表;已删除的表数据文件列表;以及关于每个添加的表数据文件的信息,包括文件路径、文件大小、文件键id、以及表数据文件中存储的所有行和列的概要。
在一个实施例中,元数据文件的内容可以随时间变化。如果元数据文件的格式或内容变化,则元数据文件的版本号可以被递增。在一个实施例中,元数据储存器(或其他可变数据存储资源)仅存储关于元数据文件(存储在不可变存储装置中)的信息,而不存储关于表数据文件的信息。实际上,存储在元数据储存器(或其他可变存储装置)中的关于元数据文件的信息非常有限,并且可能包含数千个元数据文件的数据。在一个实施例中,多达30,000个元数据文件的信息可以被存储在元数据文件中。这极大地减少了元数据储存器或其他可变存储装置中所需的存储量。
在一个实施例中,系统将元数据文件写入云存储装置,以用于对于数据库表的每次修改(例如,对于表数据文件的修改)。除了添加和删除文件之外,对数据仓库中数据库表的每次修改也会生成一个或更多个元数据文件。通常,修改创建单个元数据文件。但是,如果对表的修改很大(例如,产生非常多文件的对表的插入),可能会导致创建多个元数据文件。将结合图6-12进一步讨论配置和元数据管理器522的进一步操作。
数据库服务管理器402还包括事务管理和访问控制模块528,其管理各个任务和与数据存储请求和数据访问请求的处理相关联的其它活动。例如,事务管理和访问控制模块528提供多个用户或系统对数据的一致的且同步的访问。由于多个用户/系统可以同时访问相同的数据,因此可以同步对数据做出的变化,以确保每个用户/系统都使用当前版本的数据进行工作。事务管理和访问控制模块528提供对在数据库服务管理器402中的单个集中位置处的各种数据处理活动的控制。
图6图示了表602,表602具有图1的存储在云存储装置中的元数据文件。用户的表602被示出为具有存储在云存储装置604内的表数据文件F1和F2中的表数据,类似于图1所示的结构。然而,关于表数据文件的元数据也存储在云存储装置604中的元数据文件MF1中。元数据文件MF1包含添加的文件F1和F2的列表,包括关于这些文件的所有文件信息。例如,先前在图1的实施例中的键值储存器中的文件信息在元数据文件(例如,MF1)中。在图6所示的时间点,元数据文件MF1中没有指示删除的文件。元数据存储装置606仅存储映射到元数据文件MF1的表版本V1和关于元数据文件MF1的信息。关于元数据文件MF1的信息包括MF1的文件路径,并且可以包括更多信息。因此,表数据文件和元数据文件二者都存储在云存储装置中,而关于元数据文件的信息被存储在元数据存储装置606或其他本地和/或可变存储装置中。
图7图示了在添加记录(7,“Difei”)和删除记录(4,“Neda”)之后的图6的表和元数据。第一次修改(插入uid“7”和名字“Difei”)将文件F3和元数据文件MF2存储在云中。MF2列出了添加的文件F3,包括关于F3的所有文件信息。元数据存储装置606用映射到MF2的表版本V2和关于MF2的信息更新。第二次修改(删除uid“4”和名字“Neda”)将文件F4和元数据文件MF3存储在云存储装置604中。MF3列出了添加的表数据文件F4,包括F4的所有文件信息,且还列出了删除的F2的表数据文件。
元数据文件MF1、MF2、和MF3在云存储装置604或不可变存储装置中的存储允许增加元数据存储容量。例如,关于表数据文件F1、F2、F3、和F4的所有元数据在云存储装置604内的元数据文件MF1、MF2、和MF3中被找到。关于元数据文件MF1的、大小要小得多的元数据(关于元数据的信息)被存储在键值储存器、可变存储装置、和/或本地存储装置中。
在一个实施例中,数据仓库计算必须被读取以回答查询的文件的扫描集。使用表版本来计算扫描集。给定表版本的集合,数据仓库从元数据储存器中读取关于对应的元数据文件的信息。然后,其从云中下载元数据文件,并读取添加和删除文件的列表。使用这些列表,其计算扫描集。使用存储在元数据文件中的文件信息(例如,关于行和列的信息),扫描集可以被精简(pruned)。
例如,当在图7所示的时间从“用户”表中选择数据时,使用表版本V1、V2、和V3来计算扫描集。仓库读取关于对应的元数据文件MF1、MF2、和MF3的信息。其从云中下载这些元数据文件。文件可以被并行下载。在一个实施例中,即使其他文件尚未被完全下载,数据库服务管理器402也可以开始读取其中一个文件。从添加的文件F1、F2、F3、和F4的聚合列表中,其移除已删除的文件F2。因此,所得出的扫描集将会是F1、F3、和F4。这些文件(或它们的子部分)可以被用于执行查询的执行节点检索。
在一个实施例中,元数据文件在后台被周期性地合并。元数据文件的合并或“压缩”聚合了所有元数据文件中的所有添加的文件,并从该列表中移除所有删除的文件。合并创建了一个或更多个压缩的元数据文件,该一个或更多个压缩的元数据文件仅包含所得出的添加文件的列表,包括这些文件的所有文件信息。合并的目的有二。首先,许多元数据文件被压缩成小得多的元数据文件集,以便更快地进行下载和读取。其次,一旦旧的元数据文件被移除,则在压缩的元数据文件中不再被引用的文件可以从云中被移除。
元数据文件版本区分不同的元数据文件集。一个元数据文件版本中的压缩文件是先前元数据文件版本的所有元数据文件的合并。新的元数据文件总是被注册在最新的元数据文件版本下。在旧的元数据文件合并后,旧的元数据文件可以从云存储装置中被删除。一旦在压缩文件中未被引用的所有文件在任何元数据文件中不再被引用,则它们就可能被删除。
图8是图示图7中所示的元数据文件的合并的框图。具体地,元数据文件MF1、MF2、和MF3被示出为合并到压缩的元数据文件MF4中。元数据文件MF4仅包含添加的文件F1、F3、F4,这是因为F2在MF3中被删除。MF4还包含F1、F3、和F4的所有文件信息。在一个实施例中,元数据文件版本MF V3被创建,并且MF4被注册在MF V3下。新的元数据文件MF5被注册在最新的元数据文件版本MF V3下。MF5对应于表版本V4(图7中未示出)。表版本V3可以指向MFV1的MF1、MF2、和MF3或指向MF V3的MF4,因为它们将产生完全相同的扫描集。如图所示,对合并的元数据文件MF4的创建允许一个文件执行之前占用三个文件的操作。在一个实施例中,元数据文件版本的指示可以在完成合并之后被存储,使得合并之前的版本仍然可以被确定或被访问。所有后续的表数据的变化都可能基于MF4或后续版本进行反映。因此,如果希望或者如果MF1、MF2、和MF3代表不再需要维护的版本(例如,为了“时间旅行”特征的目的),则可以删除MF1、MF2、和MF3。
构建表版本的扫描集仅使用单个元数据文件版本的元数据文件。要使用的元数据文件版本是小于或等于给定表版本的最大元数据文件版本。例如,构建图7中的表版本V3的扫描集使用的是元数据文件版本V3,因为它是小于或等于V3的最大元数据文件版本。给定图7中的示例,表1提供了在构建给定表版本的扫描集时必须读取的元数据文件的列表:
表1
表版本 | 元数据文件版本 | 元数据文件 | 扫描集 |
V1 | MF V1 | MF1 | F1,F2 |
V2 | MF V1 | MF1,MF2 | F1,F2,F3 |
V3 | MF V3 | MF4 | F1,F3,F4 |
V4 | MF V3 | MF4,MF5 | F3,F4,F5 |
在一个实施例中,元数据文件的合并发生在数据仓库的后台进程中,对用户工作负荷没有任何影响。在计算压缩文件时,可以添加新的元数据文件。只有当压缩文件已上传到云中时,其才可以被用来计算该扫描集。
元数据的不可变存储可以实现各种性能改进。在一个实施例中,元数据文件被预取。例如,当下载元数据文件的集合时,在进程打开元数据文件之前,数据仓库在后台并行下载元数据文件。预取改进了元数据文件的读取时间,因为当进程想要打开元数据文件时,元数据文件可能已经使用预取被下载了。
在一个实施例中,元数据文件被缓存。元数据文件可以被缓存在进程的本地文件系统上。即使元数据文件被许多共享相同文件系统的不同进程读取,元数据文件可只下载一次。如果缓存空间不足,则旧的缓存元数据文件可以从缓存中被删除。在这种情况下,元数据文件可以根据需要再次被下载。
在一个实施例中,元数据文件具有柱状布局(columnar layout)。元数据文件中的文件信息以柱状布局被存储。这意味着元数据文件的格式不是逐行的,而是逐列的。如果进程读取关于元数据文件中一个列的信息,则它只需要读取单个连续的字节块。在一个实施例中,每个字节块使用标准压缩算法(“gzip”)进行压缩。这两种技术都改进了读取性能。
在一些实施例中也实现了安全性改进。在一个实施例中,元数据文件使用单独的文件密钥加密。在元数据文件内,可以使用具有不同起始计数器的AES-CTR模式对列进行单独加密。这允许数据库系统从元数据文件中读取单个列,因为单个列可以被解密,而不需要一次解密整个文件。加密改进了安全性,因为在没有正确的文件密钥的情况下,没有人能读取元数据文件。
为了验证元数据文件没有被更改,系统可以存储在元数据文件中的每列的列散列值。在解密数据之前,系统会将加密列的散列值与该元数据文件的该列的存储的散列值进行比较。如果散列值不匹配,则元数据文件必然已被更改。这改进了安全性,因为对元数据文件的更改被数据库系统检测到。
图9是图示了根据一个实施例的配置和元数据管理器522的部件的示意框图。配置和元数据管理器522可以收集、存储、和管理关于表数据文件的元数据以及关于元数据文件的元数据。配置和元数据管理器522包括表数据部件902、元数据部件904、元数据信息部件906、合并部件908、扫描集部件910、加密部件912、和散列部件914。部件902-914仅作为示例被给出,并且可能不被包括在所有实施例中。事实上,一些实施例可以仅包括部件902-914中的一个部件、或者包括两个或更多个部件的任何组合。例如,所述部件中的一些部件可以位于配置和元数据管理器522之外或与之分离,诸如在数据库服务管理器402或处理平台400之内。此外,部件902-914可以包括硬件、计算机可读指令、或两者的组合,以执行功能并提供本文讨论的结构。
表数据部件902存储数据库的表数据,表数据包括一个或更多个数据库表的行和列中的信息。表数据部件902可以将表数据存储在存储资源内的表数据文件中。示例存储资源包括云存储装置和/或不可变存储装置。在一个实施例中,可以动态分配用于存储表数据文件的存储资源,以适应存储需求的增加或减少。表数据部件902可以通过在远程资源(例如云存储资源或服务)中使数据被存储或更新来管理和存储表数据。
元数据部件904将元数据存储在不可变存储装置上。元数据可以包括关于或描述由表数据部件902存储的数据库的表数据的信息。在一个实施例中,元数据文件可以包括诸如添加的表数据文件或删除的表数据文件的指示的元数据。元数据可以包括表数据文件的文件信息,文件信息包括文件名和存储位置中的一者或更多者。在一个实施例中,元数据可以被存储在与表数据相同的云存储资源上的文件中。在一个实施例中,元数据部件904可以使得元数据在远程云存储装置中以逐列的格式存储在元数据文件中。
元数据部件904还可以收集和管理在不可变存储装置上的元数据文件中的元数据的存储。元数据部件904可以响应于表数据的变化,在不可变存储装置中创建新的元数据文件,而不修改先前的元数据文件。新的元数据文件可以包括指示表数据的变化的元数据。在一个实施例中,新的元数据文件中的元数据指示包括表数据的表数据文件的添加或删除。元数据部件904还可以删除过期的元数据文件。过期的元数据文件可以包括比特定阶段更早的并且在元数据信息部件906存储的元数据信息中未被引用的文件。
元数据信息部件906在可变存储装置中存储和管理关于元数据的信息。关于元数据的信息(关于元数据文件的元数据)可以被存储在本地可变存储装置和/或元数据存储装置(或者之前被称为元数据存储装置的存储装置)中。然而,在一个实施例中,关于元数据的信息仅包括关于元数据文件的信息,而不包括关于表数据文件的元数据。因此,所有表数据元数据都可以位于不可变存储装置中。在一个实施例中,关于元数据的信息可以就地被存储和更新。例如,在一个实施例中,关于元数据的信息被存储在键值储存器中。关于元数据的信息包括指示版本的信息和指示包括对应于该版本的元数据的一个或更多个元数据文件的信息。
合并部件908将来自两个或更多个旧的元数据文件的元数据合并或压缩成合并的元数据文件。在一个实施例中,合并的元数据文件包括反映两个或更多个旧的元数据文件中所指示的表数据变化的元数据。在一个实施例中,合并部件908删除两个或更多个旧的元数据文件。合并部件908可以删除未被合并的元数据文件中的元数据引用的一个或更多个表数据文件。
扫描集部件910可以计算关于查询的扫描集。在一个实施例中,数据库系统可以接收指向包括表数据的数据库的查询。扫描集部件可以检索多个未缓存的元数据文件,或者使另一个部件这样做。元数据文件可以包括对应于查询的元数据文件。在一个实施例中,扫描集部件从不可变存储装置中并行下载元数据文件。在一个实施例中,扫描集部件通过在第二元数据文件被完全下载之前读取第一元数据文件来确定扫描集。这可以改进计算扫描集的速度,因为元数据的处理和下载可以逐个文件地或成块地进行。因此,在数据库系统开始计算扫描集之前,数据库系统不需要等待所有文件下载,它可以在元数据文件(从缓存或不可变存储装置中)被检索时计算扫描集。在一个实施例中,扫描集指示执行查询所需的一个或更多个表数据文件。
加密部件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在第二元数据文件被完全下载之前读取1108第一元数据文件,以确定扫描集。例如,扫描集部件910不需要等到所有元数据文件被下载后才开始计算扫描集,它可以在文件被检索/下载时开始计算扫描集。扫描集可以被提供给执行节点和/或用于检索表数据文件或检索用于处理查询所需的信息。
图12是描绘了示例计算设备1200的框图。在一些实施例中,计算设备1200用于实现本文中所讨论的一个或更多个系统和部件。例如,计算设备1200可以包括配置和元数据管理器522、数据库服务管理器402、处理平台400、和/或本文讨论的任何其他部件或系统,或者是它们的一部分。作为另一个示例,本文讨论的部件、系统、或平台可以包括一个或更多个计算设备1200。此外,计算设备1200可以与本文描述的任何系统和部件交互。相应地,计算设备1200可以用于执行各种过程和任务,诸如本文所讨论的那些过程和任务。计算设备1200可以用作服务器、客户端或任何其它计算实体。计算设备1200可以是各种计算设备中的任何计算设备,诸如,台式计算机、笔记本计算机、服务器计算机、手持计算机、平板电脑等。
计算设备1200包括一个或更多个处理器1202、一个或更多个存储器设备1204、一个或更多个接口1206、一个或更多个大容量存储设备1208、以及一个或更多个输入/输出(I/O)设备1210,其中的所有部件都耦合到总线1212。处理器1202包括执行在存储器设备1204和/或大容量存储设备1208中存储的指令的一个或更多个处理器或控制器。处理器1202还可以包括各种类型的计算机可读介质,例如高速缓冲存储器。
存储器设备1204包括各种计算机可读介质,诸如易失性存储器(例如,随机存取存储器(RAM))和/或非易失性存储器(例如,只读存储器(ROM))。存储器设备1204还可以包括可重写ROM,例如闪存。
大容量存储设备1208包括各种计算机可读介质,诸如磁带、磁盘、光盘、固态存储器(例如,闪存),等等。各种驱动器也可以被包括在大容量存储设备1208中,以能够从各种计算机可读介质读取和/或向各种计算机可读介质写入。大容量存储设备1208包括可移除介质和/或不可移除介质。
I/O设备1210包括允许将数据和/或其他信息输入到计算设备1200的、或从计算设备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所述的方法还包括基于对应于所述查询的元数据文件来确定表数据文件的扫描集,其中,确定扫描集包括在第二元数据文件被完全下载之前读取第一元数据文件,多个未缓存的元数据文件包括第一元数据文件和第二元数据文件。
在示例18中,示例17的扫描集指示执行查询所需的一个或更多个表数据文件。
在示例19中,如在示例1-18中的任何一个示例中的存储元数据包括以逐列的格式存储元数据。
在示例20中,示例19所述的方法还包括逐列地加密元数据,以允许独立解密和读取特定列的元数据。
在示例21中,示例19-20中任何一个示例的方法还包括存储元数据的列的散列值,并将存储的散列值与计算的散列值(最近计算的散列值)进行比较,以确定元数据是否已经被更改。
示例22是一种装置,其包括执行如示例1-21中的任何一个的方法的工具。
示例23是包括机器可读指令的机器可读存储装置,所述机器可读指令在被执行时实施示例1-22中的任何一个的方法或实现示例1-22中的任何一个的装置。
本文的流程图和框图图示了根据本公开的多个实施例的系统、方法、和计算机程序产品的可能的实施方式的架构、功能性、和操作。就这点而言,在流程图或框图中的每个框可代表模块、程序段、或代码的部分,该模块、程序段、或代码的部分包括用于实现指定的逻辑功能的一个或更多个可执行指令。还要注意的是,框图和/或流程图中的每个框以及在框图和/或流程图中的框的组合可由执行指定功能或动作的专用的基于硬件的系统或专用的硬件和计算机指令的组合实现。这些计算机程序指令还可存储在计算机可读介质中,计算机程序指令可引导计算机或其他可编程数据处理装置以特定方式起作用,使得存储在计算机可读介质中的指令产生制造的物品,指令包括实现流程图和/或框图的一个或更多个框中所指定的功能/动作的指令。
本文描述的系统和方法使用新的数据处理平台、方法、系统、和算法提供灵活且可扩展的数据仓库。在一些实施例中,所描述的系统和方法利用支持基于云的存储资源、计算资源等的云基础设施。示例的基于云的存储资源以低成本按需提供大量存储容量。此外,这些基于云的存储资源可以是容错的和高度可扩展的,这在私有数据存储装置系统中实现起来可能是高成本的。示例的基于云的计算资源可以按需获得,并且可以基于资源的实际使用水平定价。通常,云基础架构会以快速的方式动态地部署、重新配置、和停用。
在所描述的系统和方法中,数据存储装置系统利用基于SQL(结构化查询语言)的关系数据库。然而,这些系统和方法适用于使用任何数据存储架构和使用任何语言在数据库中存储和检索数据的任何类型的数据库。本文描述的系统和方法还可以提供多租户系统(multi-tenant system),该多租户系统支持不同客户/客户端之间以及同一客户/客户端内的不同用户之间的计算资源和数据的隔离。
各种技术或者其某些方面或部分可以采用包含在有形介质(诸如,软盘、CD-ROM、硬盘驱动器、非暂时性计算机可读存储介质、或任何其它机器可读存储介质)中的程序代码(即,指令)的形式,其中,当该程序代码被加载到诸如计算机的机器中并由机器执行时,该机器成为用于实践各种技术的装置。在可编程计算机上执行程序代码的情况下,计算设备可以包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、和至少一个输出设备。易失性和非易失性存储器和/或存储元件可以是RAM、EPROM、闪存驱动器、光学驱动器、磁硬盘驱动器、或用于存储电子数据的另外的介质。可以实现或利用本文描述的各种技术的一个或更多个程序可以使用应用编程接口(API)、可重用控件等。这种程序可以以高级程式化编程语言或面向对象的编程语言实现,以与计算机系统通信。然而,如果需要,程序可以用汇编或机器语言实现。在任何情况下,语言可以是编译语言或解释语言,并与硬件实现方式相结合。
应该理解的是,本说明书中描述的许多功能单元可以实现为一个或更多个部件,这些术语用于更具体地强调它们的实现方式的独立性。例如,部件可以被实现为硬件电路,该硬件电路包括定制的超大规模集成(VLSI)电路或门阵列、现成的半导体(诸如逻辑芯片、晶体管)、或其它分立部件。部件也可以在可编程硬件设备(诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等)中被实现。
部件也可以用软件实现,以由各种类型的处理器执行。可执行代码的标识部件可以例如包括计算机指令的一个或更多个物理块或逻辑块,其可以例如被组织为对象、过程、或功能。然而,标识部件的可执行文件不需要物理地位于一起,而是可以包括被存储在不同位置的不同指令,当这些指令在逻辑上结合在一起时,就构成了该部件并实现了该部件的所述目的。
事实上,可执行代码的部件可以是单个指令、或许多指令,并且甚至可以分布在若干不同的代码段上、分布在不同的程序之间、以及分布在若干存储器设备上。类似地,操作数据可能在本文中在部件中被识别和图示,并且可以以任何合适的形式体现,并且在任何合适类型的数据结构中被组织。操作数据可以以单个数据集被收集,或者可以分布在不同的位置,包括分布在不同的存储设备上,并且可以至少部分地仅仅作为电子信号存在于系统或网络上。部件可以是无源的或有源的,包括可操作用于执行所需功能的代理。
贯穿本说明书对“示例”的引用意味着结合示例描述的特定的特征、结构、或特性被包括在本公开的至少一个实施例中。因此,在贯穿本说明书的各个地方出现的短语“在示例中”不一定都指相同的实施例。
如本文所使用的,为了方便起见,多个项目、结构元素、组成元素、和/或材料可以呈现在共同的列表中。然而,这些列表应该被解释为列表中的每个成员都被单独标识为独立且唯一的成员。因此,在没有相反指示的情况下,此类列表中的任何单独成员都不应仅仅基于其在共同组中的呈现而被解释为同一列表中的任何其他成员的事实上的等同物。此外,本公开的各个实施例和示例在本文中可连同其各个部件的可替代方案一起被引用。应当理解,这样的实施例、示例、和可替代方案不应被解释为彼此事实上的等同物,而应被认为是本公开的独立且自主的呈现。
尽管为了清楚起见,前述内容已经进行了详细描述,但是很明显,在不脱离其原理的情况下,可以进行某些变化和修改。应当注意,有许多实现本文描述的过程和装置的可替代方式。因此,当前实施例被认为是说明性的而非限制性的。
本领域的技术人员将理解的是,在不脱离本公开的基本原理的情况下,可以对上述实施例的细节进行许多变化。因此,本发明的范围应当仅由所附权利要求来确定。
Claims (60)
1.一种数据库系统,包括:
用于存储数据库的表数据的工具,所述表数据包括一个或更多个数据库表的行和列中的信息;和
用于在不可变存储装置上存储元数据的工具,所述元数据包括关于所述数据库的表数据的信息,其中,存储所述元数据包括:存储添加的或删除的表数据文件的指示,存储一个或更多个表数据文件的文件名和存储位置中的一者或更多者。
2.根据权利要求1所述的数据库系统,还包括用于将关于所述元数据的信息存储在可变存储装置中的工具,其中,用于存储关于所述元数据的信息的所述工具包括用于将关于所述元数据的所述信息存储在键值储存器中的工具,关于所述元数据的所述信息包括所述表数据的版本,并且关于所述元数据的所述信息指示包括对应于所述版本的元数据的一个或更多个元数据文件。
3.根据权利要求1所述的数据库系统,还包括用于响应于所述表数据的变化而在所述不可变存储装置中创建新的元数据文件而不修改先前的元数据文件的工具,所述新的元数据文件包括指示所述表数据的所述变化的元数据。
4.根据权利要求1所述的数据库系统,还包括用于将来自两个或更多个旧的元数据文件的元数据合并到合并的元数据文件中的工具,其中,所述合并的元数据文件包括反映在所述两个或更多个旧的元数据文件中指示的表数据的变化的元数据。
5.根据权利要求4所述的数据库系统,还包括用于存储一个或更多个元数据文件版本的工具,其中,所述元数据文件版本指示对应于合并前版本的元数据文件和对应于合并后版本的元数据文件。
6.根据权利要求1所述的数据库系统,还包括:
用于接收指向包括所述表数据的数据库的查询的工具;以及
用于从所述可变存储装置中并行地检索对应于所述查询的多个未缓存的元数据文件的工具。
7.根据权利要求6所述的数据库系统,还包括用于基于对应于所述查询的元数据文件来确定表数据文件的扫描集的工具,其中,用于确定所述扫描集的工具在第二元数据文件被完全下载之前读取第一元数据文件,所述多个未缓存的元数据文件包括所述第一元数据文件和所述第二元数据文件,其中,所述扫描集指示执行所述查询所需的一个或更多个表数据文件。
8.根据权利要求1所述的数据库系统,其中,用于存储所述元数据的工具以逐列的格式存储所述元数据,所述数据库系统还包括:
用于逐列地加密所述元数据以允许独立解密和读取特定列的元数据的工具;和
用于存储元数据的列的散列值并将所存储的散列值与计算的散列值进行比较以确定所述元数据是否已被更改的工具。
9.一种方法,包括:
存储数据库的表数据,所述表数据包括一个或更多个数据库表的行和列中的信息;和
在不可变存储装置上存储元数据,所述元数据包括关于所述数据库的表数据的信息。
10.根据权利要求9所述的方法,其中,存储所述元数据包括在所述不可变存储装置上的文件中存储和管理元数据。
11.根据权利要求9所述的方法,所述元数据包括添加的表数据文件或删除的表数据文件的指示。
12.根据权利要求9所述的方法,所述元数据包括关于包括所述表数据的文件的文件信息,所述文件信息包括以下中的一者或更多者:文件名和存储位置。
13.根据权利要求9所述的方法,其中,所述不可变存储装置包括云存储资源。
14.根据权利要求9所述的方法,所述方法还包括将关于所述元数据的信息存储在可变存储装置中。
15.根据权利要求14所述的方法,其中,关于所述元数据的所述信息被存储在键值储存器中。
16.根据权利要求14所述的方法,其中,关于所述元数据的所述信息包括指示版本和指示包括对应于所述版本的元数据的一个或更多个元数据文件的信息。
17.根据权利要求9所述的方法,所述方法还包括:响应于所述表数据的变化,在不修改先前的元数据文件的情况下,在所述不可变存储装置中创建新的元数据文件,所述新的元数据文件包括指示所述表数据的所述变化的元数据。
18.根据权利要求17所述的方法,其中,所述新的元数据文件中的所述元数据指示包括所述表数据的表数据文件的添加或删除。
19.根据权利要求17所述的方法,所述方法还包括删除过期的元数据文件。
20.根据权利要求9所述的方法,所述方法还包括将来自两个或更多个旧的元数据文件的元数据合并到合并的元数据文件中。
21.根据权利要求20所述的方法,其中,所述合并的元数据文件包括反映在所述两个或更多个旧的元数据文件中指示的表数据的变化的元数据。
22.根据权利要求20所述的方法,合并包括删除所述两个或更多个旧的元数据文件。
23.根据权利要求20所述的方法,还包括删除在所述合并的元数据文件中的元数据未引用的一个或更多个表数据文件。
24.根据权利要求20所述的方法,还包括存储一个或更多个元数据文件版本,其中,所述元数据文件版本指示对应于合并前版本的元数据文件和对应于合并后版本的元数据文件。
25.根据权利要求9所述的方法,所述方法还包括:
接收指向包括所述表数据的数据库的查询;以及
从所述不可变存储装置中并行地检索对应于所述查询的多个未缓存的元数据文件。
26.根据权利要求25所述的方法,还包括基于对应于所述查询的元数据文件,确定表数据文件的扫描集,其中,确定所述扫描集包括在第二元数据文件被完全下载之前读取第一元数据文件,所述多个未缓存的元数据文件包括所述第一元数据文件和所述第二元数据文件。
27.根据权利要求25所述的方法,其中,所述扫描集指示执行所述查询所需的一个或更多个表数据文件。
28.根据权利要求9所述的方法,其中,存储所述元数据包括以逐列的格式存储所述元数据。
29.根据权利要求28所述的方法,还包括逐列地加密所述元数据,以允许独立解密和读取特定列的元数据。
30.根据权利要求28所述的方法,还包括:存储元数据的列的散列值,并将所存储的散列值与计算的散列值进行比较,以确定所述元数据是否已被更改。
31.一种数据库系统,所述系统包括:
表数据部件,所述表数据部件被配置成存储数据库的表数据,所述表数据包括一个或更多个数据库表的行和列中的信息;以及
元数据部件,所述元数据部件被配置成在不可变存储装置上存储元数据,所述元数据包括关于所述数据库的表数据的信息,其中,存储所述元数据包括:存储添加的表数据文件或删除的表数据文件的指示,存储一个或更多个表数据文件的文件名和存储位置中的一者或更多者。
32.根据权利要求31所述的数据库系统,还包括元数据信息部件,所述元数据信息部件用于将关于所述元数据的信息存储在可变存储装置中,其中,所述元数据信息部件将关于所述元数据的所述信息存储在键值储存器中,关于所述元数据的所述信息包括所述表数据的版本,以及关于所述元数据的所述信息指示包括对应于所述版本的元数据的一个或更多个元数据文件。
33.根据权利要求31所述的数据库系统,还元数据部件,所述元数据部件被配置成:响应于所述表数据的变化,在所述不可变存储装置中创建新的元数据文件而不修改先前的元数据文件,所述新的元数据文件包括指示所述表数据的所述变化的元数据。
34.根据权利要求31所述的数据库系统,还包括合并部件,所述合并部件被配置成将来自两个或更多个旧的元数据文件的元数据合并到合并的元数据文件中,其中,所述合并的元数据文件包括反映在所述两个或更多个旧的元数据文件中指示的表数据的变化的元数据。
35.根据权利要求34所述的数据库系统,其中,所述合并部件存储一个或更多个元数据文件版本,其中,所述元数据文件版本指示对应于合并前版本的元数据文件和对应于合并后版本的元数据文件。
36.根据权利要求31所述的数据库系统,还包括扫描集部件,所述扫描集部件被配置成确定执行查询所需的表数据文件的扫描集,其中,所述扫描集部件从所述不可变存储装置并行地检索对应于所述查询的多个未缓存的元数据文件。
37.根据权利要求36所述的数据库系统,其中,扫描集部件在第二元数据文件被完全下载之前开始读取第一元数据文件,所述多个未缓存的元数据文件包括所述第一元数据文件和所述第二元数据文件。
38.根据权利要求31所述的数据库系统,其中,所述元数据部件以逐列的格式存储所述元数据,所述数据库系统还包括:
加密部件,所述加密部件用于逐列地加密所述元数据,以允许独立解密和读取特定列的元数据;和
散列部件,所述散列部件用于存储元数据的列的散列值并将所存储的散列值与计算的散列值进行比较,以确定所述元数据是否已被更改。
39.计算机可读存储介质,所述计算机可读存储介质存储指令,所述指令在由一个或更多个处理器执行时使所述处理器:
存储数据库的表数据,所述表数据包括一个或更多个数据库表的行和列中的信息;和
在不可变存储装置上存储元数据,所述元数据包括关于所述数据库的表数据的信息。
40.根据权利要求39所述的计算机可读存储介质,其中,所述指令使得所述一个或更多个处理器通过在所述不可变存储装置上的文件中存储和管理元数据来存储所述元数据。
41.根据权利要求39所述的计算机可读存储介质,所述元数据包括添加的表数据文件或删除的表数据文件的指示。
42.根据权利要求39所述的计算机可读存储介质,所述元数据包括关于包括表数据的文件的文件信息,所述文件信息包括以下中的一者或更多者:文件名和存储位置。
43.根据权利要求39所述的计算机可读存储介质,其中,所述指令使得所述一个或更多个处理器通过在包括所述不可变存储装置的云存储资源上进行存储,来存储所述元数据。
44.根据权利要求39所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器在可变存储装置中存储关于所述元数据的信息。
45.根据权利要求44所述的计算机可读存储介质,其中,所述指令使得所述一个或更多个处理器将关于所述元数据的所述信息存储在键值储存器中。
46.根据权利要求44所述的计算机可读存储介质,其中,关于所述元数据的所述信息包括指示版本和指示包括对应于所述版本的元数据的一个或更多个元数据文件的信息。
47.根据权利要求39所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器响应于所述表数据的变化,在所述不可变存储装置中创建新的元数据文件而不修改先前的元数据文件,所述新的元数据文件包括指示所述表数据的所述变化的元数据。
48.根据权利要求47所述的计算机可读存储介质,其中,所述新的元数据文件中的所述元数据指示包括所述表数据的表数据文件的添加或删除。
49.根据权利要求47所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器删除过期的元数据文件。
50.根据权利要求39所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器将来自两个或更多个旧的元数据文件的元数据合并到合并的元数据文件中。
51.根据权利要求50所述的计算机可读存储介质,其中,所述合并的元数据文件包括反映在所述两个或更多个旧的元数据文件中指示的表数据的变化的元数据。
52.根据权利要求50所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器存储一个或更多个元数据文件版本,其中,所述元数据文件版本指示对应于合并前版本的元数据文件和对应于合并后版本的元数据文件。
53.根据权利要求50所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器删除所述两个或更多个旧的元数据文件。
54.根据权利要求50所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器删除未被所述合并的元数据文件中的元数据引用的一个或更多个表数据文件。
55.根据权利要求39所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器:
接收指向包括所述表数据的数据库的查询;以及
从所述不可变存储装置中并行地检索对应于所述查询的多个未缓存的元数据文件。
56.根据权利要求55所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器基于对应于所述查询的元数据文件来确定表数据文件的扫描集,其中,所述指令使得所述一个或更多个处理器通过在第二元数据文件被完全下载之前读取第一元数据文件来确定所述扫描集,所述多个未缓存的元数据文件包括所述第一元数据文件和所述第二元数据文件。
57.根据权利要求55所述的计算机可读存储介质,其中,所述扫描集指示执行所述查询所需的一个或更多个表数据文件。
58.根据权利要求39所述的计算机可读存储介质,其中,所述指令使得所述一个或更多个处理器通过以逐列的格式存储所述元数据来存储所述元数据。
59.根据权利要求58所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器逐列地加密所述元数据,以允许独立解密和读取特定列的元数据。
60.根据权利要求58所述的计算机可读存储介质,其中,所述指令还使得所述一个或更多个处理器存储元数据的列的散列值,并将所存储的散列值与计算的散列值进行比较,以确定所述元数据是否已经被更改。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/812,892 | 2017-11-14 | ||
US15/812,892 US10713238B2 (en) | 2017-11-14 | 2017-11-14 | Database metadata in immutable storage |
PCT/US2018/060922 WO2019099446A1 (en) | 2017-11-14 | 2018-11-14 | Database metadata in immutable storage |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111492354A true CN111492354A (zh) | 2020-08-04 |
Family
ID=66431330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880082019.1A Pending CN111492354A (zh) | 2017-11-14 | 2018-11-14 | 不可变存储装置中的数据库元数据 |
Country Status (6)
Country | Link |
---|---|
US (7) | US10713238B2 (zh) |
EP (1) | EP3710957A4 (zh) |
KR (2) | KR102566416B1 (zh) |
CN (1) | CN111492354A (zh) |
CA (1) | CA3082554C (zh) |
WO (1) | WO2019099446A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10860573B2 (en) | 2017-11-14 | 2020-12-08 | Snowflake Inc. | Database metadata in immutable storage |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US11481378B1 (en) * | 2018-10-31 | 2022-10-25 | Anaplan, Inc. | Method and system for servicing query requests using document-based metadata |
US11281683B1 (en) | 2018-10-31 | 2022-03-22 | Anaplan, Inc. | Distributed computation system for servicing queries using revisions maps |
US11354324B1 (en) | 2018-10-31 | 2022-06-07 | Anaplan, Inc. | Method and system for servicing query requests 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 |
US11475003B1 (en) | 2018-10-31 | 2022-10-18 | Anaplan, Inc. | Method and system for servicing query requests using dataspaces |
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 |
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 |
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 |
US12019522B2 (en) | 2022-01-20 | 2024-06-25 | Pure Storage, Inc. | Container recovery layer prioritization |
KR20240040922A (ko) | 2022-09-22 | 2024-03-29 | 삼성에스디에스 주식회사 | 개선된 처리 성능을 가지는 데이터 컴팩션 방법, 장치, 시스템 및 컴퓨터 프로그램 |
KR102612346B1 (ko) * | 2022-11-18 | 2023-12-11 | (주)위세아이텍 | 시계열 데이터 활용을 위한 메타데이터 카탈로그 시스템 및 방법 |
Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1794207A (zh) * | 2004-12-20 | 2006-06-28 | 国际商业机器公司 | 实现缓存一致性的方法和系统 |
US20060224626A1 (en) * | 2005-04-04 | 2006-10-05 | Anand Lakshminath | Versioned file group repository |
CN101030225A (zh) * | 2006-03-02 | 2007-09-05 | 国际商业机器公司 | 维护用于脱机储存库的元数据的装置、系统和方法 |
CN101055589A (zh) * | 2007-05-30 | 2007-10-17 | 北京航空航天大学 | 嵌入式数据库的存储管理方法 |
EP1906336A2 (en) * | 2006-09-29 | 2008-04-02 | Protegrity Corporation | Apparatus and method for continuous data protection in a distributed computing network |
CN102035881A (zh) * | 2010-11-19 | 2011-04-27 | 清华大学 | 一种云端存储系统的数据缓存方法 |
WO2011075610A1 (en) * | 2009-12-16 | 2011-06-23 | Renew Data Corp. | System and method for creating a de-duplicated data set |
CN102591982A (zh) * | 2011-01-07 | 2012-07-18 | 赛门铁克公司 | 执行增量sql服务器数据库备份的方法和系统 |
CN103023982A (zh) * | 2012-11-22 | 2013-04-03 | 中国人民解放军国防科学技术大学 | 一种云存储客户端的低延迟元数据访问方法 |
US20130144846A1 (en) * | 2011-12-02 | 2013-06-06 | International Business Machines Corporation | Managing redundant immutable files using deduplication in storage clouds |
US20140149656A1 (en) * | 2007-01-26 | 2014-05-29 | Hicamp Systems, Inc. | Hierarchical immutable content-addressable memory processor |
US20140201161A1 (en) * | 2013-01-11 | 2014-07-17 | Commvault Systems, Inc. | Table level database restore in a data storage system |
CN104156278A (zh) * | 2014-08-01 | 2014-11-19 | 江苏大学 | 一种文件版本控制系统及其方法 |
CN104516945A (zh) * | 2014-11-18 | 2015-04-15 | 国家电网公司 | 一种基于关系数据库的hdfs元数据存储方法 |
CN104573068A (zh) * | 2015-01-23 | 2015-04-29 | 四川中科腾信科技有限公司 | 一种基于大数据的信息处理方法 |
US20150127619A1 (en) * | 2013-11-04 | 2015-05-07 | Quantum Corporation | File System Metadata Capture and Restore |
WO2015108931A1 (en) * | 2014-01-15 | 2015-07-23 | Cheriton David R | Deduplication-based data security |
CN104850565A (zh) * | 2014-02-19 | 2015-08-19 | 北京京东尚科信息技术有限公司 | 一种基于k-v存储系统的元数据管理方法 |
CN105678189A (zh) * | 2016-01-15 | 2016-06-15 | 上海海事大学 | 加密数据文件存储和检索系统及方法 |
US9552242B1 (en) * | 2013-09-25 | 2017-01-24 | Amazon Technologies, Inc. | Log-structured distributed storage using a single log sequence number space |
US9633051B1 (en) * | 2013-09-20 | 2017-04-25 | Amazon Technologies, Inc. | Backup of partitioned database tables |
US20170161308A1 (en) * | 2015-12-02 | 2017-06-08 | Quantum Corporation | Metadump Spatial Database System |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6389507B1 (en) * | 1999-01-15 | 2002-05-14 | Gigabus, Inc. | Memory device search system and method |
US6789156B1 (en) * | 2001-05-22 | 2004-09-07 | Vmware, Inc. | Content-based, transparent sharing of memory units |
US8005792B2 (en) | 2004-05-14 | 2011-08-23 | Oracle International Corporation | System and method for managing versions of metadata |
US8601467B2 (en) | 2006-10-03 | 2013-12-03 | Salesforce.Com, Inc. | Methods and systems for upgrading and installing application packages to an application platform |
US20080206297A1 (en) * | 2007-02-28 | 2008-08-28 | Roeder Ryan K | Porous composite biomaterials and related methods |
US8145606B2 (en) | 2007-04-20 | 2012-03-27 | Sap Ag | System, method, and software for enforcing information retention using uniform retention rules |
US8775647B2 (en) | 2007-12-10 | 2014-07-08 | Deluxe Media Inc. | Method and system for use in coordinating multimedia devices |
US9582386B2 (en) | 2013-03-15 | 2017-02-28 | Cloudendure, Ltd. | System and method for maintaining a copy of a cloud-based computing environment and restoration thereof |
US10298545B2 (en) | 2013-09-12 | 2019-05-21 | International Business Machines Corporation | Secure processing environment for protecting sensitive information |
US10255309B2 (en) | 2014-11-25 | 2019-04-09 | Sap Se | Versioned insert only hash table for in-memory columnar stores |
US9881176B2 (en) | 2015-06-02 | 2018-01-30 | ALTR Solutions, Inc. | Fragmenting data for the purposes of persistent storage across multiple immutable data structures |
US10713238B2 (en) | 2017-11-14 | 2020-07-14 | Snowflake Inc. | Database metadata in immutable storage |
-
2017
- 2017-11-14 US US15/812,892 patent/US10713238B2/en active Active
-
2018
- 2018-11-14 WO PCT/US2018/060922 patent/WO2019099446A1/en unknown
- 2018-11-14 KR KR1020227037740A patent/KR102566416B1/ko active IP Right Grant
- 2018-11-14 EP EP18877720.5A patent/EP3710957A4/en active Pending
- 2018-11-14 KR KR1020207015386A patent/KR102461943B1/ko active IP Right Grant
- 2018-11-14 CN CN201880082019.1A patent/CN111492354A/zh active Pending
- 2018-11-14 CA CA3082554A patent/CA3082554C/en active Active
-
2019
- 2019-12-11 US US16/710,414 patent/US10628410B1/en active Active
-
2020
- 2020-04-02 US US16/838,301 patent/US10860573B2/en active Active
- 2020-06-29 US US16/915,435 patent/US10977241B2/en active Active
- 2020-07-31 US US16/944,153 patent/US10997157B2/en active Active
- 2020-10-30 US US17/086,245 patent/US11048687B2/en active Active
- 2020-10-30 US US17/086,253 patent/US11080270B2/en active Active
Patent Citations (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1794207A (zh) * | 2004-12-20 | 2006-06-28 | 国际商业机器公司 | 实现缓存一致性的方法和系统 |
US20060224626A1 (en) * | 2005-04-04 | 2006-10-05 | Anand Lakshminath | Versioned file group repository |
CN101030225A (zh) * | 2006-03-02 | 2007-09-05 | 国际商业机器公司 | 维护用于脱机储存库的元数据的装置、系统和方法 |
EP1906336A2 (en) * | 2006-09-29 | 2008-04-02 | Protegrity Corporation | Apparatus and method for continuous data protection in a distributed computing network |
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 |
CN101055589A (zh) * | 2007-05-30 | 2007-10-17 | 北京航空航天大学 | 嵌入式数据库的存储管理方法 |
WO2011075610A1 (en) * | 2009-12-16 | 2011-06-23 | Renew Data Corp. | System and method for creating a de-duplicated data set |
CN102035881A (zh) * | 2010-11-19 | 2011-04-27 | 清华大学 | 一种云端存储系统的数据缓存方法 |
CN102591982A (zh) * | 2011-01-07 | 2012-07-18 | 赛门铁克公司 | 执行增量sql服务器数据库备份的方法和系统 |
US20130144846A1 (en) * | 2011-12-02 | 2013-06-06 | International Business Machines Corporation | Managing redundant immutable files using deduplication in storage clouds |
US20150317328A1 (en) * | 2011-12-02 | 2015-11-05 | International Business Machines Corporation | Managing redundant immutable files using deduplication in storage clouds |
CN103023982A (zh) * | 2012-11-22 | 2013-04-03 | 中国人民解放军国防科学技术大学 | 一种云存储客户端的低延迟元数据访问方法 |
US20140201161A1 (en) * | 2013-01-11 | 2014-07-17 | Commvault Systems, Inc. | Table level database restore in a data storage system |
US9633051B1 (en) * | 2013-09-20 | 2017-04-25 | Amazon Technologies, Inc. | Backup of partitioned database tables |
US9552242B1 (en) * | 2013-09-25 | 2017-01-24 | Amazon Technologies, Inc. | Log-structured distributed storage using a single log sequence number space |
US20150127619A1 (en) * | 2013-11-04 | 2015-05-07 | Quantum Corporation | File System Metadata Capture and Restore |
WO2015108931A1 (en) * | 2014-01-15 | 2015-07-23 | Cheriton David R | Deduplication-based data security |
CN104850565A (zh) * | 2014-02-19 | 2015-08-19 | 北京京东尚科信息技术有限公司 | 一种基于k-v存储系统的元数据管理方法 |
CN104156278A (zh) * | 2014-08-01 | 2014-11-19 | 江苏大学 | 一种文件版本控制系统及其方法 |
CN104516945A (zh) * | 2014-11-18 | 2015-04-15 | 国家电网公司 | 一种基于关系数据库的hdfs元数据存储方法 |
CN104573068A (zh) * | 2015-01-23 | 2015-04-29 | 四川中科腾信科技有限公司 | 一种基于大数据的信息处理方法 |
US20170161308A1 (en) * | 2015-12-02 | 2017-06-08 | Quantum Corporation | Metadump Spatial Database System |
CN105678189A (zh) * | 2016-01-15 | 2016-06-15 | 上海海事大学 | 加密数据文件存储和检索系统及方法 |
Non-Patent Citations (2)
Title |
---|
吴燕波: "云平台下的NoSQL 分布式大数据存储技术与应用", 《现代电子技术》, vol. 39, no. 9 * |
樊宇虹等: "基于气象应用的私有云存储方案", 《计算机工程与设计》, vol. 36, no. 2, pages 1 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10860573B2 (en) | 2017-11-14 | 2020-12-08 | Snowflake Inc. | Database metadata in immutable storage |
US10977241B2 (en) | 2017-11-14 | 2021-04-13 | Snowflake Inc. | Managing versions of database metadata in storage |
US10997157B2 (en) | 2017-11-14 | 2021-05-04 | Snowflake Inc. | Providing new table metadata |
US11048687B2 (en) | 2017-11-14 | 2021-06-29 | Snowflake Inc. | Transferring metadata from immutable storage |
US11080270B2 (en) | 2017-11-14 | 2021-08-03 | Snowflake Inc. | Caching metadata for a database table |
Also Published As
Publication number | Publication date |
---|---|
CA3082554C (en) | 2024-01-16 |
US10713238B2 (en) | 2020-07-14 |
US20190147078A1 (en) | 2019-05-16 |
US20210073207A1 (en) | 2021-03-11 |
KR20220149635A (ko) | 2022-11-08 |
WO2019099446A1 (en) | 2019-05-23 |
US11048687B2 (en) | 2021-06-29 |
EP3710957A4 (en) | 2021-08-18 |
US20210073206A1 (en) | 2021-03-11 |
KR20200104856A (ko) | 2020-09-04 |
US10628410B1 (en) | 2020-04-21 |
US20200364208A1 (en) | 2020-11-19 |
US11080270B2 (en) | 2021-08-03 |
KR102461943B1 (ko) | 2022-11-03 |
US10997157B2 (en) | 2021-05-04 |
US10977241B2 (en) | 2021-04-13 |
EP3710957A1 (en) | 2020-09-23 |
US20200233856A1 (en) | 2020-07-23 |
CA3082554A1 (en) | 2019-05-23 |
US20200117654A1 (en) | 2020-04-16 |
KR102566416B1 (ko) | 2023-08-14 |
US20200327115A1 (en) | 2020-10-15 |
US10860573B2 (en) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11080270B2 (en) | Caching metadata for a database table | |
US11645262B2 (en) | Tracking lineage of database data | |
US11615067B2 (en) | Transactional stores of change tracking data | |
US10977278B2 (en) | Multi-level metadata in database systems | |
CN112969996A (zh) | 跟踪数据库数据的中间变化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Montana Applicant after: SNOWFLAKE COMPUTING Inc. Address before: California, USA Applicant before: SNOWFLAKE COMPUTING Inc. |
|
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: U.S.A. Address after: Montana Applicant after: Snowflake Co. Address before: Montana Applicant before: SNOWFLAKE COMPUTING Inc. Country or region before: U.S.A. |
|
CB02 | Change of applicant information |