Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Won't Fix
    • Fix Version/s: None
    • Component/s: Core
    • Labels:
      None

      Description

      Various tickets exist due to limitations in the SSTable file format, including #16, #47 and #328. Attached is a proposed design/implementation of a new file format for SSTables that addresses a few of these limitations.

      This v2 implementation is not ready for serious use: see comments for remaining issues. It is roughly the format described here: http://wiki.apache.org/cassandra/FileFormatDesignDoc

      1. trunk-ycsb.log
        137 kB
        Stu Hood
      2. 674-ycsb.log
        128 kB
        Stu Hood
      3. 674-v3.tgz
        66 kB
        Stu Hood
      4. 674-v2.tgz
        44 kB
        Stu Hood
      5. 674-v1.diff
        252 kB
        Stu Hood

        Issue Links

          Activity

          Stu Hood created issue -
          Stu Hood made changes -
          Field Original Value New Value
          Attachment 674-v1.diff [ 12429515 ]
          Stu Hood made changes -
          Link This issue blocks CASSANDRA-16 [ CASSANDRA-16 ]
          Stu Hood made changes -
          Link This issue blocks CASSANDRA-47 [ CASSANDRA-47 ]
          Stu Hood made changes -
          Link This issue blocks CASSANDRA-578 [ CASSANDRA-578 ]
          Stu Hood made changes -
          Link This issue blocks CASSANDRA-578 [ CASSANDRA-578 ]
          Stu Hood made changes -
          Link This issue blocks CASSANDRA-598 [ CASSANDRA-598 ]
          Stu Hood made changes -
          Attachment perf-674-v1.txt [ 12429624 ]
          Attachment perf-trunk-2f3d2c0e4845faf62e33c191d152cb1b3fa62806.txt [ 12429625 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-389 [ CASSANDRA-389 ]
          Jonathan Ellis made changes -
          Affects Version/s 0.7 [ 12314533 ]
          Affects Version/s 0.6 [ 12314361 ]
          Jonathan Ellis made changes -
          Affects Version/s 0.7 [ 12314533 ]
          Fix Version/s 0.7 [ 12314533 ]
          Fix Version/s 0.6 [ 12314361 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-777 [ CASSANDRA-777 ]
          Stu Hood made changes -
          Link This issue blocks CASSANDRA-808 [ CASSANDRA-808 ]
          Stu Hood made changes -
          Link This issue blocks CASSANDRA-580 [ CASSANDRA-580 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-869 [ CASSANDRA-869 ]
          Stu Hood made changes -
          Assignee Stu Hood [ stuhood ]
          Jonathan Ellis made changes -
          Fix Version/s 0.8 [ 12314820 ]
          Fix Version/s 0.7 [ 12314533 ]
          Jonathan Ellis made changes -
          Link This issue blocks CASSANDRA-580 [ CASSANDRA-580 ]
          Jonathan Ellis made changes -
          Link This issue blocks CASSANDRA-16 [ CASSANDRA-16 ]
          Stu Hood made changes -
          Priority Major [ 3 ] Blocker [ 1 ]
          Jonathan Ellis made changes -
          Priority Blocker [ 1 ] Major [ 3 ]
          Stu Hood made changes -
          Link This issue blocks CASSANDRA-494 [ CASSANDRA-494 ]
          Holden Robbins made changes -
          Comment [ Feel free to tell me I'm off-base here, but what about doing something super simple like storing the segment as compressed and un-compressing when it's accessed on disk. Compaction process can possibly clean up uncompressed segments? I'm thinking this would solve my particular use case well (log data) since our requirements are to store a large amount of data but the majority of the reads will only be on a small subset of recently inserted data.

          If it sounds like a decent approach I'll be happy to put together a patch. ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-2062 [ CASSANDRA-2062 ]
          Stu Hood made changes -
          Description Various tickets exist due to limitations in the SSTable file format, including #16, #47 and #328. Attached is a proposed design/implementation of a new file format for SSTables that addresses a few of these limitations. The implementation has a bunch of issues/fixmes, which I'll describe in the comments.

          The file format is described in the javadoc for the o.a.c.io.SSTableWriter class, but briefly:
           * Blocks are opaque (except for their header) so that they can be compressed. The index file contains an entry for the first key in every Block. Blocks contain Slices.
           * Slices are series of columns with the same parents and (deletion) metadata. They can be used to represent ColumnFamilies or SuperColumns (or a slice of columns at any other depth). A single CF can be split across multiple Slices, which can be split across multiple blocks.
           * Neither Slices nor Blocks have a fixed size or maximum length, but they each have target lengths which can be stretched and broken by very large columns.

          The most interesting concepts from this patch are:
           * Block compression is possible (currently using GZIP, which has one bug mentioned in the comments),
           * Compaction involves merging intersecting Slices from input SSTables. Since large rows will be broken down into multiple slices, only the portions of rows that intersect between tables need to be deserialized/merged/held-in-memory,
           * Indexes for individual rows are gone, since the global index allows random access to the middle of column families that span Blocks, and Slices allow batches of columns to be skipped within a Block.
           * Bloom filters for individual rows are gone, and the global filter contains ColumnKeys instead, meaning that a query for a column that doesn't exist in a row that does will often not need to seek to the row.
           * Metadata (deletion/gc time) and ColumnKeys (key, colname1, colname2...) for columns are defined recursively, so deeply nested slices are possible,
           * Slices representing a single parent (CF, SC, etc) can have different Metadata, meaning that a tombstone Slice from d-f could sit between Slices containing columns a-c and g-h. This allows for eventually consistent range deletes of columns.
          Various tickets exist due to limitations in the SSTable file format, including #16, #47 and #328. Attached is a proposed design/implementation of a new file format for SSTables that addresses a few of these limitations.

          This v1 implementation is not ready for serious use: see comments for remaining issues. It is roughly the format described here: http://wiki.apache.org/cassandra/FileFormatDesignDoc
          Stu Hood made changes -
          Description Various tickets exist due to limitations in the SSTable file format, including #16, #47 and #328. Attached is a proposed design/implementation of a new file format for SSTables that addresses a few of these limitations.

          This v1 implementation is not ready for serious use: see comments for remaining issues. It is roughly the format described here: http://wiki.apache.org/cassandra/FileFormatDesignDoc
          Various tickets exist due to limitations in the SSTable file format, including #16, #47 and #328. Attached is a proposed design/implementation of a new file format for SSTables that addresses a few of these limitations.

          This v2 implementation is not ready for serious use: see comments for remaining issues. It is roughly the format described here: http://wiki.apache.org/cassandra/FileFormatDesignDoc
          Stu Hood made changes -
          Attachment 674-v2.tgz [ 12469907 ]
          Stu Hood made changes -
          Link This issue is related to AVRO-757 [ AVRO-757 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-2144 [ CASSANDRA-2144 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-2145 [ CASSANDRA-2145 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-777 [ CASSANDRA-777 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-869 [ CASSANDRA-869 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-2336 [ CASSANDRA-2336 ]
          Ryan King made changes -
          Fix Version/s 1.0 [ 12316349 ]
          Fix Version/s 0.8 [ 12314820 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-2576 [ CASSANDRA-2576 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-2336 [ CASSANDRA-2336 ]
          Stu Hood made changes -
          Attachment 674-v3.tgz [ 12480077 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-2398 [ CASSANDRA-2398 ]
          Stu Hood made changes -
          Attachment 674-v3.tgz [ 12480077 ]
          Stu Hood made changes -
          Attachment 674-v3.tgz [ 12483662 ]
          Stu Hood made changes -
          Attachment perf-trunk-2f3d2c0e4845faf62e33c191d152cb1b3fa62806.txt [ 12429625 ]
          Stu Hood made changes -
          Attachment perf-674-v1.txt [ 12429624 ]
          Stu Hood made changes -
          Attachment 674-ycsb.log [ 12483663 ]
          Attachment trunk-ycsb.log [ 12483664 ]
          Stu Hood made changes -
          Link This issue blocks CASSANDRA-2319 [ CASSANDRA-2319 ]
          Pavel Yaskevich made changes -
          Link This issue blocks CASSANDRA-47 [ CASSANDRA-47 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-2629 [ CASSANDRA-2629 ]
          Jonathan Ellis made changes -
          Fix Version/s 1.0 [ 12316349 ]
          Stu Hood made changes -
          Link This issue is blocked by CASSANDRA-3067 [ CASSANDRA-3067 ]
          Gavin made changes -
          Workflow no-reopen-closed, patch-avail [ 12486122 ] patch-available, re-open possible [ 12752039 ]
          Gavin made changes -
          Workflow patch-available, re-open possible [ 12752039 ] reopen-resolved, no closed status, patch-avail, testing [ 12755151 ]
          Gavin made changes -
          Link This issue blocks CASSANDRA-808 [ CASSANDRA-808 ]
          Gavin made changes -
          Link This issue is depended upon by CASSANDRA-808 [ CASSANDRA-808 ]
          Jonathan Ellis made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Won't Fix [ 2 ]

            People

            • Assignee:
              Unassigned
              Reporter:
              Stu Hood
            • Votes:
              16 Vote for this issue
              Watchers:
              55 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development