布隆过滤器原理
布隆过滤器原理
布隆过滤器的数据结构是一个 bit 数组,长度为 8,默认都是 0,主要用于存在性检测,相比于传统数据结构,布隆过滤器不仅占用空间更小,检测效率也更高。使用布隆过滤器首先要通过不同的哈希函数生成对应的哈希值,再将哈希值指向对应的 bit 位置。如我们要将 A 值映射到布隆过滤器上,则需要使用不同的哈希函数生成多个哈希值,哈希值指向 bit 位的值被置为1则表示数据已经完成映射;但若另一个数值生成的哈希值,覆盖了 A 值的 bit 位,就会出现误报。
布隆过滤器的优点与缺点
布隆过滤器的优点与缺点
布隆过滤器优点
布隆过滤器相比于其他数据结构,主要的优势是它可以表示全集,除此之外,布隆过滤器在节约空间和缩短查询时间方面都有较大优势。哈希函数相互之间没有关系,更方便与硬件并行。同时,布隆过滤器不需要存储元素本身,因此在某些对保密要求非常严格的场合有更明显的优势。
布隆过滤器缺点
布隆过滤器比较明显的劣势是有较高的误算率,且误算率会随着存入元素的增加而增加;一般情况下布隆过滤器中的元素不能被删除,因此会增加数据安全的风险。为了解决误算率的问题,常见的补救方式是建立白名单,存储可能被误判的元素,但若元素量较少,则使用散列表记录;为了降低误算率,还出现了很多布隆过滤器的变种。
布隆过滤器的应用
布隆过滤器的应用
布隆过滤器在检测方面有较明显的优势,因此会应用于以下场景中:过滤邮件黑名单,判断邮件地址是否在黑名单中;判断某个 URL 是否被爬虫入侵;快速判断 key-value 系统中某个 key 是否存在,如果不存在,会直接返回,而不会每次查询都访问数据库,这样不仅节省了相应数据查询的时间,还有效避免了缓存击穿问题的发生,可在一定程度上减轻数据库的访问压力;在数据迁移后,使用布隆过滤器进行 ConsistencyCheck。
亚马逊云科在数据查询方面的特点
亚马逊云科在数据查询方面的特点
立即开始查询
Amazon Athena 属于无服务器服务,用户可快速查询数据,而无需设置和管理任何服务器或数据仓库。只要指向存储在 Amazon S3 中的数据,定义架构并使用内置的查询编辑器就可以开始查询。借助 Amazon Athena,用户可以挖掘 S3 中存储的所有数据,而无需设置复杂的过程来提取、转换和加载数据 (ETL)。
安全集成
Amazon Athena 允许您使用 Amazon Identity and Access Management (IAM) 策略、访问控制列表 (ACL) 和 Amazon S3 存储桶策略控制对您数据的访问;且能与 Amazon Glue 集成,并支持跨服务创建统一的元数据存储库,抓取数据源以发现数据并在 Data Catalog 中填充新表格和修改的表格以及分区定义,并维持架构版本控制。
可用性高且持久性强
Amazon Athena 具有高度可用性,可在多个设施中使用计算资源执行查询,如果某特定设施无法访问,则会自动适当地路由查询。Athena 使用 Amazon S3 作为其底层数据存储,从而使您的数据可用性高、持久性强。
立即开始查询
Amazon Athena 属于无服务器服务,用户可快速查询数据,而无需设置和管理任何服务器或数据仓库。只要指向存储在 Amazon S3 中的数据,定义架构并使用内置的查询编辑器就可以开始查询。借助 Amazon Athena,用户可以挖掘 S3 中存储的所有数据,而无需设置复杂的过程来提取、转换和加载数据 (ETL)
安全集成
Amazon Athena 允许您使用 Amazon Identity and Access Management (IAM) 策略、访问控制列表 (ACL) 和 Amazon S3 存储桶策略控制对您数据的访问;且能与 Amazon Glue 集成,并支持跨服务创建统一的元数据存储库,抓取数据源以发现数据并在 Data Catalog 中填充新表格和修改的表格以及分区定义,并维持架构版本控制。
可用性高且持久性强
Amazon Athena 具有高度可用性,可在多个设施中使用计算资源执行查询,如果某特定设施无法访问,则会自动适当地路由查询。Athena 使用 Amazon S3 作为其底层数据存储,从而使您的数据可用性高、持久性强