ganglio/pds

用于高效分析和挖掘大数据集的概率数据结构

v1.0.11 2015-10-05 16:04 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:17:24 UTC


README

用于高效分析和挖掘大数据集的概率数据结构

Latest Stable Version Build Status codecov.io Code Climate License

此包包含一系列数据结构和工具,以内存高效的方式分析大量数据。

目录

  1. 安装
  2. 命名空间
  3. 接口
  4. 示例

安装

通过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

布隆过滤器

这个类实现了一个布隆过滤器,一种概率数据结构,它允许以非常小的内存占用来测试一个元素是否是某个集合的成员。

示例

待办事项