想象一下,您有一个非常大的集合(例如,100 万+)组“任务”,每个任务都需要一小部分“资源”(可能是非常大的集合中的大约 10 个,例如 10,000+)。
我想执行一个查询,该查询需要一些“资源”样本集(同样,大约 10 个),并会找到使用这些资源的所有任务。最终,我想对“任务”执行更复杂的查询,例如:
- 哪些“任务”需要比我更多的“资源”?
- 给定的“任务”与我的“资源列表”有多接近?
我认为这个问题在某些方面与网络搜索非常相似,其中“任务”是网页,“资源”是这些页面上的单词。在并行问题中,我想执行诸如“给定这些单词,向我显示包含它们的所有网页特定次数的所有网页”之类的查询。
据我所知,这个问题不适用于常规数据库(甚至 NoSQL 数据库!)。“资源”列表需要是可扩展的,所以它不能是传统数据库中的列。也会有很多,所以做一个10000列的数据库似乎不太正确。
我想象的是试图将所有数据保存在内存中,然后按顺序搜索。但这可能不是很有可扩展性,如果我断电,我会丢失所有数据......
我很想得到有关如何解决此类问题的任何指导!