2008-09-17 3 views
1

を行っている場合は、反復改ページをしてください:ページサイズを定義する1は、我々はのプロセスに行かなければならないページネーションサポートするデータソースから結果をページ分割したい場合、変更操作が

  1. を - それは、結果の数でありますページごとに表示する。
  2. オフセット=ページ番号(0ベース)*ページサイズ
  3. を使用して、ユーザーが要求した各ページを取得します。取得したページの結果を表示します。

この操作は、操作が発生するバックエンドシステムに影響する可能性があることを考慮していない点では問題ありません。私は、ページの読み込み間にデータを挿入する人や、データを削除する人について話しています。

page_size = 10; 
get page 0 -> results from 0 to 9; 
user inserts a record that due to the query being executed goes to page 0 - the one just shown; 
get page 1 -> results from 10 to 19 - the first results on the page is the result on the old page 0. 

上記の動作は、ビューアに混乱を引き起こす可能性があります。この問題を回避する実用的な解決策をご存じですか?

+0

私は同じ質問をしようとしていました。私はこれがStackoverflowとTwitterで最近起こっていることに気付いた。 – Sushant

答えて

1

これにはいくつかの考え方があります。

  1. データはあなたが 結果セット全体(本当に 大規模なデータセットを扱う場合は、このオプション ではないかもしれません)
  2. を保持するキャッシュ方法のいくつかの並べ替えを実装することができ、それは
  3. も聞かせて更新されます各ページの操作の比較を行うと、総レコード数 が

を変更した場合 ユーザーに通知することもできます。

0

重要な更新が主に新しい挿入(たとえば、質問と新しい質問をページングするときにStackOverflow自体がこの問題を抱えているように見える場合)を処理する1つの方法は、発行時にタイムスタンプを取得することです最初のページ区切りクエリを作成し、後続のページの要求の結果をそのタイムスタンプより前の項目に限定することができます。

0

基本データが常に変化していることをユーザーが理解している限り、混乱することはありません。それで簡単にしてください。

結果の最初の数ページをキャッシュして、それを後続のビューに使用することができますが、結果はデー​​タベースと同期しなくなります。これはさらに混乱します。

関連する問題