シャード環境では、データはさまざまなマシン/シャードに分割されます。ページ化された結果 (例: 2 ページ目で 10 件の結果、または 10 ページ目で 20 件の結果) を返すクエリを作成する方法を教えてください。
私はそれが主キーに関係していることを知っています。単一の RDBMS の場合、自動インクリメント カラムがあるため簡単です。そのため、最後の 10 項目を簡単に取得してページ データを返すことができます。
シャード環境では、データはさまざまなマシン/シャードに分割されます。ページ化された結果 (例: 2 ページ目で 10 件の結果、または 10 ページ目で 20 件の結果) を返すクエリを作成する方法を教えてください。
私はそれが主キーに関係していることを知っています。単一の RDBMS の場合、自動インクリメント カラムがあるため簡単です。そのため、最後の 10 項目を簡単に取得してページ データを返すことができます。
私は完全なスケールアウト ソリューションのメーカーであるScaleBaseで働いています。これは、必要に応じて「自動シャーディング マシン」であり、データと SQL ストリームを分析し、データを DB ノード間で分割し、読み取りを負荷分散し、実行時に結果を集計します。 – だからあなたはする必要はありません!
自動インクリメントに関するこのスレッドへの私の回答を見ることができます: Sharding and ID generation as instagram
また、 Pinterest についてhttp://database-scalability.blogspot.com/にある私の投稿を見てください。
具体的には、複数のシャードの結果を 1 つの結果にマージするのは地獄です。例外的なケースとして、GROUP BY、ORDER BY、JOIN、LIMIT、HAVING があります。SB では、ほとんどの組み合わせをサポートしていると言わざるを得ません。確かに、プロプライエタリに「曲げる」ことはできますが、一般的に行う必要があります...しかし、それでも...