libfoedus-core
FOEDUS Core Library
hash_hashinate.hpp File Reference

Independent utility methods/classes for hashination, or hash functions. More...

Detailed Description

Independent utility methods/classes for hashination, or hash functions.

So far we use xxhash as a static library.

Definition in file hash_hashinate.hpp.

#include <stdint.h>
#include <cstring>
#include <iosfwd>
#include "foedus/compiler.hpp"
#include "foedus/cxx11.hpp"
#include "foedus/storage/hash/fwd.hpp"
#include "foedus/storage/hash/hash_id.hpp"
Include dependency graph for hash_hashinate.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  foedus::storage::hash::BloomFilterFingerprint
 A fingerprint for bloom filter in each HashDataPage. More...
 
struct  foedus::storage::hash::DataPageBloomFilter
 To quickly check whether a HashDataPage might contain a specific hash value, we maintain a non-counting bloom filter in each page. More...
 
union  foedus::storage::hash::IntermediateRoute
 Compactly represents the route of intermediate pages to reach the given hash bin. More...
 

Namespaces

 foedus
 Root package of FOEDUS (Fast Optimistic Engine for Data Unification Services).
 
 foedus::storage
 Storage Manager, which implements a couple of key/value stores.
 
 foedus::storage::hash
 Hashtable Storage, a concurrent hashtable.
 

Functions

HashValue foedus::storage::hash::hashinate (const void *key, uint16_t key_length)
 Calculates hash value for general input. More...
 
template<typename T >
HashValue foedus::storage::hash::hashinate (T key)
 Calculates hash value for a primitive type. More...
 

Variables

const uint64_t foedus::storage::hash::kXxhashKeySeed = 0x3f119e0435262a17ULL
 Default seed value used for xxhash's xxh32/64 to hashinate keys. More...
 
const uint16_t foedus::storage::hash::kHashDataPageBloomFilterBytes = 64
 Byte size of bloom filter in each HashDataPage. More...
 
const uint16_t foedus::storage::hash::kHashDataPageBloomFilterBits = kHashDataPageBloomFilterBytes * 8
 Bit size of bloom filter in each HashDataPage. More...
 
const uint8_t foedus::storage::hash::kHashDataPageBloomFilterIndexSize = 9U
 How many bits we need in order to represent an index in bloom filter in each HashDataPage. More...
 
const HashValue foedus::storage::hash::kHashDataPageBloomFilterIndexMask = (1U << kHashDataPageBloomFilterIndexSize) - 1U
 
const uint8_t foedus::storage::hash::kHashDataPageBloomFilterHashes = 3
 Number of hash functions (k) of bloom filter in each HashDataPage. More...