org.apache.hadoop.hbase.io.util
Class LRUDictionary

java.lang.Object
  extended by org.apache.hadoop.hbase.io.util.LRUDictionary
All Implemented Interfaces:
Dictionary

@InterfaceAudience.Private
public class LRUDictionary
extends Object
implements Dictionary

WALDictionary using an LRU eviction algorithm. Uses a linked list running through a hashtable. Currently has max of 2^15 entries. Will start evicting if exceeds this number The maximum memory we expect this dictionary to take in the worst case is about: (2 ^ 15) * 5 (Regionname, Row key, CF, Column qual, table) * 100 bytes (these are some big names) = ~16MB. If you want to get silly, even at 1kb entries, it maxes out at 160 megabytes.


Field Summary
 
Fields inherited from interface org.apache.hadoop.hbase.io.util.Dictionary
NOT_IN_DICTIONARY
 
Constructor Summary
LRUDictionary()
           
 
Method Summary
 short addEntry(byte[] data, int offset, int length)
          Adds an entry to the dictionary.
 void clear()
          Flushes the dictionary, empties all values.
 short findEntry(byte[] data, int offset, int length)
          Finds the index of an entry.
 byte[] getEntry(short idx)
          Gets an entry from the dictionary.
 void init(int initialSize)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LRUDictionary

public LRUDictionary()
Method Detail

getEntry

public byte[] getEntry(short idx)
Description copied from interface: Dictionary
Gets an entry from the dictionary.

Specified by:
getEntry in interface Dictionary
Parameters:
idx - index of the entry
Returns:
the entry, or null if non existent

init

public void init(int initialSize)
Specified by:
init in interface Dictionary

findEntry

public short findEntry(byte[] data,
                       int offset,
                       int length)
Description copied from interface: Dictionary
Finds the index of an entry. If no entry found, we add it.

Specified by:
findEntry in interface Dictionary
Parameters:
data - the byte array that we're looking up
offset - Offset into data to add to Dictionary.
length - Length beyond offset that comprises entry; must be > 0.
Returns:
the index of the entry, or Dictionary.NOT_IN_DICTIONARY if not found

addEntry

public short addEntry(byte[] data,
                      int offset,
                      int length)
Description copied from interface: Dictionary
Adds an entry to the dictionary. Be careful using this method. It will add an entry to the dictionary even if it already has an entry for the same data. Call {Dictionary.findEntry(byte[], int, int)} to add without duplicating dictionary entries.

Specified by:
addEntry in interface Dictionary
Parameters:
data - the entry to add
offset - Offset into data to add to Dictionary.
length - Length beyond offset that comprises entry; must be > 0.
Returns:
the index of the entry

clear

public void clear()
Description copied from interface: Dictionary
Flushes the dictionary, empties all values.

Specified by:
clear in interface Dictionary


Copyright © 2015 The Apache Software Foundation. All Rights Reserved.