Cassandra
  1. Cassandra
  2. CASSANDRA-4784

Create separate sstables for each token range handled by a node

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Duplicate
    • Fix Version/s: None
    • Component/s: Core
    • Labels:
      None

      Description

      Currently, each sstable has data for all the ranges that node is handling. If we change that and rather have separate sstables for each range that node is handling, it can lead to some improvements.
      Improvements
      1) Node rebuild will be very fast as sstables can be directly copied over to the bootstrapping node. It will minimize any application level logic. We can directly use Linux native methods to transfer sstables without using CPU and putting less pressure on the serving node. I think in theory it will be the fastest way to transfer data.
      2) Backup can only transfer sstables for a node which belong to its primary keyrange.
      3) ETL process can only copy one replica of data and will be much faster.
      Changes:
      We can split the writes into multiple memtables for each range it is handling. The sstables being flushed from these can have details of which range of data it is handling.
      There will be no change I think for any reads as they work with interleaved data anyway. But may be we can improve there as well?

      Complexities:
      The change does not look very complicated. I am not taking into account how it will work when ranges are being changed for nodes.
      Vnodes might make this work more complicated. We can also have a bit on each sstable which says whether it is primary data or not.

      1. 4784.patch
        31 kB
        Benjamin Coverston

        Issue Links

          Activity

          sankalp kohli created issue -
          Benjamin Coverston made changes -
          Field Original Value New Value
          Assignee Benjamin Coverston [ bcoverston ]
          Benjamin Coverston made changes -
          Status Open [ 1 ] Patch Available [ 10002 ]
          Affects Version/s 1.2.0 beta 1 [ 12319262 ]
          Fix Version/s 1.3 [ 12322954 ]
          Benjamin Coverston made changes -
          Attachment 4784.patch [ 12552212 ]
          Gavin made changes -
          Workflow no-reopen-closed, patch-avail [ 12729003 ] patch-available, re-open possible [ 12753716 ]
          Gavin made changes -
          Workflow patch-available, re-open possible [ 12753716 ] reopen-resolved, no closed status, patch-avail, testing [ 12758895 ]
          Jonathan Ellis made changes -
          Status Patch Available [ 10002 ] Open [ 1 ]
          Jonathan Ellis made changes -
          Assignee Benjamin Coverston [ bcoverston ]
          Fix Version/s 2.1 [ 12324159 ]
          Fix Version/s 2.0 [ 12322954 ]
          Jonathan Ellis made changes -
          Labels perfomance
          sankalp kohli made changes -
          Link This issue is related to CASSANDRA-6696 [ CASSANDRA-6696 ]
          Sylvain Lebresne made changes -
          Fix Version/s 2.1 beta2 [ 12326276 ]
          Fix Version/s 2.1 [ 12324159 ]
          Sylvain Lebresne made changes -
          Fix Version/s 2.1 rc1 [ 12326658 ]
          Fix Version/s 2.1 beta2 [ 12326276 ]
          Jonathan Ellis made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Jonathan Ellis made changes -
          Resolution Fixed [ 1 ]
          Status Resolved [ 5 ] Reopened [ 4 ]
          Jonathan Ellis made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Fix Version/s 2.1 rc1 [ 12326658 ]
          Resolution Duplicate [ 3 ]

            People

            • Assignee:
              Unassigned
              Reporter:
              sankalp kohli
            • Votes:
              0 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development