Database design 在数据库中存储大量有序但可重新排序的数据的策略?

Database design 在数据库中存储大量有序但可重新排序的数据的策略?,database-design,Database Design,如果需要以特定顺序返回大量数据(比如一百万行),一个明显的方法就是在每一行上放置一个数字索引,并按该索引的顺序进行排序。但是,如果您想在该数据中间创建一个新行,则您可能需要在索引中需要在两行之间放置一个间隙,或者您需要“更新表集位置=位置+ 1,其中位置> NeXyPoT”,这可能是缓慢而不可扩展的。 有没有更聪明的策略来处理这个问题?我是否最好只在行之间留一个大的间隙,并希望得到最好的结果(可能用后台进程代替行)。是否有一个相当于链表的数据库 编辑:我知道什么是索引,以及如何进行传统排序(阅读

如果需要以特定顺序返回大量数据(比如一百万行),一个明显的方法就是在每一行上放置一个数字索引,并按该索引的顺序进行排序。但是,如果您想在该数据中间创建一个新行,则您可能需要在索引中需要在两行之间放置一个间隙,或者您需要“更新表集位置=位置+ 1,其中位置> NeXyPoT”,这可能是缓慢而不可扩展的。 有没有更聪明的策略来处理这个问题?我是否最好只在行之间留一个大的间隙,并希望得到最好的结果(可能用后台进程代替行)。是否有一个相当于链表的数据库


编辑:我知道什么是索引,以及如何进行传统排序(阅读我的第一句话)。我想知道是否有一种数据结构可以在排序索引的中间插入一个新行,以便仍然可以进行范围查询。据我所知,传统的下一个/上一个指针无法作为单个范围查询来执行此操作。

数据库不是电子表格,也没有隐式排序

select Col1, Col2, Col3
from some_table
where Col3 between value_1 and value_2
order by Col2 asc;

对于加速检索,使用索引。

您不能在数据中间创建元组。您将在末尾添加它。 必须使用order by列以正确的顺序返回数据,如果对其进行索引,则返回速度会很快

是否有一个相当于链表的数据库

不是直接的-有一些在sql中存储树的想法-这比您要求的要多一些-但是几乎是相同的设计。 但请注意,这会导致对每个元组进行查询(读取链接目标,选择下一个元组)。如果处理数以百万计的元组,这将非常缓慢


<>你的编辑:你不能添加元组中间! 如果您确实需要这样做:

  • 创建新表-按所需顺序添加所有内容
  • 放下旧桌子
  • 将新表重命名为旧表
  • 请注意,您需要为每个添加的元组执行此操作(只要不在数据末尾添加元组)

在我看来,GABS想法不是一个好的解决方案,因为当你添加数据和空间是不够的时候,服务器也将重新定位数据。在这种情况下,我使用CoucDB,虽然我很想知道是否有一个解决方案的RDBM,如PASGRESs。你的编辑:你不能添加在元组的中间。如果需要,请执行以下操作:*创建一个新表-按所需顺序添加所有内容*删除旧表*将新表重命名为旧表不是我想要的答案,但我会接受的答案:P谢谢!