最初的任务可以这样描述:我需要删除庞大的列表(可能有数十亿个项目),而不存储原始项目--这简直是负担不起的
我只需要知道一个问题的答案:“我的系统以前见过这个元素吗?”
到目前为止,我所能找到的最接近的数据结构是一个布卢姆过滤器,但是它有假阳性,这在我的任务中最好避免,因为它会导致数据丢失。
例如,提供i帐户来存储至少2^32项,并且肯定错误率仅为1% (这意味着我需要至少访问所有urls的1%)。
n = 4,294,967,296, p = 0.01 (1 in 100) → m = 41,167,512,262 (4.79GB), k = 7
4.79GB内存..。
任务本身是一个高规模
我有一个优惠券模型,它与产品模型(有枢轴表等等)有很多关系。我创建了一些本地范围,以便只获得可用的优惠券,并且只获得确定类别的优惠券:
public function scopeAvailable($query)
{
return $query->where('available', '>', 0);
}
public function scopeOfCategory($query, $category)
{
return $query->join('categories', 'categories