use of org.apache.jena.tdb.base.recordbuffer.RecordBufferPage in project jena by apache.
the class RecordBufferPagePacker method next.
@Override
public RecordBufferPage next() {
if (!hasNext())
throw new NoSuchElementException();
RecordBufferPage rbp = recordBufferPage;
recordBufferPage = null;
return rbp;
}
use of org.apache.jena.tdb.base.recordbuffer.RecordBufferPage in project jena by apache.
the class TestRecordBufferPage method recBufferPage02.
@Test
public void recBufferPage02() {
BlockMgr blkMgr = makeBlockMgr();
blkMgr.beginUpdate();
RecordBufferPageMgr rpm = new RecordBufferPageMgr(factory, blkMgr);
int x = -99;
{
RecordBufferPage page1 = rpm.create();
fill(page1.getRecordBuffer(), 10, 20, 30);
x = page1.getId();
rpm.put(page1);
page1 = null;
}
blkMgr.endUpdate();
blkMgr.beginRead();
{
RecordBufferPage page2 = rpm.getRead(x);
assertEquals(10, get(page2, 0));
assertEquals(20, get(page2, 1));
assertEquals(30, get(page2, 2));
rpm.release(page2);
}
blkMgr.endRead();
}
use of org.apache.jena.tdb.base.recordbuffer.RecordBufferPage in project jena by apache.
the class BPlusTreeRewriter method writePackedDataBlocks.
// **** data block phase
/**
* Pack record blocks into linked RecordBufferPages
*/
private static Iterator<Pair<Integer, Record>> writePackedDataBlocks(Iterator<Record> records, final BPlusTree bpt) {
if (debug) {
divider();
System.out.println("---- Data level");
}
final RecordBufferPageMgr mgr = bpt.getRecordsMgr().getRecordBufferPageMgr();
Iterator<RecordBufferPage> iter = new RecordBufferPageLinker(new RecordBufferPagePacker(records, mgr));
Function<RecordBufferPage, Pair<Integer, Record>> transform = rbp -> {
mgr.put(rbp);
Record r = rbp.getRecordBuffer().getHigh();
r = bpt.getRecordFactory().createKeyOnly(r);
return new Pair<>(rbp.getId(), r);
};
// Write and convert to split pairs.
Iterator<Pair<Integer, Record>> iter2 = Iter.map(iter, transform);
if (debug) {
if (rebalance)
System.out.println("Before rebalance (data)");
iter2 = summarizeDataBlocks(iter2, bpt.getRecordsMgr().getRecordBufferPageMgr());
// iter2 = printDataBlocks(iter2, bpt.getRecordsMgr().getRecordBufferPageMgr()) ;
}
if (rebalance)
iter2 = new RebalenceDataEnd(iter2, bpt);
// Testing - materialize - debug wil have done this
if (materialize && !debug)
iter2 = Iter.toList(iter2).iterator();
if (debug && rebalance) {
System.out.println("After rebalance (data)");
iter2 = summarizeDataBlocks(iter2, bpt.getRecordsMgr().getRecordBufferPageMgr());
// iter2 = printDataBlocks(iter2, bpt.getRecordsMgr().getRecordBufferPageMgr()) ;
}
return iter2;
}
use of org.apache.jena.tdb.base.recordbuffer.RecordBufferPage in project jena by apache.
the class BPlusTreeTools method bpt_scan_record_buffer.
/*public*/
private static void bpt_scan_record_buffer(RecordBufferPageMgr recordPageMgr, boolean verbose) {
System.out.print("[Scan Records] start\n");
int idx = 0;
int n = 0;
int total = 0;
if (verbose)
System.out.printf("recordPageMgr = %s\n", recordPageMgr);
// Blocks in scan order
try {
while (idx >= 0) {
if (verbose)
System.out.printf("idx = %d\n", idx);
RecordBufferPage page = recordPageMgr.getRead(idx);
if (verbose)
System.out.printf("%04d :: id=%04d -> link=%04d [count=%d, max=%d]\n", n, page.getId(), page.getLink(), page.getCount(), page.getMaxSize());
RecordBuffer rb = page.getRecordBuffer();
if (verbose)
System.out.printf(" :: %d %d\n", rb.getSize(), rb.maxSize());
total += rb.size();
idx = page.getLink();
n++;
recordPageMgr.release(page);
}
} catch (Exception ex) {
System.out.println("Exception: " + ex);
}
System.out.printf("[Scan Records] Count = %d in %d blocks (avg: %.2f)\n", total, n, ((float) total) / n);
}
use of org.apache.jena.tdb.base.recordbuffer.RecordBufferPage in project jena by apache.
the class BPlusTreeRewriterUtils method summarizeDataBlocks.
static Iterator<Pair<Integer, Record>> summarizeDataBlocks(Iterator<Pair<Integer, Record>> iter, RecordBufferPageMgr recordPageMgr) {
divider();
List<Pair<Integer, Record>> x = Iter.toList(iter);
for (Pair<Integer, Record> pair : x) {
RecordBufferPage rbp = recordPageMgr.getRead(pair.car());
System.out.printf("%s -- RecordBufferPage[id=%d,link=%d] (%d) -> [%s]\n", pair, rbp.getId(), rbp.getLink(), rbp.getCount(), rbp.getRecordBuffer().getHigh());
recordPageMgr.release(rbp);
}
return x.iterator();
}
Aggregations