ganglio / pds
用于高效分析和挖掘大数据集的概率数据结构
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 4.8.*
README
用于高效分析和挖掘大数据集的概率数据结构
此包包含一系列数据结构和工具,以内存高效的方式分析大量数据。
目录
安装
通过Composer安装(确保您的路径或项目中包含composer)。
将以下内容放入您的package.json中
{
"require": {
"ganglio/PDS": "*"
}
}
然后运行composer install或直接运行
composer require ganglio/PDS
命名空间
库中定义了多个命名空间。
- \ganglio\PDS\Bloom
- \ganglio\PDS\Estimators
- \ganglio\PDS\Hash
- \ganglio\PDS\Storage
接口
估算器
此接口是基数估算器的基础。它定义了两个方法
add($key)- 将键添加到估算器中count()- 返回添加到估算器中的键的数量
根据实现方式,实际类可能返回精确估计,如Exact类,或近似估计,如HyperLogLog类。
哈希
此接口是包提供的各种哈希类的基础。它定义了一个方法和一个常量
hash($str)- 执行提供的字符串的实际哈希UPPERBOUND- 用于哈希函数的32位掩码,使用0xffffffff
存储
此接口是存储类的基础。它定义了四个方法
set($key, $value)- 将值设置到存储系统中的键get($key)- 获取存储到键中的值flush()- 清空存储系统size()- 返回存储系统中的键的数量
类
BitArray(实现Storage)
实现单个位数组。它用于实现Bloom Filter,其中set方法只接受Bool作为$value。
HyperLogLog(实现Estimator)
实现HyperLogLog基数估算器算法。实际实现使用HyperLogLog处理大基数,使用LinearCounting处理小基数,因为它提供了更好的近似。
Exact(实现Estimator)
实现一个精确计数器。它主要是一个玩具类,用于展示如何使用Estimator接口。
Trivial(实现Hash)
实现一个简单的哈希算法。基本上是添加输入字符串每个字符的ASCII码右移字符位置,然后取低32位。它是一个玩具类,用于展示如何使用Hash接口。
Pearson(实现Hash)
实现Pearson非加密哈希函数。
FVNHash(实现Hash)
实现了Fowler-Noll-Vo非加密哈希函数。实际算法是FNV-1哈希。
通用(实现了Hash)
这个类基本上是对标准PHP哈希函数的封装。构造函数接受从PHP hash_algos()函数中使用的算法名称。如果指定了未知算法,则会抛出异常;如果没有指定,则默认选择MD5。
多哈希(实现了Hash)
这个类使用构造函数中指定的不同算法来计算多个哈希。它主要用于与BitArray类结合使用,以实现Bloom Filter。
布隆过滤器
这个类实现了一个布隆过滤器,一种概率数据结构,它允许以非常小的内存占用来测试一个元素是否是某个集合的成员。
示例
待办事项