我“即将”在我的一个应用程序上实现一项功能,该功能需要存储大量数据(播放列表)。
假设以下场景:
播放列表条目由以下类表示:
public class Item {
private Long owner; // User
private String data;
private String name;
private String author;
private int index; // Index of this item on the list
}
Run Code Online (Sandbox Code Playgroud)
TL;DR:List< Item >对于每个用户(每个用户超过 1 个),此列表可以扩展到 500k+ 个条目。
目前,我为此使用了基于 SQL 的存储,但是,它很慢,特别是当我需要移动索引时 - 慢到我的数据库驱动程序认为连接失败并泄漏的程度。
解释“移位索引”:假设我正在删除第 3 个索引 ( i = 3)处的一个项目,这意味着它之后的所有其他项目都需要向下移动一个索引,因此我稍后可以请求索引 3 并获取该项目以前是索引 4。
目前,我会在Order删除后减少所有元素的播放列表的列值。
Id (Ordering/Index) | PlayList …Run Code Online (Sandbox Code Playgroud)