本公開涉及用于數(shù)據(jù)庫的系統(tǒng)、方法和設備,并且更具體地說,涉及使用非可變存儲服務來存儲和維護元數(shù)據(jù)。
背景技術:
1、數(shù)據(jù)庫廣泛用于計算應用中的數(shù)據(jù)存儲和訪問。數(shù)據(jù)庫可以包括一個或更多個表,該一個或更多個表包括或引用可以使用查詢來讀取、修改、或刪除的數(shù)據(jù)。數(shù)據(jù)庫可以在一個或更多個表中存儲小的或極大的數(shù)據(jù)集。諸如通過網(wǎng)站或應用程序接口(api),該數(shù)據(jù)可被組織中的各個用戶訪問,或者甚至可用于服務公共用戶。計算資源和存儲資源二者及它們的底層架構(gòu)在實現(xiàn)理想的數(shù)據(jù)庫性能方面都可以發(fā)揮重要作用。
技術實現(xiàn)思路
1、在下文的一個或更多個實施方案中可實現(xiàn)本公開的各方面。
2、1)一種數(shù)據(jù)庫系統(tǒng),包括:
3、用于存儲數(shù)據(jù)庫的表數(shù)據(jù)的工具,所述表數(shù)據(jù)包括一個或更多個數(shù)據(jù)庫表的行和列中的信息;和
4、用于在不可變存儲裝置上存儲元數(shù)據(jù)的工具,所述元數(shù)據(jù)包括關于所述數(shù)據(jù)庫的表數(shù)據(jù)的信息,其中,存儲所述元數(shù)據(jù)包括:存儲添加的或刪除的表數(shù)據(jù)文件的指示,存儲一個或更多個表數(shù)據(jù)文件的文件名和存儲位置中的一者或更多者。
5、2)根據(jù))1所述的數(shù)據(jù)庫系統(tǒng),還包括用于將關于所述元數(shù)據(jù)的信息存儲在可變存儲裝置中的工具,其中,用于存儲關于所述元數(shù)據(jù)的信息的所述工具包括用于將關于所述元數(shù)據(jù)的所述信息存儲在鍵值儲存器中的工具,關于所述元數(shù)據(jù)的所述信息包括所述表數(shù)據(jù)的版本,并且關于所述元數(shù)據(jù)的所述信息指示包括對應于所述版本的元數(shù)據(jù)的一個或更多個元數(shù)據(jù)文件。
6、3)根據(jù)1)所述的數(shù)據(jù)庫系統(tǒng),還包括用于響應于所述表數(shù)據(jù)的變化而在所述不可變存儲裝置中創(chuàng)建新的元數(shù)據(jù)文件而不修改先前的元數(shù)據(jù)文件的工具,所述新的元數(shù)據(jù)文件包括指示所述表數(shù)據(jù)的所述變化的元數(shù)據(jù)。
7、4)根據(jù)1)所述的數(shù)據(jù)庫系統(tǒng),還包括用于將來自兩個或更多個舊的元數(shù)據(jù)文件的元數(shù)據(jù)合并到合并的元數(shù)據(jù)文件中的工具,其中,所述合并的元數(shù)據(jù)文件包括反映在所述兩個或更多個舊的元數(shù)據(jù)文件中指示的表數(shù)據(jù)的變化的元數(shù)據(jù)。
8、5)根據(jù)4)所述的數(shù)據(jù)庫系統(tǒng),還包括用于存儲一個或更多個元數(shù)據(jù)文件版本的工具,其中,所述元數(shù)據(jù)文件版本指示對應于合并前版本的元數(shù)據(jù)文件和對應于合并后版本的元數(shù)據(jù)文件。
9、6)根據(jù)1)所述的數(shù)據(jù)庫系統(tǒng),還包括:
10、用于接收指向包括所述表數(shù)據(jù)的數(shù)據(jù)庫的查詢的工具;以及
11、用于從可變存儲裝置中并行地檢索對應于所述查詢的多個未緩存的元數(shù)據(jù)文件的工具。
12、7)根據(jù)6)所述的數(shù)據(jù)庫系統(tǒng),還包括用于基于對應于所述查詢的元數(shù)據(jù)文件來確定表數(shù)據(jù)文件的掃描集的工具,其中,用于確定所述掃描集的工具在第二元數(shù)據(jù)文件被完全下載之前讀取第一元數(shù)據(jù)文件,所述多個未緩存的元數(shù)據(jù)文件包括所述第一元數(shù)據(jù)文件和所述第二元數(shù)據(jù)文件,其中,所述掃描集指示執(zhí)行所述查詢所需的一個或更多個表數(shù)據(jù)文件。
13、8)根據(jù)1)所述的數(shù)據(jù)庫系統(tǒng),其中,用于存儲所述元數(shù)據(jù)的工具以逐列的格式存儲所述元數(shù)據(jù),所述數(shù)據(jù)庫系統(tǒng)還包括:
14、用于逐列地加密所述元數(shù)據(jù)以允許獨立解密和讀取特定列的元數(shù)據(jù)的工具;和
15、用于存儲元數(shù)據(jù)的列的散列值并將所存儲的散列值與計算的散列值進行比較以確定所述元數(shù)據(jù)是否已被更改的工具。
16、9)一種方法,包括:
17、存儲數(shù)據(jù)庫的表數(shù)據(jù),所述表數(shù)據(jù)包括一個或更多個數(shù)據(jù)庫表的行和列中的信息;和
18、在不可變存儲裝置上存儲元數(shù)據(jù),所述元數(shù)據(jù)包括關于所述數(shù)據(jù)庫的表數(shù)據(jù)的信息。
19、10)根據(jù)9)所述的方法,其中,存儲所述元數(shù)據(jù)包括在所述不可變存儲裝置上的文件中存儲和管理元數(shù)據(jù)。
20、11)根據(jù)9)所述的方法,其中,所述元數(shù)據(jù)包括添加的表數(shù)據(jù)文件或刪除的表數(shù)據(jù)文件的指示。
21、12)根據(jù)9)所述的方法,其中,所述元數(shù)據(jù)包括關于包括所述表數(shù)據(jù)的文件的文件信息,所述文件信息包括以下中的一者或更多者:文件名和存儲位置。
22、13)根據(jù)9)所述的方法,其中,所述不可變存儲裝置包括云存儲資源。
23、14)根據(jù)9)所述的方法,所述方法還包括將關于所述元數(shù)據(jù)的信息存儲在可變存儲裝置中。
24、15)根據(jù)14)所述的方法,其中,關于所述元數(shù)據(jù)的所述信息被存儲在鍵值儲存器中。
25、16)根據(jù)14)所述的方法,其中,關于所述元數(shù)據(jù)的所述信息包括指示版本和指示包括對應于所述版本的元數(shù)據(jù)的一個或更多個元數(shù)據(jù)文件的信息。
26、17)根據(jù)9)所述的方法,所述方法還包括:響應于所述表數(shù)據(jù)的變化,在不修改先前的元數(shù)據(jù)文件的情況下,在所述不可變存儲裝置中創(chuàng)建新的元數(shù)據(jù)文件,所述新的元數(shù)據(jù)文件包括指示所述表數(shù)據(jù)的所述變化的元數(shù)據(jù)。
27、18)根據(jù)17)所述的方法,其中,所述新的元數(shù)據(jù)文件中的所述元數(shù)據(jù)指示包括所述表數(shù)據(jù)的表數(shù)據(jù)文件的添加或刪除。
28、19)根據(jù)17)所述的方法,所述方法還包括刪除過期的元數(shù)據(jù)文件。
29、20)根據(jù)9)所述的方法,所述方法還包括將來自兩個或更多個舊的元數(shù)據(jù)文件的元數(shù)據(jù)合并到合并的元數(shù)據(jù)文件中。
30、21)根據(jù)20)所述的方法,其中,所述合并的元數(shù)據(jù)文件包括反映在所述兩個或更多個舊的元數(shù)據(jù)文件中指示的表數(shù)據(jù)的變化的元數(shù)據(jù)。
31、22)根據(jù)20)所述的方法,其中,合并包括刪除所述兩個或更多個舊的元數(shù)據(jù)文件。
32、23)根據(jù)20)所述的方法,還包括刪除在所述合并的元數(shù)據(jù)文件中的元數(shù)據(jù)未引用的一個或更多個表數(shù)據(jù)文件。
33、24)根據(jù)20)所述的方法,還包括存儲一個或更多個元數(shù)據(jù)文件版本,其中,所述元數(shù)據(jù)文件版本指示對應于合并前版本的元數(shù)據(jù)文件和對應于合并后版本的元數(shù)據(jù)文件。
34、25)根據(jù)9)所述的方法,所述方法還包括:
35、接收指向包括所述表數(shù)據(jù)的數(shù)據(jù)庫的查詢;以及
36、從所述不可變存儲裝置中并行地檢索對應于所述查詢的多個未緩存的元數(shù)據(jù)文件。
37、26)根據(jù)25)所述的方法,還包括基于對應于所述查詢的元數(shù)據(jù)文件,確定表數(shù)據(jù)文件的掃描集,其中,確定所述掃描集包括在第二元數(shù)據(jù)文件被完全下載之前讀取第一元數(shù)據(jù)文件,所述多個未緩存的元數(shù)據(jù)文件包括所述第一元數(shù)據(jù)文件和所述第二元數(shù)據(jù)文件。
38、27)根據(jù)26)所述的方法,其中,所述掃描集指示執(zhí)行所述查詢所需的一個或更多個表數(shù)據(jù)文件。
39、28)根據(jù)9)所述的方法,其中,存儲所述元數(shù)據(jù)包括以逐列的格式存儲所述元數(shù)據(jù)。
40、29)根據(jù)28)所述的方法,還包括逐列地加密所述元數(shù)據(jù),以允許獨立解密和讀取特定列的元數(shù)據(jù)。
41、30)根據(jù)28)所述的方法,還包括:存儲元數(shù)據(jù)的列的散列值,并將所存儲的散列值與計算的散列值進行比較,以確定所述元數(shù)據(jù)是否已被更改。
42、31)一種數(shù)據(jù)庫系統(tǒng),所述數(shù)據(jù)庫系統(tǒng)包括:
43、表數(shù)據(jù)部件,所述表數(shù)據(jù)部件被配置成存儲數(shù)據(jù)庫的表數(shù)據(jù),所述表數(shù)據(jù)包括一個或更多個數(shù)據(jù)庫表的行和列中的信息;以及
44、元數(shù)據(jù)部件,所述元數(shù)據(jù)部件被配置成在不可變存儲裝置上存儲元數(shù)據(jù),所述元數(shù)據(jù)包括關于所述數(shù)據(jù)庫的表數(shù)據(jù)的信息,其中,存儲所述元數(shù)據(jù)包括:存儲添加的表數(shù)據(jù)文件或刪除的表數(shù)據(jù)文件的指示,存儲一個或更多個表數(shù)據(jù)文件的文件名和存儲位置中的一者或更多者。
45、32)根據(jù)31)所述的數(shù)據(jù)庫系統(tǒng),還包括元數(shù)據(jù)信息部件,所述元數(shù)據(jù)信息部件用于將關于所述元數(shù)據(jù)的信息存儲在可變存儲裝置中,其中,所述元數(shù)據(jù)信息部件將關于所述元數(shù)據(jù)的所述信息存儲在鍵值儲存器中,關于所述元數(shù)據(jù)的所述信息包括所述表數(shù)據(jù)的版本,以及關于所述元數(shù)據(jù)的所述信息指示包括對應于所述版本的元數(shù)據(jù)的一個或更多個元數(shù)據(jù)文件。
46、33)根據(jù)31)所述的數(shù)據(jù)庫系統(tǒng),還包括元數(shù)據(jù)部件,所述元數(shù)據(jù)部件被配置成:響應于所述表數(shù)據(jù)的變化,在所述不可變存儲裝置中創(chuàng)建新的元數(shù)據(jù)文件而不修改先前的元數(shù)據(jù)文件,所述新的元數(shù)據(jù)文件包括指示所述表數(shù)據(jù)的所述變化的元數(shù)據(jù)。
47、34)根據(jù)31)所述的數(shù)據(jù)庫系統(tǒng),還包括合并部件,所述合并部件被配置成將來自兩個或更多個舊的元數(shù)據(jù)文件的元數(shù)據(jù)合并到合并的元數(shù)據(jù)文件中,其中,所述合并的元數(shù)據(jù)文件包括反映在所述兩個或更多個舊的元數(shù)據(jù)文件中指示的表數(shù)據(jù)的變化的元數(shù)據(jù)。
48、35)根據(jù)34)所述的數(shù)據(jù)庫系統(tǒng),其中,所述合并部件存儲一個或更多個元數(shù)據(jù)文件版本,其中,所述元數(shù)據(jù)文件版本指示對應于合并前版本的元數(shù)據(jù)文件和對應于合并后版本的元數(shù)據(jù)文件。
49、36)根據(jù)31)所述的數(shù)據(jù)庫系統(tǒng),還包括掃描集部件,所述掃描集部件被配置成確定執(zhí)行查詢所需的表數(shù)據(jù)文件的掃描集,其中,所述掃描集部件從所述不可變存儲裝置并行地檢索對應于所述查詢的多個未緩存的元數(shù)據(jù)文件。
50、37)根據(jù)36)所述的數(shù)據(jù)庫系統(tǒng),其中,掃描集部件在第二元數(shù)據(jù)文件被完全下載之前開始讀取第一元數(shù)據(jù)文件,所述多個未緩存的元數(shù)據(jù)文件包括所述第一元數(shù)據(jù)文件和所述第二元數(shù)據(jù)文件。
51、38)根據(jù)31)所述的數(shù)據(jù)庫系統(tǒng),其中,所述元數(shù)據(jù)部件以逐列的格式存儲所述元數(shù)據(jù),所述數(shù)據(jù)庫系統(tǒng)還包括:
52、加密部件,所述加密部件用于逐列地加密所述元數(shù)據(jù),以允許獨立解密和讀取特定列的元數(shù)據(jù);和
53、散列部件,所述散列部件用于存儲元數(shù)據(jù)的列的散列值并將所存儲的散列值與計算的散列值進行比較,以確定所述元數(shù)據(jù)是否已被更改。
54、39)計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)存儲指令,所述指令在由一個或更多個處理器執(zhí)行時使所述一個或更多個處理器:
55、存儲數(shù)據(jù)庫的表數(shù)據(jù),所述表數(shù)據(jù)包括一個或更多個數(shù)據(jù)庫表的行和列中的信息;和
56、在不可變存儲裝置上存儲元數(shù)據(jù),所述元數(shù)據(jù)包括關于所述數(shù)據(jù)庫的表數(shù)據(jù)的信息。
57、40)根據(jù)39)所述的計算機可讀存儲介質(zhì),其中,所述指令使得所述一個或更多個處理器通過在所述不可變存儲裝置上的文件中存儲和管理元數(shù)據(jù)來存儲所述元數(shù)據(jù)。
58、41)根據(jù)39)所述的計算機可讀存儲介質(zhì),所述元數(shù)據(jù)包括添加的表數(shù)據(jù)文件或刪除的表數(shù)據(jù)文件的指示。
59、42)根據(jù)39)所述的計算機可讀存儲介質(zhì),所述元數(shù)據(jù)包括關于包括表數(shù)據(jù)的文件的文件信息,所述文件信息包括以下中的一者或更多者:文件名和存儲位置。
60、43)根據(jù)39)所述的計算機可讀存儲介質(zhì),其中,所述指令使得所述一個或更多個處理器通過在包括所述不可變存儲裝置的云存儲資源上進行存儲,來存儲所述元數(shù)據(jù)。
61、44)根據(jù)39)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器在可變存儲裝置中存儲關于所述元數(shù)據(jù)的信息。
62、45)根據(jù)44)所述的計算機可讀存儲介質(zhì),其中,所述指令使得所述一個或更多個處理器將關于所述元數(shù)據(jù)的所述信息存儲在鍵值儲存器中。
63、46)根據(jù)44)所述的計算機可讀存儲介質(zhì),其中,關于所述元數(shù)據(jù)的所述信息包括指示版本和指示包括對應于所述版本的元數(shù)據(jù)的一個或更多個元數(shù)據(jù)文件的信息。
64、47)根據(jù)39)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器響應于所述表數(shù)據(jù)的變化,在所述不可變存儲裝置中創(chuàng)建新的元數(shù)據(jù)文件而不修改先前的元數(shù)據(jù)文件,所述新的元數(shù)據(jù)文件包括指示所述表數(shù)據(jù)的所述變化的元數(shù)據(jù)。
65、48)根據(jù)47)所述的計算機可讀存儲介質(zhì),其中,所述新的元數(shù)據(jù)文件中的所述元數(shù)據(jù)指示包括所述表數(shù)據(jù)的表數(shù)據(jù)文件的添加或刪除。
66、49)根據(jù)47)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器刪除過期的元數(shù)據(jù)文件。
67、50)根據(jù)39)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器將來自兩個或更多個舊的元數(shù)據(jù)文件的元數(shù)據(jù)合并到合并的元數(shù)據(jù)文件中。
68、51)根據(jù)50)所述的計算機可讀存儲介質(zhì),其中,所述合并的元數(shù)據(jù)文件包括反映在所述兩個或更多個舊的元數(shù)據(jù)文件中指示的表數(shù)據(jù)的變化的元數(shù)據(jù)。
69、52)根據(jù)50)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器存儲一個或更多個元數(shù)據(jù)文件版本,其中,所述元數(shù)據(jù)文件版本指示對應于合并前版本的元數(shù)據(jù)文件和對應于合并后版本的元數(shù)據(jù)文件。
70、53)根據(jù)50)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器刪除所述兩個或更多個舊的元數(shù)據(jù)文件。
71、54)根據(jù)50)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器刪除未被所述合并的元數(shù)據(jù)文件中的元數(shù)據(jù)引用的一個或更多個表數(shù)據(jù)文件。
72、55)根據(jù)39)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器:
73、接收指向包括所述表數(shù)據(jù)的數(shù)據(jù)庫的查詢;以及
74、從所述不可變存儲裝置中并行地檢索對應于所述查詢的多個未緩存的元數(shù)據(jù)文件。
75、56)根據(jù)55)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器基于對應于所述查詢的元數(shù)據(jù)文件來確定表數(shù)據(jù)文件的掃描集,其中,所述指令使得所述一個或更多個處理器通過在第二元數(shù)據(jù)文件被完全下載之前讀取第一元數(shù)據(jù)文件來確定所述掃描集,所述多個未緩存的元數(shù)據(jù)文件包括所述第一元數(shù)據(jù)文件和所述第二元數(shù)據(jù)文件。
76、57)根據(jù)56)所述的計算機可讀存儲介質(zhì),其中,所述掃描集指示執(zhí)行所述查詢所需的一個或更多個表數(shù)據(jù)文件。
77、58)根據(jù)39)所述的計算機可讀存儲介質(zhì),其中,所述指令使得所述一個或更多個處理器通過以逐列的格式存儲所述元數(shù)據(jù)來存儲所述元數(shù)據(jù)。
78、59)根據(jù)58)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器逐列地加密所述元數(shù)據(jù),以允許獨立解密和讀取特定列的元數(shù)據(jù)。
79、60)根據(jù)58)所述的計算機可讀存儲介質(zhì),其中,所述指令還使得所述一個或更多個處理器存儲元數(shù)據(jù)的列的散列值,并將所存儲的散列值與計算的散列值進行比較,以確定所述元數(shù)據(jù)是否已經(jīng)被更改。