小编Fab*_*o20的帖子

数据库设计 - “列表”存储

我“即将”在我的一个应用程序上实现一项功能,该功能需要存储大量数据(播放列表)。

假设以下场景:

  • 一个用户可以有多个播放列表
  • 这些播放列表最多有 50 万个条目(可能更多)
  • 我必须能够获取、删除、重新排序或查询整个播放列表或使用索引
  • 目前每个用户都有一个播放列表;但
  • 我即将实现一项功能,允许用户拥有 1 个以上的播放列表。
  • 每个播放列表大约有 3500 个条目。有些可以高达 590k。

播放列表条目由以下类表示:

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;DRList< Item >对于每个用户(每个用户超过 1 个),此列表可以扩展到 500k+ 个条目。

目前,我为此使用了基于 SQL 的存储,但是,它很慢,特别是当我需要移动索引时 - 慢到我的数据库驱动程序认为连接失败并泄漏的程度。

解释“移位索引”:假设我正在删除第 3 个索引 ( i = 3)处的一个项目,这意味着它之后的所有其他项目都需要向下移动一个索引,因此我稍后可以请求索引 3 并获取该项目以前是索引 4。

目前,我会在Order删除后减少所有元素的播放列表的列值。

当前播放列表项目表设计

Id (Ordering/Index) | PlayList …
Run Code Online (Sandbox Code Playgroud)

database-design

1
推荐指数
1
解决办法
1131
查看次数

标签 统计

database-design ×1