スカイライン演算子は最適化問題の対象であり、複数の次元を持つタプルのパレート最適を計算します。
この演算子は、 Börzsönyi ら[1]が提案したSQLの拡張機能で、データベースからの結果をフィルター処理して、複数の次元で他のオブジェクトよりも劣っていないオブジェクトのみを保持します。スカイラインという名前は、ハドソン川から見たマンハッタンの眺めに由来しており、そこでは他の建物に隠れていない建物が見えます。建物は、それよりも高い建物や川に近い建物に支配されていない場合に見えます (2 次元、川までの距離が最小、高さが最大)。スカイライン演算子の別の用途は、休暇用のホテルを選択することです。ユーザーは、ホテルが安くてビーチに近いことを望んでいます。ただし、ビーチに近いホテルは高価な場合もあります。この場合、スカイライン演算子は、価格とビーチまでの距離の両方で他のホテルよりも劣っていないホテルのみを表示します。
正式な仕様
スカイライン演算子は、他のどのタプルにも支配されていないタプルを返します。タプルが他のタプルを支配するのは、すべての次元で少なくとも同等であり、少なくとも 1 つの次元で優れている場合です。正式には、各タプルをベクトル と考えることができます。がすべての次元でと同等以上であり、少なくとも 1 つの次元で優れている場合、 は支配します(と表記)。 [2] 優位性 ( ) は、厳密な部分順序、たとえば より大きい ( およびの場合) または より小さい ( およびの場合)として定義できます。
2 つの次元を想定し、両方の次元の優位性をより大きいと定義すると、 SQL-92でスカイラインを次のように計算できます。
WITH tuples ( id , i , j ) as ( values ( 1 , 1 , 1 ), ( 1 , 2 , 1 ), ( 1 , 1 , 2 )) SELECT * FROM tuples t1 WHERE NOT EXISTS ( -- これはSELECT * FROM tuples t2によって支配されていない-- WHERE t2 . i >= t1 . iかつt2 . j >= t1 . jであるタプル-- すべての次元で少なくとも同等であり、AND ( t2 . i > t1 . iまたはt2 . j > t1 . j ) -- 少なくとも 1 つの次元で優れている);
提案された構文
SQLの拡張として、Börzsönyiら[1]はスカイライン演算子の次の構文を提案しました。
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... SKYLINE OF [ DISTINCT ] d1 [ MIN | MAX | DIFF ]、...、dm [ MIN | MAX | DIFF ] ORDER BY ...
ここで、d 1、... d m はスカイラインの次元を示し、MIN、MAX、DIFF は、その次元の値を最小化するか、最大化するか、あるいは単に異なる値にするかを指定します。
SQL 拡張機能がない場合、SQL クエリには次のアンチ結合not existsが必要です。
SELECT ... FROM (...) q WHERE NOT EXISTS ( SELECT * FROM (...) p WHERE p . d1 [ <= | >= ] q . d1 AND ... AND p . dm [ <= | >= ] q . dm AND ( p . d1 [ < | > ] q . d1 OR ... OR p . dm [ < | > ] q . dm ))
実装
スカイライン演算子は、現在のSQL構造を使用してSQLに直接実装できますが、ディスクベースのデータベースシステムでは非常に遅いことがわかっています。[1]分割統治法、インデックス、 [1] MapReduce [3]およびグラフィックカード上の汎用コンピューティングを利用する他のアルゴリズムも提案されています。[4]データストリームに対するスカイラインクエリ(つまり、連続スカイラインクエリ)は、リアルタイムの意思決定問題やデータストリーミング分析に広く普及しているため、マルチコアでの並列クエリ処理のコンテキストで研究されてきました。[5]
参照
参考文献
- ^ abcd Borzsonyi, Stephan; Kossmann, Donald; Stocker, Konrad (2001). 「スカイライン演算子」。Proceedings 17th International Conference on Data Engineering . pp. 421–430. doi :10.1109/ICDE.2001.914855. ISBN 0-7695-1001-9.S2CID 5812098 。
- ^ Maximilian E. Schüle、Alex Kulikov、Alfons Kemper、Thomas Neumann (2020)。「インメモリデータベースシステム向けのARTful Skyline Computation」。データベースと情報システムの新しいトレンド - ADBIS 2020ショートペーパー、フランス、リヨン、 2020年8月25〜27日、議事録。コンピューターと情報科学の通信。第1259巻。pp.3〜12。doi : 10.1007 /978-3-030-54623-6_1。ISBN 978-3-030-54622-9。
{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク) - ^ ムレスゴー、カスパー;ペダーセン、イェンス・ラウリッツ。ルー、ファ。周永琳(2014)。 「MapReduce での効率的なスカイライン計算」(PDF)。手順第 17 回拡張データベース技術国際会議 (EDBT) : 37–48。
- ^ Bøgh, Kenneth S; Assent, Ira; Magnani, Matteo (2013). 「効率的な GPU ベースのスカイライン 計算」。第 9 回新ハードウェアのデータ管理に関する国際ワークショップの議事録。pp. 5:1–5:6。doi : 10.1145 /2485278.2485283。ISBN 9781450321969. S2CID 13195757。
- ^ デ・マティス、ティツィアーノ;ディ・ジローラモ、サルヴァトーレ。メンカリ、ガブリエレ(2016年8月25日)。 「マルチコア アーキテクチャでの継続的なスカイライン クエリ」。同時実行性と計算: 実践と経験。28 (12): 3503–3522。土井:10.1002/cpe.3866。S2CID 6562372。
