El operador skyline es objeto de un problema de optimización y calcula el óptimo de Pareto en tuplas con múltiples dimensiones.
Este operador es una extensión de SQL propuesta por Börzsönyi et al. [ 1 ] para filtrar los resultados de una base de datos y conservar solo aquellos objetos que no estén dominados por ningún otro punto en todas las dimensiones. El nombre skyline proviene de la vista de Manhattan desde el río Hudson , donde se pueden ver los edificios que no están ocultos por ningún otro. Un edificio es visible si no está dominado por un edificio más alto o más cercano al río (dos dimensiones, distancia al río minimizada, altura maximizada). Otra aplicación del operador skyline consiste en seleccionar un hotel para unas vacaciones. El usuario desea que el hotel sea económico y esté cerca de la playa. Sin embargo, los hoteles cercanos a la playa también pueden ser caros. En este caso, el operador skyline solo presentaría aquellos hoteles que no sean peores que cualquier otro hotel en cuanto a precio y distancia a la playa.
Especificación formal
El operador skyline devuelve tuplas que no están dominadas por ninguna otra tupla. Una tupla domina a otra si es al menos igual de buena en todas las dimensiones y mejor en al menos una dimensión. Formalmente, podemos pensar en cada tupla como un vector.domina(escrito:) sies al menos tan bueno comoen todas las dimensiones, y superior en al menos una: [ 2 ] Dominio () se puede definir como cualquier orden parcial estricto , por ejemplo mayor (con :=>} y :=\geq } ) o menos (con :=<} y :=\leq } ).
Suponiendo dos dimensiones y definiendo el dominio en ambas dimensiones como mayor, podemos calcular el horizonte en SQL-92 de la siguiente manera:
WITH tuples ( id , i , j ) as ( values ( 1 , 1 , 1 ), ( 1 , 2 , 1 ), ( 1 , 1 , 2 )) SELECT * FROM tuples t1 WHERE NOT EXISTS ( -- que no está dominada por SELECT * FROM tuples t2 -- una tupla que es WHERE t2 . i >= t1 . i and t2 . j >= t1 . j -- al menos tan buena en todas las dimensiones AND ( t2 . i > t1 . i or t2 . j > t1 . j ) -- y mejor en al menos una dimensión );Sintaxis propuesta
Como extensión de SQL, Börzsönyi et al. [ 1 ] propusieron la siguiente sintaxis para el operador skyline:
SELECCIONAR ... DE ... DONDE ... AGRUPAR POR ... QUE TENGA ... SKYLINE DE [ DISTINTO ] d1 [ MÍN | MÁX | DIFERENCIA ], ..., dm [ MÍN | MÁX | DIFERENCIA ] ORDENAR POR ...donde d 1 , ... d m denotan las dimensiones del horizonte y MIN, MAX y DIFF especifican si el valor en esa dimensión debe minimizarse, maximizarse o simplemente ser diferente.
Sin una extensión SQL, la consulta SQL requiere un antijoin con not exists:
SELECCIONAR ... DE (...) q DONDE NO EXISTE ( SELECCIONAR * DE (...) p DONDE p . d1 [ <= | >= ] q . d1 Y ... Y p . dm [ <= | >= ] q . dm Y ( p . d1 [ < | > ] q . d1 O ... O p . dm [ < | > ] q . dm ))Implementación
El operador skyline se puede implementar directamente en SQL utilizando construcciones SQL actuales, pero se ha demostrado que esto es muy lento en sistemas de bases de datos basados en disco. [ 1 ] Se han propuesto otros algoritmos que utilizan divide y vencerás, índices, [ 1 ] MapReduce [ 3 ] y computación de propósito general en tarjetas gráficas . [ 4 ] Las consultas skyline en flujos de datos (es decir, consultas skyline continuas) se han estudiado en el contexto del procesamiento de consultas paralelas en multinúcleos, debido a su amplia difusión en problemas de toma de decisiones en tiempo real y análisis de flujos de datos. [ 5 ]
Exasol cuenta con una implementación nativa. [ 6 ]
Véase también
Referencias
- 1 2 3 4 Borzsonyi, Stephan; Kossmann, Donald; Stocker, Konrad (2001). "El operador Skyline". Actas de la 17.ª Conferencia Internacional sobre Ingeniería de Datos . págs. 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 for In-Memory Database Systems". New Trends in Databases and Information Systems - ADBIS 2020 Short Papers, Lyon, Francia, 25-27 de agosto de 2020, Actas . Communications in Computer and Information Science. Vol. 1259. pp. 3–12 . doi : 10.1007/978-3-030-54623-6_1 . ISBN 978-3-030-54622-9.
{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ^ Mullesgaard, Kasper; Pedersen, Jens Laurits; Lu, Hua; Zhou, Yongluan (2014). "Cálculo eficiente del horizonte en MapReduce" (PDF) . Proc. XVII Conferencia Internacional sobre Ampliación de Tecnología de Bases de Datos (EDBT) : 37– 48.
- ↑ Bøgh, Kenneth S; Assent, Ira; Magnani, Matteo (2013). "Cálculo eficiente de horizontes basado en GPU". Actas del Noveno Taller Internacional sobre Gestión de Datos en Nuevo Hardware . págs. 5:1–5:6. doi : 10.1145/2485278.2485283 . ISBN 9781450321969. S2CID 13195757 .
- ↑ De Matteis, Tiziano; Di Girolamo, Salvatore; Mencagli, Gabriele (25 de agosto de 2016). "Consultas continuas de horizonte sobre arquitecturas multinúcleo" . Concurrencia y Computación: Práctica y Experiencia . 28 (12): 3503– 3522. doi : 10.1002/cpe.3866 . S2CID 6562372 .
- ↑ "Skyline | Documentación de la base de datos de Exasol" . docs.exasol.com . Consultado el 16 de diciembre de 2025 .
- Gestión de datos
- Lenguajes de consulta
- Sistemas de gestión de bases de datos relacionales
- SQL
- Software básico para bases de datos