Table of Contents |
---|
Status
Current state: Under DiscussionCommitted
Discussion thread: here
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:
...
Tables that do not specify the memtable parameter will use the default configuration, which can be specified in the “memtable” option in cassandra.yaml:
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.
...