Bharatendra Boddu created CASSANDRA-9792:
--------------------------------------------

             Summary: Reduce Merkle tree serialized size
                 Key: CASSANDRA-9792
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9792
             Project: Cassandra
          Issue Type: Improvement
          Components: Core
            Reporter: Bharatendra Boddu
            Priority: Minor
         Attachments: MerkleTree.java.patch

This patch reduces the serialized size of a Merkle Tree by 10%.  With 
num_tokens set to 256, 10% reduction in Merkle tree serialized size for each 
token range repair, improves network bandwidth during repair 

This table describes serialized sizes (in bytes) of Merkle trees with different 
depths before and after patch. 
Serialized size of a Merkle tree with certain depth, doesn't depend on number 
of keys it represent.

| Depth | Before patch | After patch |  Diff |
|-------+--------------+-------------+-------|
|     5 |         2060 |        1840 |   220 |
|     6 |         4044 |        3600 |   444 |
|     7 |         8012 |        7120 |   892 |
|     8 |        15948 |       14160 |  1788 |
|     9 |        31820 |       28240 |  3580 |
|    10 |        63564 |       56400 |  7164 |
|    11 |       127052 |      112720 | 14332 |
|    12 |       254028 |      225360 | 28668 |
|    13 |       507980 |      450640 | 57340 |

Merkle tree with depth 15, uses serialized size of ~2MB and with this patch it 
will be reduce the size by ~200KB. Repairing 256 token ranges will save ~50MB 
in transfer.
Also if token serialize() method uses, byte type to represent a token size, 
then the serialized size can be reduced by 30 to 40%.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to