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

为域名数据库选择什么NoSQL解决方案?,nosql,key-value,Nosql,Key Value,我有一个项目,它在数据库中存储数百万个域名,并执行搜索请求以查找数据库中是否存在域。我唯一需要的操作是检查给定值是否存在。没有范围查询,没有其他信息,什么都没有 我对数据库进行的查询数量相当大,例如每个用户会话10万次 我每天有一次新的数据库,甚至可以检查哪些记录被删除了,哪些记录被添加了——我认为这不值得。所以,我将数据库导入一个新表,并将脚本指向一个新名称 因为我不使用任何SQL特性,所以正在寻找能够使整个过程更快的解决方案。名称搜索和导入时间对我很重要 我的服务器无法将这个数据库存储在内存

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

我对数据库进行的查询数量相当大,例如每个用户会话10万次

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

因为我不使用任何SQL特性,所以正在寻找能够使整个过程更快的解决方案。名称搜索和导入时间对我很重要

我的服务器无法将这个数据库存储在内存中,即使是其中的一半,所以我认为一些从硬盘上运行的NoSQL解决方案可以帮助我


你能提出一些建议吗?

如果你能接受一个非常小的假阳性率(假设你使用了一个足够大的过滤器),你就可以很好地通过一个测试

另一方面,您当然可以使用。它大量使用bloom过滤器,因此请求不存在的东西很快,而且您不必担心误报。它的设计目的是处理不适合内存的数据集,因此性能下降相当平稳


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

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

免责声明:我是伯克利DB的产品经理,所以我有点偏见。这就是说,它的设计正是为了满足您的要求——直接、快速、可扩展的键值数据管理,而无需不必要的开销


事实上,有许多“数据库域”类型的应用程序服务使用Berkeley DB作为其主要数据存储。大多数开源和/或商业LDAP实现都使用Berkeley DB(包括OpenLDAP、Redhat的LDAP、Sun Directory Server等)。Cisco、Juniper、AT&T、Alcatel、Mitel、Motorola和许多其他公司使用Berkeley DB来管理他们的网关、身份验证和配置管理系统。他们使用Berkeley DB,因为它完全满足他们的需要,非常快速、可扩展和可靠

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