public class BigArray extends Object implements Closeable
| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_DATA_PAGE_SIZE |
static int |
MINIMUM_DATA_PAGE_SIZE |
static long |
NOT_FOUND |
| Constructor and Description |
|---|
BigArray(String arrayDir,
String arrayName)
A big array implementation supporting sequential write and random read,
use default back data file size per page, see
DEFAULT_DATA_PAGE_SIZE. |
BigArray(String arrayDir,
String arrayName,
int pageSize)
A big array implementation supporting sequential write and random read.
|
| Modifier and Type | Method and Description |
|---|---|
long |
append(byte[] data)
Append the data into the head of the array
|
void |
close() |
long |
findClosestIndex(long timestamp)
Find an index closest to the specific timestamp when the corresponding item was appended
|
void |
flush()
Force to persist newly appended data,
normally, you don't need to flush explicitly since:
1.) BigArray will automatically flush a cached page when it is replaced out,
2.) BigArray uses memory mapped file technology internally, and the OS will flush the changes even your process crashes,
call this periodically only if you need transactional reliability and you are aware of the cost to performance.
|
byte[] |
get(long index)
Get the data at specific index
|
long |
getBackFileSize()
Get total size of back files(index and data files) of the big array
|
int |
getDataPageSize()
Get the back data file size per page.
|
long |
getHeadIndex()
The head of the array.
|
int |
getItemLength(long index)
Get the data item length at specific index
|
long |
getTailIndex()
The tail of the array.
|
long |
getTimestamp(long index)
Get the timestamp of data at specific index,
this is the timestamp when the data was appended.
|
boolean |
isEmpty()
Check if the array is empty or not
|
boolean |
isFull()
Check if the ring space of java long type has all been used up.
|
void |
limitBackFileSize(long sizeLimit)
limit the back file size, truncate back file and advance array tail index accordingly,
Note, this is a best effort call, exact size limit can't be guaranteed
|
void |
removeAll() |
void |
removeBefore(long timestamp)
Remove all data before specific timestamp, this will advance the array tail and delete back page files
accordingly.
|
void |
removeBeforeIndex(long index)
Remove all data before specific index, this will advance the array tail to index and
delete back page files before index.
|
long |
size()
The total number of items has been appended into the array
|
public static final long NOT_FOUND
public static final int DEFAULT_DATA_PAGE_SIZE
public static final int MINIMUM_DATA_PAGE_SIZE
public BigArray(String arrayDir, String arrayName)
DEFAULT_DATA_PAGE_SIZE.arrayDir - directory for array data storearrayName - the name of the array, will be appended as last part of the array directorypublic BigArray(String arrayDir, String arrayName, int pageSize)
arrayDir - directory for array data storearrayName - the name of the array, will be appended as last part of the array directorypageSize - the back data file size per page in bytes, see minimum allowed MINIMUM_DATA_PAGE_SIZE.public void removeAll()
public void removeBeforeIndex(long index)
index - an indexpublic void removeBefore(long timestamp)
timestamp - a timestamppublic long append(byte[] data)
data - binary data to appendpublic void flush()
public byte[] get(long index)
index - valid data indexpublic long getTimestamp(long index)
index - valid data indexpublic long size()
public long getHeadIndex()
public long getTailIndex()
public boolean isEmpty()
public boolean isFull()
public void close()
close in interface Closeableclose in interface AutoCloseablepublic int getDataPageSize()
public long findClosestIndex(long timestamp)
timestamp - when the corresponding item was appendedpublic long getBackFileSize()
public void limitBackFileSize(long sizeLimit)
sizeLimit - the size to limitpublic int getItemLength(long index)
index - valid data indexCopyright © 2016. All rights reserved.