krati.store
Class StaticDataStore

java.lang.Object
  extended by krati.store.StaticDataStore
All Implemented Interfaces:
Iterable<Map.Entry<byte[],byte[]>>, DataStore<byte[],byte[]>

public class StaticDataStore
extends Object
implements DataStore<byte[],byte[]>

A simple implementation of key value store. The store has a fixed capacity. The key-value pairs are stored in the underlying DataArray using the following format:

 [count:int][key-length:int][key:bytes][value-length:int][value:bytes][key-length:int][key:bytes][value-length:int][value:bytes]...
            +------------------ key-value pair 1 ---------------------+------------------- key-value pair 2 -------------------+
 

Author:
jwu

Constructor Summary
StaticDataStore(File homeDir, int capacity, int entrySize, int maxEntries, int segmentFileSizeMB, SegmentFactory segmentFactory)
          Creates a DataStore instance with the settings below:
StaticDataStore(File homeDir, int capacity, int entrySize, int maxEntries, int segmentFileSizeMB, SegmentFactory segmentFactory, double segmentCompactFactor, HashFunction<byte[]> hashFunction)
          Creates a DataStore instance.
StaticDataStore(File homeDir, int capacity, int entrySize, int maxEntries, int segmentFileSizeMB, SegmentFactory segmentFactory, HashFunction<byte[]> hashFunction)
          Creates a DataStore instance with the settings below:
StaticDataStore(File homeDir, int capacity, int segmentFileSizeMB, SegmentFactory segmentFactory)
          Creates a DataStore instance with the settings below:
StaticDataStore(File homeDir, int capacity, SegmentFactory segmentFactory)
          Creates a DataStore instance with the settings below:
 
Method Summary
 void clear()
           
protected  AddressArray createAddressArray(int length, int entrySize, int maxEntries, File homeDirectory)
           
 boolean delete(byte[] key)
           
 byte[] get(byte[] key)
           
 DataArray getDataArray()
           
protected  long hash(byte[] key)
           
 Iterator<Map.Entry<byte[],byte[]>> iterator()
           
 Iterator<byte[]> keyIterator()
           
protected  long nextScn()
           
 void persist()
           
 boolean put(byte[] key, byte[] value)
           
 void sync()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StaticDataStore

public StaticDataStore(File homeDir,
                       int capacity,
                       SegmentFactory segmentFactory)
                throws Exception
Creates a DataStore instance with the settings below:
    Entry Size             : 10000
    Max Entries            : 5
    Segment File Size      : 256MB
    Segment Compact Factor : 0.5
    Hash Function          : krati.util.FnvHashFunction
 

Parameters:
homeDir - the home directory
capacity - the capacity of data store
segmentFactory - the segment factory
Throws:
Exception

StaticDataStore

public StaticDataStore(File homeDir,
                       int capacity,
                       int segmentFileSizeMB,
                       SegmentFactory segmentFactory)
                throws Exception
Creates a DataStore instance with the settings below:
    Entry Size             : 10000
    Max Entries            : 5
    Segment Compact Factor : 0.5
    Hash Function          : krati.util.FnvHashFunction
 

Parameters:
homeDir - the home directory
capacity - the capacity of data store
segmentFileSizeMB - the size of segment file in MB
segmentFactory - the segment factory
Throws:
Exception

StaticDataStore

public StaticDataStore(File homeDir,
                       int capacity,
                       int entrySize,
                       int maxEntries,
                       int segmentFileSizeMB,
                       SegmentFactory segmentFactory)
                throws Exception
Creates a DataStore instance with the settings below:
    Segment Compact Factor : 0.5
    Hash Function          : krati.util.FnvHashFunction
 

Parameters:
homeDir - the home directory
capacity - the capacity of data store
entrySize - the redo entry size (i.e., batch size)
maxEntries - the number of redo entries required for updating the underlying address array
segmentFileSizeMB - the size of segment file in MB
segmentFactory - the segment factory
Throws:
Exception

StaticDataStore

public StaticDataStore(File homeDir,
                       int capacity,
                       int entrySize,
                       int maxEntries,
                       int segmentFileSizeMB,
                       SegmentFactory segmentFactory,
                       HashFunction<byte[]> hashFunction)
                throws Exception
Creates a DataStore instance with the settings below:
    Segment Compact Factor : 0.5
 

Parameters:
homeDir - the home directory
capacity - the capacity of data store
entrySize - the redo entry size (i.e., batch size)
maxEntries - the number of redo entries required for updating the underlying address array
segmentFileSizeMB - the size of segment file in MB
segmentFactory - the segment factory
hashFunction - the hash function for mapping keys to indexes
Throws:
Exception

StaticDataStore

public StaticDataStore(File homeDir,
                       int capacity,
                       int entrySize,
                       int maxEntries,
                       int segmentFileSizeMB,
                       SegmentFactory segmentFactory,
                       double segmentCompactFactor,
                       HashFunction<byte[]> hashFunction)
                throws Exception
Creates a DataStore instance.

Parameters:
homeDir - the home directory
capacity - the capacity of data store
entrySize - the redo entry size (i.e., batch size)
maxEntries - the number of redo entries required for updating the underlying address array
segmentFileSizeMB - the size of segment file in MB
segmentFactory - the segment factory
segmentCompactFactor - the load factor of segment, below which a segment is eligible for compaction
hashFunction - the hash function for mapping keys to indexes
Throws:
Exception
Method Detail

createAddressArray

protected AddressArray createAddressArray(int length,
                                          int entrySize,
                                          int maxEntries,
                                          File homeDirectory)
                                   throws Exception
Throws:
Exception

hash

protected long hash(byte[] key)

nextScn

protected long nextScn()

sync

public void sync()
          throws IOException
Specified by:
sync in interface DataStore<byte[],byte[]>
Throws:
IOException

persist

public void persist()
             throws IOException
Specified by:
persist in interface DataStore<byte[],byte[]>
Throws:
IOException

get

public byte[] get(byte[] key)
Specified by:
get in interface DataStore<byte[],byte[]>

put

public boolean put(byte[] key,
                   byte[] value)
            throws Exception
Specified by:
put in interface DataStore<byte[],byte[]>
Throws:
Exception

delete

public boolean delete(byte[] key)
               throws Exception
Specified by:
delete in interface DataStore<byte[],byte[]>
Throws:
Exception

clear

public void clear()
           throws IOException
Specified by:
clear in interface DataStore<byte[],byte[]>
Throws:
IOException

getDataArray

public DataArray getDataArray()
Returns:
the underlying data array.

keyIterator

public Iterator<byte[]> keyIterator()
Specified by:
keyIterator in interface DataStore<byte[],byte[]>

iterator

public Iterator<Map.Entry<byte[],byte[]>> iterator()
Specified by:
iterator in interface Iterable<Map.Entry<byte[],byte[]>>


Copyright © 2011. All Rights Reserved.