public boolean contains(ITupleReference tuple, long[] hashes) throws HyracksDataException { if (numPages == 0) { return false; } MurmurHash128Bit.hash3_x64_128(tuple, keyFields, SEED, hashes); if (version == BLOCKED_BLOOM_FILTER_VERSION) { return blockContains(hashes); } else { return legacyContains(hashes); } }
public int getNumPages() throws HyracksDataException { if (!isActivated) { activate(); } return numPages; }
public IIndexBulkLoader createBuilder(long numElements, int numHashes, int numBitsPerElement) throws HyracksDataException { return new BloomFilterBuilder(numElements, numHashes, numBitsPerElement); }
public IChainedComponentBulkLoader createBloomFilterBulkLoader(long numElementsHint) throws HyracksDataException { BloomFilterSpecification bloomFilterSpec = BloomCalculations.computeBloomSpec( BloomCalculations.maxBucketsPerElement(numElementsHint), getLsmIndex().bloomFilterFalsePositiveRate()); return new BloomFilterBulkLoader(getBloomFilter().createBuilder(numElementsHint, bloomFilterSpec.getNumHashes(), bloomFilterSpec.getNumBucketsPerElements())); }
static long getComponentSize(BloomFilter bloomFilter) { return bloomFilter.getFileReference().getFile().length(); } }
public int computePrimaryKeyHashValue(ITupleReference tuple, int[] primaryKeyFields) { MurmurHash128Bit.hash3_x64_128(tuple, primaryKeyFields, SEED, longHashes); return Math.abs((int) longHashes[0]); }
private long getNumberOfElements(List<ILSMComponent> mergedComponents) throws HyracksDataException { long numElements = 0L; if (hasBloomFilter) { //count elements in btree for creating Bloomfilter for (int i = 0; i < mergedComponents.size(); ++i) { numElements += ((AbstractLSMWithBloomFilterDiskComponent) mergedComponents.get(i)).getBloomFilter() .getNumElements(); } } return numElements; }
@Override public LSMBTreeWithBuddyDiskComponent createComponent(AbstractLSMIndex lsmIndex, LSMComponentFileReferences cfr) throws HyracksDataException { return new LSMBTreeWithBuddyDiskComponent(lsmIndex, btreeFactory.createIndexInstance(cfr.getInsertIndexFileReference()), buddyBtreeFactory.createIndexInstance(cfr.getDeleteIndexFileReference()), bloomFilterFactory.createBloomFiltertInstance(cfr.getBloomFilterFileReference()), filterHelper == null ? null : filterHelper.createFilter()); } }
public int[] getBloomFilterKeyFields() { return bloomFilterFactory == null ? null : bloomFilterFactory.getBloomFilterKeyFields(); }
public BloomFilter createBloomFiltertInstance(FileReference file) throws HyracksDataException { return new BloomFilter(bufferCache, file, bloomFilterKeyFields); }
/** * Given the number of buckets that can be used per element, return a * specification that minimizes the false positive rate. * * @param bucketsPerElement * The number of buckets per element for the filter. * @return A spec that minimizes the false positive rate. */ public static BloomFilterSpecification computeBloomSpec(int bucketsPerElement) { assert bucketsPerElement >= 1; assert bucketsPerElement <= probs.length - 1; return new BloomFilterSpecification(optKPerBuckets[bucketsPerElement], bucketsPerElement); }
public static void markAsValid(IBufferCache bufferCache, BloomFilter filter, boolean forceToDisk) throws HyracksDataException { if (forceToDisk) { bufferCache.force(filter.getFileId(), true); } } }
public synchronized void activate() throws HyracksDataException { if (isActivated) { return; } if (fileId >= 0) { bufferCache.openFile(fileId); } else { fileId = bufferCache.openFile(file); } readBloomFilterMetaData(); isActivated = true; }
@Override public void deactivate() throws HyracksDataException { super.deactivate(); getBloomFilter().deactivate(); }
@Override protected void purge() throws HyracksDataException { super.purge(); getBloomFilter().purge(); }
@Override public void destroy() throws HyracksDataException { super.destroy(); getBloomFilter().destroy(); }
static void addFiles(Set<String> files, BloomFilter bloomFilter) { files.add(bloomFilter.getFileReference().getFile().getAbsolutePath()); }
protected int computePrimaryKeyHashValue(ITupleReference tuple, int[] primaryKeyFields) { MurmurHash128Bit.hash3_x64_128(tuple, primaryKeyFields, SEED, longHashes); return Math.abs((int) longHashes[0]); }
public int[] getBloomFilterKeyFields() { return bloomFilterFactory == null ? null : bloomFilterFactory.getBloomFilterKeyFields(); } }