【发布时间】:2017-01-25 00:58:04
【问题描述】:
我有一个包含 10,000 个从 1 到 1,000 的整数向量的数据库。每个向量的长度可以达到 1,000。例如,它可能如下所示:
vec1: 1 2 56 78
vec2: 23 34 35 36 37 38
vec3: 1 2 3 4 5 7
vec4: 2 3 4 6 100
...
vec10000: 13 234
现在,我想以快速响应特定类型请求的方式存储此数据库。每个请求都会以整数向量的形式出现,最长可达 10,000:
query: 1 2 3 4 5 7 56 78 100
响应应该是作为该查询字符串子集的向量的索引。例如,在上面的列表中,只有vec1 和vec3 是查询的子集,所以这种情况下的响应应该是
response: 1 3
此数据库不会更改,因此您可以以任何可能的方式对其进行预处理。您可以指定查询也来自任何协议,只要信息相同。例如,它可以是排序列表或布尔表。
对数据库和查询进行编码以实现最高响应率的最佳策略是什么?
【问题讨论】:
-
任何向量的内容可以是什么,即。向量中的最大数量?
-
@vish4071 "integers range from 1 to 1,000" -- 这是数据库和查询中的字母表。
-
矢量内容是唯一的吗? IE。它们可以作为集合存储吗?
-
@wflynny 绝对。您可以将它们视为集合,因为重复的元素被视为一个。
-
这是 Python 问题还是数据库问题?您想知道如何构建数据库以便可以查询(例如使用 SQL)并返回子集向量的索引,还是想知道如何构建您在 Python 中描述的数据?
标签: database algorithm data-structures