Оператор Скайлайн
Оператор линии горизонта является предметом задачи оптимизации и вычисляет оптимум Парето для кортежей с несколькими измерениями.
Этот оператор является расширением SQL, предложенным Бёржёни и др. [1] фильтровать результаты из базы данных, чтобы сохранять только те объекты, которые по нескольким измерениям не хуже любых других. Название skyline происходит от вида на Манхэттен со стороны реки Гудзон , где можно увидеть те здания, которые не скрыты никем другим. Здание видно, если над ним не доминирует здание, которое выше или ближе к реке (два измерения, минимальное расстояние до реки, максимальная высота). Еще одно приложение оператора скайлайн предполагает выбор отеля для отдыха. Пользователь хочет, чтобы отель был одновременно дешевым и близким к пляжу. Однако отели, расположенные рядом с пляжем, также могут быть дорогими. В этом случае оператор скайлайн будет представлять только те отели, которые не хуже любого другого отеля как по цене, так и по удаленности от пляжа.
Формальная спецификация
[ редактировать ]Оператор skyline возвращает кортежи, над которыми не доминирует какой-либо другой кортеж. Кортеж доминирует над другим, если он хотя бы так же хорош во всех измерениях и лучше хотя бы в одном измерении. Формально мы можем рассматривать каждый кортеж как вектор. . доминирует (написано: ) если по крайней мере так же хорошо, как во всех измерениях и превосходит хотя бы в одном: [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 ( -- which is not dominated by
SELECT * FROM tuples t2 -- a tuple that is
WHERE t2.i >= t1.i and t2.j >= t1.j -- at least as good in all dimensions
AND (t2.i > t1.i or t2.j > t1.j) -- and better in at least one dimension
);
Предлагаемый синтаксис
[ редактировать ]В качестве расширения SQL Бёржёни и др. [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 ))
Выполнение
[ редактировать ]Оператор skyline можно реализовать непосредственно в SQL, используя текущие конструкции SQL, но было показано, что в дисковых системах баз данных это происходит очень медленно. [1] Были предложены и другие алгоритмы, использующие принцип «разделяй и властвуй», индексы, [1] MapReduce [3] и вычисления общего назначения на видеокартах . [4] Запросы Skyline к потокам данных (т.е. непрерывные запросы Skyline) изучались в контексте параллельной обработки запросов на многоядерных процессорах из-за их широкого распространения в задачах принятия решений в реальном времени и аналитике потоков данных. [5]
См. также
[ редактировать ]- Парето-эффективность
- Многокритериальная оптимизация
- Выпуклая оболочка
- Поиск ближайшего соседа
- Алгоритм выбора
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д Боржоньи, Стефан; Коссманн, Дональд; Стокер, Конрад (2001). «Оператор Скайлайн». Материалы 17-й Международной конференции по инженерии данных . стр. 421–430. дои : 10.1109/ICDE.2001.914855 . ISBN 0-7695-1001-9 . S2CID 5812098 .
- ^ Максимилиан Э. Шюле, Алекс Куликов, Альфонс Кемпер , Томас Нойман (2020). «ARTful Skyline Computing для систем баз данных в памяти». Новые тенденции в базах данных и информационных системах – краткие доклады ADBIS 2020, Лион, Франция, 25-27 августа 2020 г., Материалы . Коммуникации в компьютерной и информатике. Том. 1259. стр. 3–12. дои : 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.
- ^ Бёг, Кеннет С; Согласен, Ира; Маньяни, Маттео (2013). «Эффективное вычисление горизонта на основе графического процессора». Материалы девятого международного семинара по управлению данными на новом оборудовании . стр. 5:1–5:6. дои : 10.1145/2485278.2485283 . ISBN 9781450321969 . S2CID 13195757 .
- ^ Де Маттейс, Тициано; Ди Джироламо, Сальваторе; Менкальи, Габриэле (25 августа 2016 г.). «Непрерывные запросы горизонта на многоядерных архитектурах» . Параллелизм и вычисления: практика и опыт . 28 (12): 3503–3522. дои : 10.1002/cpe.3866 . S2CID 6562372 .