从块中的服务器获取排序数据?

时间:2017-11-08 01:38:45

标签: java oracle algorithm sorting web-applications

我需要实现这个功能,我需要从oracle数据库以升序或降序方式(以及其他客户数据)显示客户名称。

  1. 假设我以desc顺序显示DB中的前100个名字。
  2. 有更多按钮显示,接下来会显示100个名字。
  3. 我打算根据最后一个索引获取下一条记录。因此,在第2步中,我将获取101到200个名称
  4. 但问题是,如果在第2步之前,名称已被其他用户更新。 在这种情况下,可以跳过名称(如果名称已更新为XA)或重复名称((如果名称已更新为AZ)),如果我提取第2步中的索引记录
  5. 首先考虑显示的记录名称是ZX

    如何在不跳过或重复的情况下显示正确的记录?

    我能想到的一种方法是获取内存中的所有记录ID(在Web服务器内存或游标内存中),将其存储为临时结果,然后从那里返回数据而不是真实数据。但如果我有百万记录athen它将加载在内存上的webserver或DB内存。

    什么是最佳方法以及其他网站如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

如果您真的希望每个用户查看表数据的固定快照,那么您将不得不在幕后进行一些缓存。如果在请求第2页时,有几条新记录登陆到第1页,那么你会对将会发生的事情有一个有效的关注,从而导致在第2页再次查看相同的信息。好吧,扮演魔鬼的拥护者,我可以还认为用户可能还在查看已删除但不再存在的记录。就用户体验而言,这可能同样糟糕。

我经常看到处理这个问题的方法是为每个页面做一个新的查询。由于您使用的是Oracle,因此可能会使用OFFSETFETCH。可能存在重复/丢失记录问题,但除非您的数据变化非常快,否则可能是次要问题。