cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dikang Gu (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-13553) Map C* Wide column to RocksDB key value data model
Date Wed, 24 May 2017 23:51:04 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-13553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16023900#comment-16023900
] 

Dikang Gu commented on CASSANDRA-13553:
---------------------------------------

This will include changes both in Cassandra and RocksDB, we already submitted a PR for the
rocksdb merge operator changes, https://github.com/facebook/rocksdb/pull/2289/files

> Map C* Wide column to RocksDB key value data model
> --------------------------------------------------
>
>                 Key: CASSANDRA-13553
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13553
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: Core
>            Reporter: Dikang Gu
>            Assignee: Dikang Gu
>
> The goal for this ticket is to find a way to map Cassandra's wide column data model to
RocksDB's key value data model.
> To support most common C* queries on top of RocksDB, we plan to use this strategy, for
each row in Cassandra:
> 1. Encode Cassandra partition key + clustering keys into RocksDB key.
> 2. Encode rest of Cassandra columns into RocksDB value.
> With this approach, there are two major problems we need to solve:
> 1. After we encode C* keys into RocksDB key, we need to preserve the same sorting order
in RocksDB byte comparator, as in original data type.
> 2. Support timestamp, ttl, and tombestone on the values.
> To solve problem 1, we need to carefully design the encoding algorithm for each data
type. Fortunately, there are some existing libraries we can play with, such as orderly (https://github.com/ndimiduk/orderly),
which is used by HBase. Or flatbuffer (https://github.com/google/flatbuffers)
> To solve problem 2, our plan is to encode C* timestamp, ttl, and tombestone together
with the values, and then use RocksDB's merge operator/compaction filter to merge different
version of data, and handle ttl/tombestones. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message