Oracleデータベースから顧客名を昇順または降順に(他の顧客データとともに)表示する必要がある機能を実装する必要があります。サーバーからソートされたデータをチャンクで取得していますか?
- DBから最初の100の名前を降順で表示します。
- 次の100の名前を表示するボタンがさらに表示されます。
- 私は最後のインデックスに基づいて次のレコードを取得する予定です。だからステップ2で101から200の名前を取り出す
- しかし、ここでの問題は、ステップ2の直前に他のユーザーによって名前が更新された場合です。 I 2
が最初に検討段階でインデックスによってレコードをフェッチした場合()名がZ
にA
に更新された場合()(名前がA
にX
に更新された場合)、または重複している場合名で をスキップすることができますページに表示されるレコード名はZ
からX
までです。
スキップしたり複製したりせずに正しいレコードを表示できるこのシナリオはどのように処理できますか?
私は考えることができるのは、すべてのレコードIDをメモリ(Webサーバーメモリまたはカーソルメモリのいずれか)にフェッチし、一時的な結果として格納し、実際のデータではなくそこからデータを返します。レコードのうち、ウェブサーバまたはDBメモリのいずれかのメモリにロードされます。
ベストプラクティスとはどのようなもので、他のサイトはこのようなシナリオをどのように処理しますか?
ええ私はあなたが示唆したようにすでにオフセット/ rownumで新鮮なクエリをやっています。 amazonなどのような大きなサイトがこのシナリオをどのように処理するのか不思議です。重複していても紛失しても問題ないか、バックエンドのキャッシングで完璧なアプローチをしていますか? – emilly
@emilly私が見てきたことに基づいて、データセットのスナップショット全体のパターンに従いません。 –