Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Status

Current state: AcceptedCommitted

Discussion threadhere

JIRA:  TBD CASSANDRA-17034

Released: Unreleased


Motivation

...

New or Changed Public Interfaces

Database users

(Note: the final version ended up with a somewhat different scheme described in the bundled documentation.)

The primary user-facing change is the addition of a new table parameter “memtable”, specified in table definitions like this:

...

memtable:
  class: SkipListMemtable

Alternatively, to support the need for per-node configuration (e.g. to better optimize heterogeneous deployments, or to test a memtable implementation switch on a small set of nodes), the API can be configured using templates specified in cassandra.yaml, for example:

memtable_templates:
    trie:
        class: TrieMemtable
        shards: 16
    skiplist:
        class: SkipListMemtable
memtable:
    template: skiplist

(which defines two templates and specifies the default memtable implementation to use). The template can then be specified in the table definition like this:

CREATE TABLE ... WITH memtable = { 'template' : 'trie' }.

The initial implementation may leave existing memtable configuration parameters (memory mode, memory size limits and flush thresholds, expiration time) as top-level parameters in the yaml, with the expectation that they will be gradually replaced with memtable-specific ones and deprecated.

...