小编chi*_*tti的帖子

如何设计用于存储排序列表的数据库?

我希望在数据库中存储一个排序列表。我想有效地执行以下操作。

  1. Insert(x) - 将记录 x 插入表中
  2. Delete(x) - 从表中删除记录 x
  3. Before(x,n) - 返回排序列表中记录 x 之前的“n”条记录。
  4. After(x,n) - 返回排序列表中记录 x 之后的“n”条记录。
  5. First(n) - 从排序列表中返回前 'n' 条记录。
  6. Last(n) - 返回排序列表中的最后 'n' 条记录。
  7. Compare(x,y) - 给定表中的两条记录 x 和 y,查找是否 x > y。

我能想到的简单方法是在表中存储某种“等级”属性,并通过对该属性进行排序来进行查询。但是在这种方法中,插入/修改具有等级的记录成为一项代价高昂的操作。有没有更好的方法?

具体来说,我希望使用 Amazon 的 SimpleDB 来实现该表。但是关系数据库的一般答案也应该有帮助。

负载配置文件更新:

由于我正在为 Web 应用程序规划此功能,因此这取决于使用该应用程序的用户数量。

如果有 100k 活跃用户(超级乐观:P),那么我每天非常近似的估计是

500k 次选择,100k 次插入和删除,500k 次更新

我希望该表总共增长到 500k。

我希望优化更新、插入和比较操作。项目的排名会不断变化,我需要保持表格更新。

database-design

47
推荐指数
3
解决办法
5万
查看次数

标签 统计

database-design ×1