Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for 
change notification.

The "FileFormatDesignDoc" page has been changed by StuHood.
The comment on this change is: Embed range metadata directly into the 
collection of tuples, and differentiate it via types.
http://wiki.apache.org/cassandra/FileFormatDesignDoc?action=diff&rev1=36&rev2=37

--------------------------------------------------

  
  Ranges are stored as two values embedded in the array of tuples in a chunk, 
and marked with a ''range_*'' type as described above.
  
- || ''name1'' - ''left'' || ''name1'' - ''right''  || ''parent_change'' || 
''null?'' ||
- || havarti || muenster || 0 || 0 ||
- || || || 1 || 1 ||
+ || ''name1''  || ''parent_change'' || ''type'' ||
+ || brie || 0 || standard ||
+ || gouda || 0 || standard ||
+ || havarti || 0 || range_begin ||
+ || muenster || 0 || range_end ||
+ || swiss || 0 || standard ||
+ || apple || 1 || standard ||
+ || pear  || 1 || standard ||
  
- This example shows a range tombstone for values at level "name1" between 
'havarti' and 'muenster': the chunk for the "name1" level stores a pair of 
range tuples for the 'cheese' parent and nulls are stored for parents without 
any range metadata. The end result is that the span stores a tombstone from 
('cheese', 'havarti', <empty>) to ('cheese', 'muenster', null), where <empty> 
is the smallest value, and null is the largest value.
+ This example adds type information and range metadata for values at level 
"name1" between 'havarti' and 'muenster': the chunk for the "name1" level 
stores a pair of tuples for the 'cheese' parent. The end result is that the 
span stores a tombstone from ('cheese', 'havarti', <empty>) to ('cheese', 
'muenster', null), where <empty> is the smallest value, and null is the largest 
value.
  
+ In cases where parents are too wide to fit in a single span, range metadata 
is also used to indicate that only a portion of a parent is present in a given 
span. If a parent value in a span ends while a range is still open, then it 
will continue in further spans.
- Note that it is not possible for ranges for a parent to overlap: in this 
case, the ranges would be resolved such that the intersection was given the 
winning timestamp, and the two remainders would use their original timestamps.
- 
- ==== Other uses ====
- 
- In cases where parents are too wide to fit in a single span, range metadata 
should also be used to indicate how much of a particular parent is present in a 
given span.
- 
- ==== Effect of ordering ====
- 
- When a chunk is marked as ''self'' ordered, range metadata should be affected 
as well: therefore, the number of ranges that need to be represented in a chunk 
should also factor into the cardinality threshold that toggles a chunk between 
''self'' and ''parent'' ordering.
  
  === Value Metadata ===
  

Reply via email to