我有一个不断增长的数据库,其中包含:
- 需求表(多个标准)
- 报价表(多个标准)
条件可以是字符串(例如:国家名称)、布尔值、数字、...
我想找到或多或少匹配的所有需求报价(有点像工作银行,对接会,...)
如果表不包含很多行,我将计算如下:
- 对于每个需求,通过平均每个标准的相关性来计算每个报价的匹配相关性。
但是对于一个重要的数据库,这将花费太多时间,不是吗?
您推荐什么解决方案?
我有一个不断增长的数据库,其中包含:
条件可以是字符串(例如:国家名称)、布尔值、数字、...
我想找到或多或少匹配的所有需求报价(有点像工作银行,对接会,...)
如果表不包含很多行,我将计算如下:
但是对于一个重要的数据库,这将花费太多时间,不是吗?
您推荐什么解决方案?
从 2010 年 6 月 24 日开始扩展答案——在联接表中捕获预先计算的相关性分数(需求键、报价键、相关性分数)。请注意,此联接表可能包含 Count(Demands) * Count(Offers) 记录;谨慎的做法是仅存储相关性分数大于某个阈值的记录。
这种方法在数据插入上的计算复杂度为 O(n)。如果假设需求的特征空间(与报价类似)使得对同一报价具有高相关性分数的两个需求也在“关闭”范围内,您可能能够将此复杂性降低到 O(log(n))他们的特征空间,持有:
这将以特异性换取速度。通过将 Demands 样本与每个 Offer 进行比较并按 Relevance 排序来验证初始假设的准确性;遍历有序的报价集并计算您在集群搜索的结果集中找到的数量,然后再找到缺失的。对此测试的主观分析将使您了解集群花费了多少。
我会按照您描述的方式进行操作-但使用滚动缓存机制和一些索引。
找出创作的相关性,然后看看它是如何进行的。如果频率较低(高读取,低写入),增量添加可能会很好。如果两端都很高,您可以拆分为两个数据库...在一个上处理更新,然后定期将处理后的数据推送到另一个,这是默认的读取源。