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

Make atomic increment perform a binary increment

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 0.19.0
    • 0.19.1, 0.20.0
    • None
    • None

    Description

      A few issues related to recently committed HBASE-803

      • The HTable api still takes an integer amount rather than long, mismatching HRI.
      • Binary increments are 10 times faster for small amounts than going Bytes.toLong, += amount, Bytes.toBytes. Twice as fast for large amounts (binary incrementor just loops a bunch of single increments, though there is plenty of room for optimizations in my current implementation)
      • Using a binary increment means we don't have to worry about the size of the value. If someone wants a 16 byte value they can have it, just have to initialize as such. If no existing value exists, will default to long/8 bytes. Only odd behavior will be what happens when you are at the max value, currently will just stay at all 11111 binary. Could actually grow the byte[] but then we can't do things in place. I'm okay with leaving it like that, not exactly sure what the current implementation would do, throw an exception or wrap?
      • Using binary incrementing, we can directly manipulate values in the memcache rather than sending updates with the same timestamp. I think we should hold off on doing this until HBASE-1234 goes in. We'll then have to deal directly with hlog. (this issue is not going to address this)

      Attachments

        1. hbase-1252-v1.patch
          3 kB
          Jonathan Gray
        2. hbase-1252-v2.patch
          3 kB
          Jonathan Gray

        Activity

          People

            streamy Jonathan Gray
            streamy Jonathan Gray
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: