public class FastRDFValueCoder2 extends Object implements Externalizable, IRabaCoder
0111 is
used as a place holder for a null value and de-serializes to a
[null]. This is just the low nibble of the StatementEnum.code(). This
"nibble" encoding makes it fast and easy to extract the value from the coded
record. The first value is stored in the low nibble, the next in the high
nibble, then it is on to the low nibble of the next byte.
Note: the 'override' flag is NOT stored in the statement indices, but it is passed by the procedure that writes on the statement indices so that we can decide whether or not to override the type when the statement is pre-existing in the index.
Note: this procedure can not be used if
AbstractTripleStore.Options#STATEMENT_IDENTIFIERS are enabled.
StatementEnum,
Serialized Form| Modifier and Type | Field and Description |
|---|---|
protected static org.apache.log4j.Logger |
log |
| Constructor and Description |
|---|
FastRDFValueCoder2()
Sole constructor (handles de-serialization also).
|
| Modifier and Type | Method and Description |
|---|---|
ICodedRaba |
decode(AbstractFixedByteArrayBuffer data)
Return an
IRaba which can access the coded data. |
AbstractFixedByteArrayBuffer |
encode(IRaba raba,
DataOutputBuffer buf)
Encode the data.
|
ICodedRaba |
encodeLive(IRaba raba,
DataOutputBuffer buf)
Encode the data, returning an
ICodedRaba. |
boolean |
isDuplicateKeys()
Return true iff this
IRabaCoder supports duplicate keys. |
boolean |
isKeyCoder()
No.
|
boolean |
isValueCoder()
Yes.
|
void |
readExternal(ObjectInput in) |
void |
writeExternal(ObjectOutput out) |
public FastRDFValueCoder2()
public final boolean isKeyCoder()
isKeyCoder in interface IRabaCoderpublic final boolean isValueCoder()
isValueCoder in interface IRabaCoderpublic boolean isDuplicateKeys()
IRabaCoderIRabaCoder supports duplicate keys.isDuplicateKeys in interface IRabaCoderpublic void writeExternal(ObjectOutput out) throws IOException
writeExternal in interface ExternalizableIOExceptionpublic void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal in interface ExternalizableIOExceptionClassNotFoundExceptionpublic AbstractFixedByteArrayBuffer encode(IRaba raba, DataOutputBuffer buf)
IRabaCoder
Note: Implementations of this method are typically heavy. While it is
always valid to IRabaCoder.encode(IRaba, DataOutputBuffer) an IRaba
, DO NOT invoke this arbitrarily on data which may already be
coded. The ICodedRaba interface will always be implemented for
coded data.
encode in interface IRabaCoderraba - The data.buf - A buffer on which the coded data will be written.public ICodedRaba encodeLive(IRaba raba, DataOutputBuffer buf)
IRabaCoderICodedRaba. Implementations of this
method should be optimized for the very common use case where the caller
requires immediate access to the coded data record. In that case, many of
the IRabaCoder implementations can be optimized by passing the
underlying decoding object directly into an alternative constructor for
the ICodedRaba. The byte[] slice for the coded data record is
available from ICodedRaba.data().
This method covers the vast major of the use cases for coding data, which
is to code B+Tree keys or values for a node or leaf that has been evicted
from the AbstractBTree's write retention queue. The common use
case is to wrap a coded record that was read from an IRawStore.
The IndexSegmentBuilder is a special case, since the coded record
will not be used other than to write it on the disk.
encodeLive in interface IRabaCoderpublic ICodedRaba decode(AbstractFixedByteArrayBuffer data)
IRabaCoderIRaba which can access the coded data. In general,
implementations SHOULD NOT materialize a backing byte[][]. Instead, the
implementation should access the data in place within the caller's
buffer. Frequently used fields MAY be cached, but the whole point of the
IRabaCoder is to minimize the in-memory footprint for the B+Tree
by using a coded (aka compressed) representation of the keys and values
whenever possible.decode in interface IRabaCoderdata - The record containing the coded data.Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.