0% found this document useful (0 votes)
49 views

Differential Buffer

Differential Buffer is used to store inserted or updated tuples separately from the main compressed data store. This allows faster updates by avoiding recompression during inserts or updates. Tuples are stored in the Differential Buffer until they are merged back into the main store during periodic consolidation. Updates are performed by writing the updated tuple to the Differential Buffer and maintaining a Cache Sensitive B+ tree for faster searching.

Uploaded by

Revanth gowda
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views

Differential Buffer

Differential Buffer is used to store inserted or updated tuples separately from the main compressed data store. This allows faster updates by avoiding recompression during inserts or updates. Tuples are stored in the Differential Buffer until they are merged back into the main store during periodic consolidation. Updates are performed by writing the updated tuple to the Differential Buffer and maintaining a Cache Sensitive B+ tree for faster searching.

Uploaded by

Revanth gowda
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Differential Buffer

Prof. Hasso Plattner

Motivation
¨  Inser&ng  new  tuples  into  a  compressed  structure  can  be  expensive  
§  New  values  may  require  a  reorganiza&on  of  the  dic&onary  
§  Number  of  bits  required  to  encode  all  dic&onary  values  may  change  
§  A>ribute  vector  has  to  be  reorganized  

¨  Dele&on  of  tuples  is  expensive  


§  All  a>ribute  vectors  have  to  be  reorganized  
§  valueIDs  of  subsequent  tuples  have  to  be  adjusted  

2  
Differential Buffer
¨  New  values  are  wri>en  to  a  dedicated  differen&al  buffer  (delta)  
¨  Cache  Sensi&ve  B+  tree  (CSB+)  used  for  faster  search  on  delta  

Read   Write  
world_population
…   …  
fname   Table fname  
A>ribute  Vector   Dic&onary   A>ribute  Vector  

Read Operations
Data Modifying

Dic&onary  
0 0   0 Anton   Main
0 0  
Operations

1 1   1 Hanna   Store
1 1  
(compressed)  

Table
2 1   2 1  
2 Michael   0   Angela   CSB+  
3 3   3 2  
3 Differential
Sophie   1   Klaus  
4 2  
Buffer 2   Andre  
5 1  

up  to  50,000  
8  Billion  entries   entries  
3   Main  Store   Differen&al  Buffer  

Differential Buffer
¨  Inserts  of  new  values  are  faster,  because  dic&onary  and  
a>ribute  vector  does  not  need  to  be  resorted  
¨  Range  select  on  differen&al  buffer  expensive,  based  on  
unsorted  dic&onary  
¨  Differen&al  Buffer  requires  more  memory:  
§  No  a>ribute  vector  compression  
§  Addi&onal  CSB+  tree  for  dic&onary  

4  
Tuple Lifetime
Michael  Berg  moves  from  Berlin  to  Potsdam  
Table:  world_popula&on  
recId   fname   lname   gender   country   city   birthday  
Main  Store  
0   Mar&n   Albrecht   m   GER   Berlin   08-­‐05-­‐1955  
1   Michael   Berg   m   GER   Berlin   03-­‐05-­‐1970  
2   Hanna   Schulze   f   GER   Hamburg   04-­‐04-­‐1968  
3   Anton   Meyer   m   AUT   Innsbruck   10-­‐20-­‐1992  
4   Ulrike   Schulze   f   GER   Potsdam   09-­‐03-­‐1977  
5   Sophie   Schulze   f   GER   Rostock   06-­‐20-­‐2012  
...   ...   ...   ...   ...   ...   ...  
8  ×  109   Zacharias   Perdopolus   m   GRE   Athen   03-­‐12-­‐1979  

Differen&al  Buffer  
UPDATE    ‘world_popula*on’  
SET    city=‘Potsdam’  
WHERE    fname=  “Michael”  AND  lname=“Berg”  AND  city=“Berlin”  
LIMIT  1  
5  

Tuple Lifetime
Michael  Berg  moves  from  Berlin  to  Potsdam  
Table:  world_popula&on  
recId   fname   lname   gender   country   city   birthday  
Main  Store  
0   Mar&n   Albrecht   m   GER   Berlin   08-­‐05-­‐1955  
1   Michael   Berg   m   GER   Berlin   03-­‐05-­‐1970  
2   Hanna   Schulze   f   GER   Hamburg   04-­‐04-­‐1968  
3   Anton   Meyer   m   AUT   Innsbruck   10-­‐20-­‐1992  
4   Ulrike   Schulze   f   GER   Potsdam   09-­‐03-­‐1977  
5   Sophie   Schulze   f   GER   Rostock   06-­‐20-­‐2012  
...   ...   ...   ...   ...   ...   ...  
8  ×  109   Zacharias   Perdopolus   m   GRE   Athen   03-­‐12-­‐1979  

Differen&al  Buffer  
UPDATE    ‘world_popula*on’  
SET    city=‘Potsdam’  
WHERE    fname=  “Michael”  AND  lname=“Berg”  AND  city=“Berlin”  
LIMIT  1  
6  
Tuple Lifetime
Michael  Berg  moves  from  Berlin  to  Potsdam  
Table:  world_popula&on  
recId   fname   lname   gender   country   city   birthday  
Main  Store  
0   Mar&n   Albrecht   m   GER   Berlin   08-­‐05-­‐1955  
1   Michael   Berg   m   GER   Berlin   03-­‐05-­‐1970  
2   Hanna   Schulze   f   GER   Hamburg   04-­‐04-­‐1968  
3   Anton   Meyer   m   AUT   Innsbruck   10-­‐20-­‐1992  
4   Ulrike   Schulze   f   GER   Potsdam   09-­‐03-­‐1977  
5   Sophie   Schulze   f   GER   Rostock   06-­‐20-­‐2012  
...   ...   ...   ...   ...   ...   ...  
8  ×  109   Zacharias   Perdopolus   m   GRE   Athen   03-­‐12-­‐1979  

0   Michael   Berg   m   GER   Potsdam   03-­‐05-­‐1970   Differen&al  Buffer  


UPDATE    ‘world_popula*on’  
SET    city=‘Potsdam’  
WHERE    fname=  “Michael”  AND  lname=“Berg”  AND  city=“Berlin”  
LIMIT  1  
7  

Tuple Lifetime
¨  Problem:  Tuples  are  present  in  Main  Store  and  Differen&al  Buffer  
¨  Tuples  of  a  table  are  marked  by  a  validity  vector  to  reduce  the  
required  amount  of  reorganiza&on  steps  (like  an  a>ribute  vector  
for  validity)  
¨  Invalidated  tuples  stay  in  the  database  table  un&l  the  next  
reorganiza&on  takes  place  
¨  Search  results  are  reduced  using  the  validity  vector  
¨  1  bit  required  per  database  tuple  

8  
Tuple Lifetime
Michael  Berg  moves  from  Berlin  to  Potsdam  
Table:  world_popula&on  
recId   fname   lname   gender   country   city   birthday   valid   Main  Store  
0   Mar&n   Albrecht   m   GER   Berlin   08-­‐05-­‐1955   1  
1   Michael   Berg   m   GER   Berlin   03-­‐05-­‐1970   0  
2   Hanna   Schulze   f   GER   Hamburg   04-­‐04-­‐1968   1  
3   Anton   Meyer   m   AUT   Innsbruck   10-­‐20-­‐1992   1  
4   Ulrike   Schulze   f   GER   Potsdam   09-­‐03-­‐1977   1  
5   Sophie   Schulze   f   GER   Rostock   06-­‐20-­‐2012   1  
...   ...   ...   ...   ...   ...   ...  
8  ×  109   Zacharias   Perdopolus   m   GRE   Athen   03-­‐12-­‐1979   1  

0   Michael   Berg   m   GER   Potsdam   03-­‐05-­‐1970   1   Differen&al    


Buffer  
UPDATE    ‘world_popula*on’  
SET    city=‘Potsdam’  
WHERE    fname=  “Michael”  AND  lname=“Berg”  AND  city=“Berlin”  
LIMIT  1  
9  

Tuple Lifetime
Michael  Berg  moves  from  Berlin  to  Potsdam  
Table:  world_popula&on  
recId   fname   lname   gender   country   city   birthday   valid   Main  Store  
0   Mar&n   Albrecht   m   GER   Berlin   08-­‐05-­‐1955   1  
1   Michael   Berg   m   GER   Berlin   03-­‐05-­‐1970   0  
2   Hanna   Schulze   f   GER   Hamburg   04-­‐04-­‐1968   1  
3   Anton   Meyer   m   AUT   Innsbruck   10-­‐20-­‐1992   1  
4   Ulrike   Schulze   f   GER   Potsdam   09-­‐03-­‐1977   1  
5   Sophie   Schulze   f   GER   Rostock   06-­‐20-­‐2012   1  
...   ...   ...   ...   ...   ...   ...  
8  ×  109   Zacharias   Perdopolus   m   GRE   Athen   03-­‐12-­‐1979   1  

0   Michael   Berg   m   GER   Potsdam   03-­‐05-­‐1970   1   Differen&al    


Buffer  
UPDATE    ‘world_popula*on’  
SET    city=‘Potsdam’  
WHERE    fname=  “Michael”  AND  lname=“Berg”  AND  city=“Berlin”  
LIMIT  1  
10  

You might also like