Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-9794

KeyValues / cells backed by buffer fragments

    XMLWordPrintableJSON

Details

    • Brainstorming
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • 0.98.0
    • None
    • None
    • None

    Description

      There are various places in the code where we see comments to the effect "would be great if we had a scatter gather API for KV", appearing at places where we rewrite KVs on the server, for example in HRegion where we process appends and increments.

      KeyValues are stored in buffers of fixed length. This approach has performance advantages for the common case where KVs are not manipulated on their way from disk to RPC. The disadvantage of this approach is any manipulation of the KV internals then requires the creation of a new buffer to hold the result, and a copy of the KV data into the new buffer. Appends and increments are typically a small percentage of overall workload so this has been fine up to now.

      KeyValues can now carry metadata known as tags. Tags are stored contiguously with the rest of the KeyValue. Applications wishing to use tags (like per cell security) change the equation by wanting to rewrite KVs significantly more often.

      We should consider backing KeyValue with an alternative structure that can better support rewriting portions of its data, appends to existing buffers, scatter-gather copies, possibly even copy-on-write.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              apurtell Andrew Kyle Purtell
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: