2

我目前的任务是获取选项符号并使它们可以从缓存中轻松搜索,以便从基于 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,以便没有一堆空数据供其他不需要的数据使用。但是我们选择了一个链接表,但这根本无法正常工作。我不认为这是正确的实现,但由于调用次数和频率,我们确实需要缓存所有这些记录。

4

0 回答 0