【发布时间】:2022-02-02 09:43:33
【问题描述】:
我需要一个高效的数据结构来在实时(每秒多达一百次插入、删除或更新)服务器上存储大量(数百万)条记录。
它的客户需要能够抓取大量数据,从某个点开始进行排序,能够滚动(即获取他们最初获得的记录之前和之后的记录)并接收实时更新。
最初,我考虑了某种形式的链接有序集和一些索引,但是即使记录在它们具有 id 的意义上是唯一的,它们的字段值也不是。只需在每个节点中插入多条记录即可解决冲突,但似乎不正确。
我想出的另一个解决方案是一个带有索引的链接集,它通过插入删除和更新来保持排序。其中的大 O 不是 O(log n) 而是 O(n),但我猜如果我还有索引,它会大大加快这个过程吗?还是二分查找要插入的地方?但不要认为我可以使用列表。
鉴于我需要客户端接收有关此数据结构状态的实时更新,什么是最有效的解决方案以及哪种解决方案最好?
代码将使用 Java
【问题讨论】:
-
我认为双向链表适合prev和next指针指向当前集合之前和prev的集合,对于这里的集合,您可以使用自平衡bst,例如AVL树插入/删除成本将是 O(logn)?
标签: java list algorithm data-structures set