gpt4 book ai didi

postgresql - 如果您的数据库已经使用了布隆过滤器,仍然值得使用吗?

转载 作者:行者123 更新时间:2023-12-03 06:41:15 24 4
gpt4 key购买 nike

我在几个地方读到一些数据库在查询数据库时使用布隆过滤器来查找匹配项。在我的示例中,我使用的是 Postgresql,它是这些数据库之一。

当谈到使用 Redis 实现布隆过滤器时,我的问题出现了,它有一个模块,允许您在输入集合中的成员时使用布隆过滤器。 (请记住查找过程的复杂性,而不是从磁盘中检索该值)

现在使用 Redis 的好处是将值存储在内存中,当尝试检索该值时,它比在 rdbms 中查找它的性能更高,因为该值存储在磁盘上。

在我的示例中,假设我正在检查用户名是否已经存在,是否仍然值得在内存解决方案中使用带有布隆过滤器的 Redis 与仅使用 Postgresql 查询进行检查?

我的流程是这样的:CheckIfUserExsits() // using Redis bloom filterIf TRUE then confirm with rdbms // do to x% probability of false positive nature of bloom filterIf rdbms == MATCH then reply with "User does exist"Else don't check rdbms at all // do to 0% probability of false negative nature of bloom filter
这个流程应该更加预先,因为您没有查询 rdbms 并通过返回 false 的内存查找快速执行此操作更有效率。

但是,由于我只关心成员是否存在,因此可以提高回复 false 的性能。 ,Redis这一步真的有用吗?因为如果 Postgresql 已经在使用布隆过滤器查询表,那么性能应该已经比较快了。

最佳答案

I have read in a couple of places that some databases use bloom filters for finding a match when querying a database. In my example I'm using Postgresql which is one of those databases.



你能提供你正在阅读的东西的链接吗?

PostgreSQL 确实有一个布隆过滤器索引类型扩展(在“contrib”中),但是必须显式创建索引,并且无论如何它对您的用例没有用处。它回答了每个单独行的问题,“该行是否满足一组条件”。它没有回答“此表中的任何行是否满足这一单一条件”的问题。

PostgreSQL 也有一个 C 语言的Bloom数据结构供内部使用,但同样你的要求不是它所使用的那些东西之一。

面对 PostgreSQL 的 ACID/MVCC 模型及其存储模型,您想要的类型的布隆过滤器很难实现。

如果你真的需要这个(我怀疑你确实需要),那么使用 redis 似乎是完成这项工作的好工具。但是你将如何让它们保持同步呢?

关于postgresql - 如果您的数据库已经使用了布隆过滤器,仍然值得使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61362030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com