我目前的任务是获取选项符号并使它们可以从缓存中轻松搜索,以便从基于 Web 和 Windows 的各种不同应用程序中快速查找。我们决定制作 WFC 服务来为我们返回结果。
大约需要缓存 50 万条记录。当我们这样做时,我们的内存占用大约是 400 MB,使用 Trie 对象。我被指示把它变小。
期权符号在我们的世界中看起来像这样,ROOT:DATESTRING:PRICE:TYPE
或者IBM:130119:215.0:C
所以我在想,由于这里有大量重复,我可以为每个部分构建一个 Trie,完成后使内存使用量约为 30 MB。
所以我现在的困境是如何链接它们,以便它仍然显示为一个连续的 Trie 进行搜索。如果我做一个简单的父子,我可能会得到错误的结果,因为价格的父是日期,并且可能具有该根或类型不会出现的价格。我们当前的方法是使用另一个对象,它是类似于数据库中的连接表的链接对象。我们让每个最终节点都有一个 UniqueID,然后建立适当的关系。这仍然非常快并且不会占用大量内存,但我想知道其他人可能会建议以更有效的方式链接这些项目的方法。
附加信息:因此,在我当前的实现中,选项符号的每一部分都是它自己的独立 Trie。因此,如果我有以下选项: IBM:130119:215.0:C APPL:130119:215.0:C APPL:130119:600.0:C A:130119:31:0:C IBM:130119:220.0:C IBM:130119:215.0: P 我随后会为根构建一个 trie,例如:有一个结束值作为我的节点结构的一部分,以了解我在哪里结束。
根日期价格选项类型 / \ | / \ \ / \ 人工智能 1 2 3 6 个人电脑 / \ | | / \ | | AB 3 2 1 1 0 | | | | | | | 下午 0 0 5 。0 | | | | | | L 1 . . 0 . | | | | | 1 0 0 0 0 | 9
因此,如果没有办法将其中的每一个联系起来,我只需使用 Parent Child 就会得到很多误报。因为日期的孩子是价格。我曾考虑将所有父子片段放在 Root 上,使其成为一种特殊类型的 NODE,以便没有一堆空数据供其他不需要的数据使用。但是我们选择了一个链接表,但这根本无法正常工作。我不认为这是正确的实现,但由于调用次数和频率,我们确实需要缓存所有这些记录。