Re: DateTieredCompactionStrategy and static columns

2015-05-01 Thread Jonathan Ellis
I'm down for adding JOIN support within a partition, eventually.  I can see
a lot of stuff I'd rather prioritize higher in the short term though.

On Fri, May 1, 2015 at 8:44 AM, Jonathan Haddad j...@jonhaddad.com wrote:

 I think what Benedict has described feels very much like a very specialized
 version of the following:

 1. Updates to different tables in a batch become atomic if the node is a
 replica for the partition
 2. Supporting Inner joins if the partition key is the same in both tables.

 I'd rather see join support personally :)

 Jon

 On Fri, May 1, 2015 at 6:38 AM graham sanderson gra...@vast.com wrote:

  I 100% agree with Benedict, but just to be clear about my use case
 
  1) We have state of lets say real estate listings
  2) We get field level deltas for them
  3) Previously we would store the base state all the deltas in partition
  and roll them up from the beginning of time (this was a prototype and
 silly
  since there was no expiration strategy)
  4) Preferred plan is to keep current state in a static map (i.e. one
 delta
  field only updates one cell) - we are MVCC but in the common case the
  latest version will be what we want
  5) However we require history, so we’d use the partition to keep TTL
  deltas going backwards from the now state - this seems like a common
  pattern people would want. Note also that sometimes we might need to
 apply
  reverse deltas if C* is ahead of our SOLR indexes
 
  The static columns and the regular columns ARE completely different in
  behavior/lifecycle, so I’d definitely vote for them being treated as
 such.
 
 
   On May 1, 2015, at 7:27 AM, Benedict Elliott Smith 
  belliottsm...@datastax.com wrote:
  
  
   How would it be different from creating an actual real extra table
  instead?
  
  
   There's nothing that warrants making the codebase more complex to
   accomplish something it already does.
  
  
   As far as I was aware, the only point of static columns was to support
  the
   thrift ability to mutate and read them in the same expression, with
   atomicity and isolation. As to whether or not it is more complex, I'm
 not
   at all convinced that it would be. We have had a lot of unexpected
  special
   casing added to ensure they behave correctly (e.g. paging is broken),
 and
   have complicated the comparison/slice logic to accommodate them, so
 that
  it
   is harder to reason about (and to optimise). They also have very
  different
   compaction characteristics, so the complexity on the user is increased
   without their necessarily realising it. All told, it introduces a lot
  more
   subtlety of behaviour than there would be with a separate set of
  sstables,
   or perhaps a separate file attached to each sstable.
  
   Of course, we've already implemented it as a specialisation of the
   slice/comparator, I think because it seemed like the least frictional
  path
   to do so, but that doesn't mean it is the least complex. It does mean
  it's
   the least work (assuming we're now on top of the bugs), which is its
 own
   virtue.
  
   There are some advantages to having them managed separately, and
  advantages
   to having them combined. Combined, for small partitions, they can be
 read
   in the same seek. However for large partitions this is no longer true,
  and
   we may behave much worse by polluting the page cache with lots of
  unwanted
   data that is adjacent to the static columns. If they were managed
   separately, the page cache would be populated mostly with other static
   columns, which may be more likely of use. We could quite easily have a
   static column cache, also, and completely avoid merging them. Or at
  least
   we could easily read them with collectTimeOrderedData instead of
   collectAllData semantics.
  
   All told, it certainly isn't a terrible idea, and shouldn't be
 dismissed
  so
   readily. Personally I think in the long run whether or not we manage
  static
   columns together with non-static columns is dependent on if we intend
 to
   add tiered static columns (i.e., if each level of clustering
 component
   can have columns associated with it). If we do, we should definitely
 keep
   it all inline. If not, it probably permits a lot better behaviour to
   separate them, since it's easier to reason about and improve their
  distinct
   characteristics.
  
  
   On Fri, May 1, 2015 at 1:24 AM, graham sanderson gra...@vast.com
  wrote:
  
   Well you lose the atomicity and isolation, but in this case that is
   probably fine
  
   That said, in every interaction I’ve had with static columns, they
 seem
  to
   be an odd duck (e.g. adding or complicating range slices), perhaps
  worthy
   of their own code path and sstables. Just food for thought.
  
   On Apr 30, 2015, at 7:13 PM, Jonathan Haddad j...@jonhaddad.com
  wrote:
  
   If you want it in a separate sstable, just use a separate table.
  There's
   nothing that warrants making the codebase more complex to accomplish
   something it 

Re: DateTieredCompactionStrategy and static columns

2015-05-01 Thread Benedict Elliott Smith
It also doesn't solve the atomicity problem, which is its own challenge. We
would probably need to merge the memtables for the entire keyspace/node,
and split them out into their own sstables on flush. Or introduce mutual
exclusion at the partition key level for the node.

On Fri, May 1, 2015 at 3:01 PM, Jonathan Ellis jbel...@gmail.com wrote:

 I'm down for adding JOIN support within a partition, eventually.  I can see
 a lot of stuff I'd rather prioritize higher in the short term though.

 On Fri, May 1, 2015 at 8:44 AM, Jonathan Haddad j...@jonhaddad.com wrote:

  I think what Benedict has described feels very much like a very
 specialized
  version of the following:
 
  1. Updates to different tables in a batch become atomic if the node is a
  replica for the partition
  2. Supporting Inner joins if the partition key is the same in both
 tables.
 
  I'd rather see join support personally :)
 
  Jon
 
  On Fri, May 1, 2015 at 6:38 AM graham sanderson gra...@vast.com wrote:
 
   I 100% agree with Benedict, but just to be clear about my use case
  
   1) We have state of lets say real estate listings
   2) We get field level deltas for them
   3) Previously we would store the base state all the deltas in partition
   and roll them up from the beginning of time (this was a prototype and
  silly
   since there was no expiration strategy)
   4) Preferred plan is to keep current state in a static map (i.e. one
  delta
   field only updates one cell) - we are MVCC but in the common case the
   latest version will be what we want
   5) However we require history, so we’d use the partition to keep TTL
   deltas going backwards from the now state - this seems like a common
   pattern people would want. Note also that sometimes we might need to
  apply
   reverse deltas if C* is ahead of our SOLR indexes
  
   The static columns and the regular columns ARE completely different in
   behavior/lifecycle, so I’d definitely vote for them being treated as
  such.
  
  
On May 1, 2015, at 7:27 AM, Benedict Elliott Smith 
   belliottsm...@datastax.com wrote:
   
   
How would it be different from creating an actual real extra table
   instead?
   
   
There's nothing that warrants making the codebase more complex to
accomplish something it already does.
   
   
As far as I was aware, the only point of static columns was to
 support
   the
thrift ability to mutate and read them in the same expression, with
atomicity and isolation. As to whether or not it is more complex, I'm
  not
at all convinced that it would be. We have had a lot of unexpected
   special
casing added to ensure they behave correctly (e.g. paging is broken),
  and
have complicated the comparison/slice logic to accommodate them, so
  that
   it
is harder to reason about (and to optimise). They also have very
   different
compaction characteristics, so the complexity on the user is
 increased
without their necessarily realising it. All told, it introduces a lot
   more
subtlety of behaviour than there would be with a separate set of
   sstables,
or perhaps a separate file attached to each sstable.
   
Of course, we've already implemented it as a specialisation of the
slice/comparator, I think because it seemed like the least frictional
   path
to do so, but that doesn't mean it is the least complex. It does mean
   it's
the least work (assuming we're now on top of the bugs), which is its
  own
virtue.
   
There are some advantages to having them managed separately, and
   advantages
to having them combined. Combined, for small partitions, they can be
  read
in the same seek. However for large partitions this is no longer
 true,
   and
we may behave much worse by polluting the page cache with lots of
   unwanted
data that is adjacent to the static columns. If they were managed
separately, the page cache would be populated mostly with other
 static
columns, which may be more likely of use. We could quite easily have
 a
static column cache, also, and completely avoid merging them. Or at
   least
we could easily read them with collectTimeOrderedData instead of
collectAllData semantics.
   
All told, it certainly isn't a terrible idea, and shouldn't be
  dismissed
   so
readily. Personally I think in the long run whether or not we manage
   static
columns together with non-static columns is dependent on if we intend
  to
add tiered static columns (i.e., if each level of clustering
  component
can have columns associated with it). If we do, we should definitely
  keep
it all inline. If not, it probably permits a lot better behaviour to
separate them, since it's easier to reason about and improve their
   distinct
characteristics.
   
   
On Fri, May 1, 2015 at 1:24 AM, graham sanderson gra...@vast.com
   wrote:
   
Well you lose the atomicity and isolation, but in this case that is
probably fine
   
 

Re: DateTieredCompactionStrategy and static columns

2015-05-01 Thread graham sanderson
Naively (I may be missing something) it seems much easier to flush a single 
memtable to more than one stable on disk (static and non static) and then allow 
for separate compaction of those

 On May 1, 2015, at 9:06 AM, Benedict Elliott Smith 
 belliottsm...@datastax.com wrote:
 
 It also doesn't solve the atomicity problem, which is its own challenge. We
 would probably need to merge the memtables for the entire keyspace/node,
 and split them out into their own sstables on flush. Or introduce mutual
 exclusion at the partition key level for the node.
 
 On Fri, May 1, 2015 at 3:01 PM, Jonathan Ellis jbel...@gmail.com wrote:
 
 I'm down for adding JOIN support within a partition, eventually.  I can see
 a lot of stuff I'd rather prioritize higher in the short term though.
 
 On Fri, May 1, 2015 at 8:44 AM, Jonathan Haddad j...@jonhaddad.com wrote:
 
 I think what Benedict has described feels very much like a very
 specialized
 version of the following:
 
 1. Updates to different tables in a batch become atomic if the node is a
 replica for the partition
 2. Supporting Inner joins if the partition key is the same in both
 tables.
 
 I'd rather see join support personally :)
 
 Jon
 
 On Fri, May 1, 2015 at 6:38 AM graham sanderson gra...@vast.com wrote:
 
 I 100% agree with Benedict, but just to be clear about my use case
 
 1) We have state of lets say real estate listings
 2) We get field level deltas for them
 3) Previously we would store the base state all the deltas in partition
 and roll them up from the beginning of time (this was a prototype and
 silly
 since there was no expiration strategy)
 4) Preferred plan is to keep current state in a static map (i.e. one
 delta
 field only updates one cell) - we are MVCC but in the common case the
 latest version will be what we want
 5) However we require history, so we’d use the partition to keep TTL
 deltas going backwards from the now state - this seems like a common
 pattern people would want. Note also that sometimes we might need to
 apply
 reverse deltas if C* is ahead of our SOLR indexes
 
 The static columns and the regular columns ARE completely different in
 behavior/lifecycle, so I’d definitely vote for them being treated as
 such.
 
 
 On May 1, 2015, at 7:27 AM, Benedict Elliott Smith 
 belliottsm...@datastax.com wrote:
 
 
 How would it be different from creating an actual real extra table
 instead?
 
 
 There's nothing that warrants making the codebase more complex to
 accomplish something it already does.
 
 
 As far as I was aware, the only point of static columns was to
 support
 the
 thrift ability to mutate and read them in the same expression, with
 atomicity and isolation. As to whether or not it is more complex, I'm
 not
 at all convinced that it would be. We have had a lot of unexpected
 special
 casing added to ensure they behave correctly (e.g. paging is broken),
 and
 have complicated the comparison/slice logic to accommodate them, so
 that
 it
 is harder to reason about (and to optimise). They also have very
 different
 compaction characteristics, so the complexity on the user is
 increased
 without their necessarily realising it. All told, it introduces a lot
 more
 subtlety of behaviour than there would be with a separate set of
 sstables,
 or perhaps a separate file attached to each sstable.
 
 Of course, we've already implemented it as a specialisation of the
 slice/comparator, I think because it seemed like the least frictional
 path
 to do so, but that doesn't mean it is the least complex. It does mean
 it's
 the least work (assuming we're now on top of the bugs), which is its
 own
 virtue.
 
 There are some advantages to having them managed separately, and
 advantages
 to having them combined. Combined, for small partitions, they can be
 read
 in the same seek. However for large partitions this is no longer
 true,
 and
 we may behave much worse by polluting the page cache with lots of
 unwanted
 data that is adjacent to the static columns. If they were managed
 separately, the page cache would be populated mostly with other
 static
 columns, which may be more likely of use. We could quite easily have
 a
 static column cache, also, and completely avoid merging them. Or at
 least
 we could easily read them with collectTimeOrderedData instead of
 collectAllData semantics.
 
 All told, it certainly isn't a terrible idea, and shouldn't be
 dismissed
 so
 readily. Personally I think in the long run whether or not we manage
 static
 columns together with non-static columns is dependent on if we intend
 to
 add tiered static columns (i.e., if each level of clustering
 component
 can have columns associated with it). If we do, we should definitely
 keep
 it all inline. If not, it probably permits a lot better behaviour to
 separate them, since it's easier to reason about and improve their
 distinct
 characteristics.
 
 
 On Fri, May 1, 2015 at 1:24 AM, graham sanderson gra...@vast.com
 wrote:
 
 Well you lose the atomicity and 

Re: DateTieredCompactionStrategy and static columns

2015-05-01 Thread Benedict Elliott Smith

 How would it be different from creating an actual real extra table instead?


There's nothing that warrants making the codebase more complex to
 accomplish something it already does.


As far as I was aware, the only point of static columns was to support the
thrift ability to mutate and read them in the same expression, with
atomicity and isolation. As to whether or not it is more complex, I'm not
at all convinced that it would be. We have had a lot of unexpected special
casing added to ensure they behave correctly (e.g. paging is broken), and
have complicated the comparison/slice logic to accommodate them, so that it
is harder to reason about (and to optimise). They also have very different
compaction characteristics, so the complexity on the user is increased
without their necessarily realising it. All told, it introduces a lot more
subtlety of behaviour than there would be with a separate set of sstables,
or perhaps a separate file attached to each sstable.

Of course, we've already implemented it as a specialisation of the
slice/comparator, I think because it seemed like the least frictional path
to do so, but that doesn't mean it is the least complex. It does mean it's
the least work (assuming we're now on top of the bugs), which is its own
virtue.

There are some advantages to having them managed separately, and advantages
to having them combined. Combined, for small partitions, they can be read
in the same seek. However for large partitions this is no longer true, and
we may behave much worse by polluting the page cache with lots of unwanted
data that is adjacent to the static columns. If they were managed
separately, the page cache would be populated mostly with other static
columns, which may be more likely of use. We could quite easily have a
static column cache, also, and completely avoid merging them. Or at least
we could easily read them with collectTimeOrderedData instead of
collectAllData semantics.

All told, it certainly isn't a terrible idea, and shouldn't be dismissed so
readily. Personally I think in the long run whether or not we manage static
columns together with non-static columns is dependent on if we intend to
add tiered static columns (i.e., if each level of clustering component
can have columns associated with it). If we do, we should definitely keep
it all inline. If not, it probably permits a lot better behaviour to
separate them, since it's easier to reason about and improve their distinct
characteristics.


On Fri, May 1, 2015 at 1:24 AM, graham sanderson gra...@vast.com wrote:

 Well you lose the atomicity and isolation, but in this case that is
 probably fine

 That said, in every interaction I’ve had with static columns, they seem to
 be an odd duck (e.g. adding or complicating range slices), perhaps worthy
 of their own code path and sstables. Just food for thought.

  On Apr 30, 2015, at 7:13 PM, Jonathan Haddad j...@jonhaddad.com wrote:
 
  If you want it in a separate sstable, just use a separate table.  There's
  nothing that warrants making the codebase more complex to accomplish
  something it already does.
 
  On Thu, Apr 30, 2015 at 5:07 PM graham sanderson gra...@vast.com
 wrote:
 
  Anyone here have an opinion; how realistic would it be to have a
 separate
  memtable/sstable for static columns?
 
  Begin forwarded message:
 
  *From: *Jonathan Haddad j...@jonhaddad.com
  *Subject: **Re: DateTieredCompactionStrategy and static columns*
  *Date: *April 30, 2015 at 3:55:46 PM CDT
  *To: *u...@cassandra.apache.org
  *Reply-To: *u...@cassandra.apache.org
 
 
  I suspect this will kill the benefit of DTCS, but haven't tested it to
 be
  100% here.
 
  The benefit of DTCS is that sstables are selected for compaction based
 on
  the age of the data, not their size.  When you mix TTL'ed data and non
  TTL'ed data, you end up screwing with the drop the entire SSTable
  optimization.  I don't believe this is any different just because you're
  mixing in static columns.  What I think will happen is you'll end up
 with
  an sstable that's almost entirely TTL'ed with a few static columns that
  will never get compacted or dropped.  Pretty much the worst scenario I
 can
  think of.
 
 
 
  On Thu, Apr 30, 2015 at 11:21 AM graham sanderson gra...@vast.com
 wrote:
 
  I have a potential use case I haven’t had a chance to prototype yet,
  which would normally be a good candidate for DTCS (i.e. data delivered
 in
  order and a fixed TTL), however with every write we’d also be updating
 some
  static cells (namely a few key/values in a static maptext.text CQL
  column). There could also be explicit deletes of keys in the static
 map,
  though that’s not 100% necessary.
 
  Since those columns don’t have TTL, without reading thru the code code
  and/or trying it, I have no idea what effect this has on DTCS (perhaps
 it
  needs to use separate sstables for static columns). Has anyone tried
 this.
  If not I eventually will and will report back.
 
 




Re: DateTieredCompactionStrategy and static columns

2015-05-01 Thread graham sanderson
I 100% agree with Benedict, but just to be clear about my use case

1) We have state of lets say real estate listings
2) We get field level deltas for them
3) Previously we would store the base state all the deltas in partition and 
roll them up from the beginning of time (this was a prototype and silly since 
there was no expiration strategy)
4) Preferred plan is to keep current state in a static map (i.e. one delta 
field only updates one cell) - we are MVCC but in the common case the latest 
version will be what we want
5) However we require history, so we’d use the partition to keep TTL deltas 
going backwards from the now state - this seems like a common pattern people 
would want. Note also that sometimes we might need to apply reverse deltas if 
C* is ahead of our SOLR indexes

The static columns and the regular columns ARE completely different in 
behavior/lifecycle, so I’d definitely vote for them being treated as such.


 On May 1, 2015, at 7:27 AM, Benedict Elliott Smith 
 belliottsm...@datastax.com wrote:
 
 
 How would it be different from creating an actual real extra table instead?
 
 
 There's nothing that warrants making the codebase more complex to
 accomplish something it already does.
 
 
 As far as I was aware, the only point of static columns was to support the
 thrift ability to mutate and read them in the same expression, with
 atomicity and isolation. As to whether or not it is more complex, I'm not
 at all convinced that it would be. We have had a lot of unexpected special
 casing added to ensure they behave correctly (e.g. paging is broken), and
 have complicated the comparison/slice logic to accommodate them, so that it
 is harder to reason about (and to optimise). They also have very different
 compaction characteristics, so the complexity on the user is increased
 without their necessarily realising it. All told, it introduces a lot more
 subtlety of behaviour than there would be with a separate set of sstables,
 or perhaps a separate file attached to each sstable.
 
 Of course, we've already implemented it as a specialisation of the
 slice/comparator, I think because it seemed like the least frictional path
 to do so, but that doesn't mean it is the least complex. It does mean it's
 the least work (assuming we're now on top of the bugs), which is its own
 virtue.
 
 There are some advantages to having them managed separately, and advantages
 to having them combined. Combined, for small partitions, they can be read
 in the same seek. However for large partitions this is no longer true, and
 we may behave much worse by polluting the page cache with lots of unwanted
 data that is adjacent to the static columns. If they were managed
 separately, the page cache would be populated mostly with other static
 columns, which may be more likely of use. We could quite easily have a
 static column cache, also, and completely avoid merging them. Or at least
 we could easily read them with collectTimeOrderedData instead of
 collectAllData semantics.
 
 All told, it certainly isn't a terrible idea, and shouldn't be dismissed so
 readily. Personally I think in the long run whether or not we manage static
 columns together with non-static columns is dependent on if we intend to
 add tiered static columns (i.e., if each level of clustering component
 can have columns associated with it). If we do, we should definitely keep
 it all inline. If not, it probably permits a lot better behaviour to
 separate them, since it's easier to reason about and improve their distinct
 characteristics.
 
 
 On Fri, May 1, 2015 at 1:24 AM, graham sanderson gra...@vast.com wrote:
 
 Well you lose the atomicity and isolation, but in this case that is
 probably fine
 
 That said, in every interaction I’ve had with static columns, they seem to
 be an odd duck (e.g. adding or complicating range slices), perhaps worthy
 of their own code path and sstables. Just food for thought.
 
 On Apr 30, 2015, at 7:13 PM, Jonathan Haddad j...@jonhaddad.com wrote:
 
 If you want it in a separate sstable, just use a separate table.  There's
 nothing that warrants making the codebase more complex to accomplish
 something it already does.
 
 On Thu, Apr 30, 2015 at 5:07 PM graham sanderson gra...@vast.com
 wrote:
 
 Anyone here have an opinion; how realistic would it be to have a
 separate
 memtable/sstable for static columns?
 
 Begin forwarded message:
 
 *From: *Jonathan Haddad j...@jonhaddad.com
 *Subject: **Re: DateTieredCompactionStrategy and static columns*
 *Date: *April 30, 2015 at 3:55:46 PM CDT
 *To: *u...@cassandra.apache.org
 *Reply-To: *u...@cassandra.apache.org
 
 
 I suspect this will kill the benefit of DTCS, but haven't tested it to
 be
 100% here.
 
 The benefit of DTCS is that sstables are selected for compaction based
 on
 the age of the data, not their size.  When you mix TTL'ed data and non
 TTL'ed data, you end up screwing with the drop the entire SSTable
 optimization.  I don't believe this is any different 

Re: DateTieredCompactionStrategy and static columns

2015-05-01 Thread Jonathan Haddad
I think what Benedict has described feels very much like a very specialized
version of the following:

1. Updates to different tables in a batch become atomic if the node is a
replica for the partition
2. Supporting Inner joins if the partition key is the same in both tables.

I'd rather see join support personally :)

Jon

On Fri, May 1, 2015 at 6:38 AM graham sanderson gra...@vast.com wrote:

 I 100% agree with Benedict, but just to be clear about my use case

 1) We have state of lets say real estate listings
 2) We get field level deltas for them
 3) Previously we would store the base state all the deltas in partition
 and roll them up from the beginning of time (this was a prototype and silly
 since there was no expiration strategy)
 4) Preferred plan is to keep current state in a static map (i.e. one delta
 field only updates one cell) - we are MVCC but in the common case the
 latest version will be what we want
 5) However we require history, so we’d use the partition to keep TTL
 deltas going backwards from the now state - this seems like a common
 pattern people would want. Note also that sometimes we might need to apply
 reverse deltas if C* is ahead of our SOLR indexes

 The static columns and the regular columns ARE completely different in
 behavior/lifecycle, so I’d definitely vote for them being treated as such.


  On May 1, 2015, at 7:27 AM, Benedict Elliott Smith 
 belliottsm...@datastax.com wrote:
 
 
  How would it be different from creating an actual real extra table
 instead?
 
 
  There's nothing that warrants making the codebase more complex to
  accomplish something it already does.
 
 
  As far as I was aware, the only point of static columns was to support
 the
  thrift ability to mutate and read them in the same expression, with
  atomicity and isolation. As to whether or not it is more complex, I'm not
  at all convinced that it would be. We have had a lot of unexpected
 special
  casing added to ensure they behave correctly (e.g. paging is broken), and
  have complicated the comparison/slice logic to accommodate them, so that
 it
  is harder to reason about (and to optimise). They also have very
 different
  compaction characteristics, so the complexity on the user is increased
  without their necessarily realising it. All told, it introduces a lot
 more
  subtlety of behaviour than there would be with a separate set of
 sstables,
  or perhaps a separate file attached to each sstable.
 
  Of course, we've already implemented it as a specialisation of the
  slice/comparator, I think because it seemed like the least frictional
 path
  to do so, but that doesn't mean it is the least complex. It does mean
 it's
  the least work (assuming we're now on top of the bugs), which is its own
  virtue.
 
  There are some advantages to having them managed separately, and
 advantages
  to having them combined. Combined, for small partitions, they can be read
  in the same seek. However for large partitions this is no longer true,
 and
  we may behave much worse by polluting the page cache with lots of
 unwanted
  data that is adjacent to the static columns. If they were managed
  separately, the page cache would be populated mostly with other static
  columns, which may be more likely of use. We could quite easily have a
  static column cache, also, and completely avoid merging them. Or at
 least
  we could easily read them with collectTimeOrderedData instead of
  collectAllData semantics.
 
  All told, it certainly isn't a terrible idea, and shouldn't be dismissed
 so
  readily. Personally I think in the long run whether or not we manage
 static
  columns together with non-static columns is dependent on if we intend to
  add tiered static columns (i.e., if each level of clustering component
  can have columns associated with it). If we do, we should definitely keep
  it all inline. If not, it probably permits a lot better behaviour to
  separate them, since it's easier to reason about and improve their
 distinct
  characteristics.
 
 
  On Fri, May 1, 2015 at 1:24 AM, graham sanderson gra...@vast.com
 wrote:
 
  Well you lose the atomicity and isolation, but in this case that is
  probably fine
 
  That said, in every interaction I’ve had with static columns, they seem
 to
  be an odd duck (e.g. adding or complicating range slices), perhaps
 worthy
  of their own code path and sstables. Just food for thought.
 
  On Apr 30, 2015, at 7:13 PM, Jonathan Haddad j...@jonhaddad.com
 wrote:
 
  If you want it in a separate sstable, just use a separate table.
 There's
  nothing that warrants making the codebase more complex to accomplish
  something it already does.
 
  On Thu, Apr 30, 2015 at 5:07 PM graham sanderson gra...@vast.com
  wrote:
 
  Anyone here have an opinion; how realistic would it be to have a
  separate
  memtable/sstable for static columns?
 
  Begin forwarded message:
 
  *From: *Jonathan Haddad j...@jonhaddad.com
  *Subject: **Re: DateTieredCompactionStrategy and static