Spanner
A distributed database system
Presented by Yue Xia
Spanner A distributed database system Presented by Yue Xia - - PowerPoint PPT Presentation
Spanner A distributed database system Presented by Yue Xia Background - Developed by Google initially as a key-value storage system - Developers want traditional database features like query language - Evolved to a full featured SQL
Presented by Yue Xia
Id Name Department 3 Alice ‘A’ 2 Eve ‘A’ 1 Carol ‘B’ 4 Bob ‘C’ George ‘D’ 5 Fred ‘D’ Shard 1: Department = ‘A’ Shard 2: Department = ‘B’ to ‘C‘ Shard 3: Department = ‘D’
Customer Id Customer Name Order # Price customer 1 Alice
$2
$4 customer 2 Bob
$6
AND A=1 OR AND AND B=’a’ C=1 B>’a’ C=2
AND A=1 OR AND AND A:[1,1] A:[-∞,∞] A:[-∞,∞] A:[-∞,∞] A:[-∞,∞] B=’a’ C=1 B>’a’ C=2
AND A=1 OR AND AND A:[1,1] A:[-∞,∞] A:[-∞,∞] A:[-∞,∞] A:[-∞,∞] A:[-∞,∞] A:[-∞,∞] A:[-∞,∞] A:[1,1]∩[-∞,∞] = [1,1] B=’a’ C=1 B>’a’ C=2
AND A=1 OR AND AND A:[1,1] B:[-∞,∞] A:[-∞,∞] B:[‘a’,’a’] A:[-∞,∞] B:[-∞,∞] A:[-∞,∞] B:(‘a’,∞] A:[-∞,∞] B:[-∞,∞] A:[-∞,∞] B:[‘a’,’a’]∩[-∞,∞] = [‘a’,’a’] A:[-∞,∞] B:(’a’,∞]∩[-∞,∞] = (’a’,∞] A:[-∞,∞] B:[‘a’,’a’]U(‘a’,∞]=[‘a’,∞] A:[1,1] B:[-∞,∞]∩[‘a’,∞] = [‘a’,∞] B=’a’ C=1 B>’a’ C=2
AND A=1 OR AND AND A:[1,1] B:[-∞,∞] C:[-∞,∞] A:[-∞,∞] B:[‘a’,’a’] C:[-∞,∞] A:[-∞,∞] B:[-∞,∞] C:[1,1] A:[-∞,∞] B:(‘a’,∞] C:[-∞,∞] A:[-∞,∞] B:[-∞,∞] C:[2,2] A:[-∞,∞] B:[‘a’,’a’] C:[1,1] A:[-∞,∞] B:(’a’,∞] C:[2,2] A:[-∞,∞] B:[‘a’,∞] C:[1,1] if B=’a’, [2,2] if B>’a’ A:[1,1] B:[‘a’,∞] C:[1,1] if B=’a’, [2,2] if B>’a’ B=’a’ C=1 B>’a’ C=2
JOIN JOIN Scan1(Table) Filter A in [1,1]
Scan2(Table) Filter A=@A AND B in [‘a’,∞]
Scan3(Table) Filter A=@A And B=@B And C = 1 if B=‘a’, C=2 if B>’a’
record id A B C 1 1 ‘9’ 2 1 ‘a’ 3 1 ‘a’ 1 4 1 ‘ab’ 5 1 ‘b’ 1 6 2 ‘c’ 2 …….
record id A B C 1 1 ‘9’ 2 1 ‘a’ 3 1 ‘a’ 1 4 1 ‘ab’ 5 1 ‘b’ 1 6 2 ‘c’ 2 ……. A 1 JOIN
record id A B C 1 1 ‘9’ 2 1 ‘a’ 3 1 ‘a’ 1 4 1 ‘ab’ 5 1 ‘b’ 1 6 2 ‘c’ 2 ……. JOIN A B 1 ‘a’ 1 ‘ab’ 1 ‘b’
JOIN JOIN Scan1(Table) Filter A in [1,1]
Scan2(Table) Filter A=@A AND B in [‘a’,∞]
Scan3(Table) Filter A=@A And B=@B And C = 1 if B=‘a’, C=2 if B>’a’
record id A B C 1 1 ‘9’ 2 1 ‘a’ 3 1 ‘a’ 1 4 1 ‘ab’ 5 1 ‘b’ 1 6 2 ‘c’ 2 …….
record id A B C 1 1 ‘9’ 2 1 ‘a’ 3 1 ‘a’ 1 4 1 ‘ab’ 5 1 ‘b’ 1 6 2 ‘c’ 2 ……. A 1 JOIN
record id A B C 1 1 ‘9’ 2 1 ‘a’ 3 1 ‘a’ 1 4 1 ‘ab’ 5 1 ‘b’ 1 6 2 ‘c’ 2 ……. JOIN A B 1 ‘a’ 1 ‘ab’ 1 ‘b’
Distributed Union Distributed Union Distributed Union Shard 1 Shard 2 Shard 3 Shard 4
Id Name Age Alice 15 1 Bob 20 2 Carol 25 ... ... ... Table 0,1,2,... Alice,Bob,Carol,... 15,20,25,... PAX Page
Id Name Age Alice 15 1 Bob 20 2 Carol 25 ... ... ... Table 0,1,2,... Alice,Bob,Carol,... 15,20,25,... PAX Page Cache 15,20,25 0,Alice,15|1,Bob,20| 2,Carol,25|... Cache Bob,20,2 N-ary Storage Model (NSM) Page Not Used
Id Age 5 1 15 2 20 Id Age 5 3 10 1 15 2 20 3 10 insert
Id Age 5 1 15 2 20 4 25 Id Age 5 3 10 1 15 2 20 4 25 3 10 insert Page 1 Page 2 Page 1 Page 2 Page 3
Id Age 5 1 15 3 10 insert Id Age 2 20 4 25 block 1 block 2 Id Age 5 3 10 1 15 Id Age 2 20 4 25 block 1 block 2
* 21 * 34 * * 21 * 34 * 0,5 1,15 2,20 4,25 ... 3.10
* 21 * 34 * * 21 * 34 * 4,25 ... 0,5 3,10 1,15 2,20
* 21 * 34 * * 21 * 34 * 0,5 3,10 1,15 2,20 4,25 ...
[1]https://cloud.google.com/spanner/docs/whitepapers [2]Bacon DF, Bales N, Bruno N, Cooper BF, Dickinson A, Fikes A, Fraser C, Gubarev A, Joshi M, Kogan E, Lloyd A. Spanner: Becoming a SQL
[3]Chang F, Dean J, Ghemawat S, Hsieh WC, Wallach DA, Burrows M, Chandra T, Fikes A, Gruber RE. Bigtable: A distributed storage system for structured data. ACM Transactions on Computer Systems (TOCS). 2008 Jun 1;26(2):4. [4]https://www.calebcurry.com/blogs/database-design/parent-child-tables [5]Bacon DF, Bales N, Bruno N, Cooper BF, Dickinson A, Fikes A, Fraser C, Gubarev A, Joshi M, Kogan E, Lloyd A. Spanner: Becoming a SQL
[6]https://medium.com/databasss/on-disk-io-part-3-lsm-trees-8b2da218496f [7]Ailamaki A, DeWitt DJ, Hill MD, Skounakis M. Weaving Relations for Cache Performance. InVLDB 2001 Sep 11 (Vol. 1, pp. 169-180). [8]https://ipfs.io/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki/Row-major_order.html [9]https://www.igi-global.com/dictionary/partition-attributes-across-pax/39627 [7]Ailamaki A, DeWitt DJ, Hill MD, Skounakis M. Weaving Relations for Cache Performance. InVLDB 2001 Sep 11 (Vol. 1, pp. 169-180). [9]http://theteacher.info/index.php/architecture-data-comms-and-applications-unit-5/4-organisation-and-structure-of-data/all-topics/3 940-multi-level-indexes [10]https://explainextended.com/2009/07/16/inner-join-vs-cross-apply/