public ShardingSliceBuilder(TableRecordInfo info) { int sharding = info.getDescriptor().getSharding(); builders = new SliceBuilder[sharding]; for (short i = 0; i < sharding; i++) { builders[i] = new SliceBuilder(info, i); } }
public SliceBuilder(TableRecordInfo info, short shard) { this.info = info; this.nColumns = info.getDigest().getColumnCount(); this.nRecordsCap = Math.max(1, info.getDescriptor().getSliceSize()); this.shard = shard; this.sliceTimestamp = Long.MIN_VALUE; this.nRecords = 0; this.containers = null; doneSlice(); // init containers }
public short getShard() { int timestampID = rawRecord.getValueID(info.getTimestampColumn()); return (short) (Math.abs(ShardingHash.hashInt(timestampID)) % info.getDescriptor().getSharding()); }
private Slice doneSlice() { Slice r = null; if (nRecords > 0) { for (int i = 0; i < nColumns; i++) { containers[i].closeForChange(); } r = new Slice(info.getDigest(), shard, sliceTimestamp, containers); } // reset for next slice nRecords = 0; containers = new ColumnValueContainer[nColumns]; for (int i : info.getDescriptor().getBitmapColumns()) { containers[i] = new BitMapContainer(info.getDigest(), i); } for (int i : info.getDescriptor().getValueColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } for (int i : info.getDescriptor().getMetricsColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } return r; }
public ShardingSliceBuilder(TableRecordInfo info) { int sharding = info.getDescriptor().getSharding(); builders = new IncrementalSliceMaker[sharding]; for (short i = 0; i < sharding; i++) { builders[i] = new IncrementalSliceMaker(info, i); } }
public IncrementalSliceMaker(TableRecordInfo info, short shard) { this.info = info; this.nColumns = info.getDigest().getColumnCount(); this.nRecordsCap = Math.max(1, info.getDescriptor().getSliceSize()); this.shard = shard; this.sliceTimestamp = Long.MIN_VALUE; this.nRecords = 0; this.containers = null; doneSlice(); // init containers }
public short getShard() { int timestampID = rawRecord.getValueID(info.getTimestampColumn()); return ShardingHash.getShard(timestampID, info.getDescriptor().getSharding()); }
private Slice doneSlice() { Slice r = null; if (nRecords > 0) { for (int i = 0; i < nColumns; i++) { containers[i].closeForChange(); } r = new Slice(info.getDigest(), shard, sliceTimestamp, containers); } // reset for next slice nRecords = 0; containers = new ColumnValueContainer[nColumns]; // for (int i : info.getDescriptor().getBitmapColumns()) { // containers[i] = new CompressedValueContainer(info.getDigest(), i, // nRecordsCap); // } for (int i : info.getDescriptor().getValueColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } for (int i : info.getDescriptor().getMetricsColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } return r; }