cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Cassandra Wiki] Update of "FileFormatDesignDoc" by StuHood
Date Mon, 02 May 2011 03:32:26 GMT
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 ===
  

Mime
View raw message