Redis 建议/意见,用于实施快速高效的方法来搜索超大数据集中的项目列表
请评论和批评该方法。 场景:我在一个平面文件中有一个大数据集(2亿个条目)。数据的形式为:10位电话号码,后跟5-6个二进制字段。 每周我都会得到一个Delta文件,其中只包含对数据的更改 问题:给定一个项目列表,我需要确定每个项目(10位数字)是否存在于数据集中 我计划的方法:Redis 建议/意见,用于实施快速高效的方法来搜索超大数据集中的项目列表,redis,nosql,large-data,Redis,Nosql,Large Data,请评论和批评该方法。 场景:我在一个平面文件中有一个大数据集(2亿个条目)。数据的形式为:10位电话号码,后跟5-6个二进制字段。 每周我都会得到一个Delta文件,其中只包含对数据的更改 问题:给定一个项目列表,我需要确定每个项目(10位数字)是否存在于数据集中 我计划的方法: 将解析数据集并将其放入DB(将在 周)比如MySQL或者Postgres。我希望在应用程序中使用RDBMS的原因 第一步是我想要完整的时间序列数据 然后使用 支持操作的最新有效数据,以确定 每个项目是否存在于数据集中
- 将解析数据集并将其放入DB(将在 周)比如MySQL或者Postgres。我希望在应用程序中使用RDBMS的原因 第一步是我想要完整的时间序列数据
- 然后使用 支持操作的最新有效数据,以确定 每个项目是否存在于数据集中(考虑某种类型的 NOSQL数据库,像这里的Redis一样为搜索而优化。应该有 持久性和可分布性)此数据结构将是只读的
- 查询此键值存储以了解每个项是否存在 (如果可能,一次匹配所有值的列表,而不是匹配 一次一项)。希望这是燃烧的快将使用此功能作为REST API的后端
旁注:我最喜欢的语言是Python。快速查找的一些注意事项:
- 如果您想一次检查一组数字,可以使用Redis
执行集合交集SINTER
- 通过将数字范围分布在一些散列函数上,例如电话号码的第一位数字(可能有更好的数字,您必须进行实验),您可能会从使用网格结构中受益,这将例如,在使用最佳散列时,将每个节点的大小减少到使用10个节点时的近2000万个条目
- 如果您希望重复请求(很有可能),您可以将最后n个请求的电话号码缓存在一个较小的集合中,然后首先查询该集合
- 如果您想一次检查一组数字,可以使用Redis
执行集合交集SINTER
- 通过将数字范围分布在一些散列函数上,例如电话号码的第一位数字(可能有更好的数字,您必须进行实验),您可能会从使用网格结构中受益,这将例如,在使用最佳散列时,将每个节点的大小减少到使用10个节点时的近2000万个条目
- 如果您希望重复请求(很有可能),您可以将最后n个请求的电话号码缓存在一个较小的集合中,然后首先查询该集合