为域名数据库选择什么NoSQL解决方案?

时间:2011-02-25 14:53:40

标签: nosql key-value

我有一个项目,可以在数据库中存储数百万个域名,并执行搜索请求以查找数据库中是否存在域。我需要的唯一操作 - 检查是否存在给定值。没有范围查询,没有其他信息,没有。

我对数据库的查询数量相当大,例如每个用户会话100'000。

我每天都有一个新数据库,甚至可以检查哪些记录被删除以及添加了什么 - 我认为这不值得。因此,我将数据库导入新表并将脚本指向新名称。

寻找可以使整个事情更快的解决方案,因为我不使用任何SQL功能。名称搜索和导入时间对我很重要。

我的服务器无法将这个数据库存储在内存中,甚至是它的一半,所以我认为一些从硬盘驱动器工作的NoSQL解决方案可以帮助我。

你能提出一些建议吗?

3 个答案:

答案 0 :(得分:1)

如果你可以接受一个非常小的误报率(假设你使用足够大的过滤器),你可以很好地使用Bloom filter

另一方面,您当然可以使用Cassandra。它大量使用布隆过滤器,所以要求不存在的东西很快,你不必担心误报。它旨在处理不适合内存的数据集,因此性能降级非常顺利。

导入任意数量的数据应该很快 - 在普通机器上,Cassandra每秒可以处理大约15k次写入。

答案 1 :(得分:1)

更小更快的解决方案是将Berkeley DBkey-value pair API一起使用。 Berkeley DB是一个链接到您的应用程序的数据库库,因此没有客户端/服务器开销,也没有单独的服务器来安装和管理。 Berkeley DB非常简单,在几个API中提供了一个简单的键值(NoSQL)API,它提供了您希望在更大,更复杂的RDBMS中找到的所有基本数据管理例程(索引,二级索引,外键),但没有SQL引擎的开销。

免责声明:我是Berkeley DB的产品经理,所以我有点偏颇。也就是说,它的设计完全符合您的要求 - 简单,快速,可扩展的键值数据管理,无需不必要的开销。

事实上,有许多“数据库域”类型的应用程序服务使用Berkeley DB作为其主要数据存储。大多数开源和/或商业LDAP实现都使用Berkeley DB(包括OpenLDAP,Redhat的LDAP,Sun Directory Server等)。思科,瞻博网络,AT& T,阿尔卡特,Mitel,摩托罗拉和许多其他人使用Berkeley DB来管理他们使用Berkeley DB作为他们的网关,身份验证和配置管理系统。他们使用BDB因为它完全符合他们的需要,它非常快速,可扩展且可靠。

答案 2 :(得分:0)

这里有很多选择。 Berkeley DB当然可以完成这项工作,可能是最简单的解决方案之一。同样简单:将所有内容存储在memcached中,然后您可以根据需要选择在多台计算机上拆分值的缓存(如果查询负载或数据大小增加)。