Searching...
jueves, 8 de septiembre de 2016

Operaciones con los Datos

Un aspecto muy importante de la gestión de datos consiste en documentar, definir, implementar y probar el conjunto de operaciones necesarias para una aplicación específica. Como veremos más adelante en este curso, algunas operaciones son independientes del tipo de datos y otras requieren que conozcamos la naturaleza de los datos, ya que las operaciones hacen uso de un modelo de datos en particular. Por este motivo se dice que son estructuradas.


En general, las operaciones se dividen en dos grandes grupos. Las que operan sobre un sólo objeto y las que operan sobre colecciones de objetos de datos. Por ejemplo, en el primer caso, una operación que recorta una imagen, es decir, que extrae una zona de un área de pixeles, es una operación sobre un único objeto porque consideramos la imagen como un objeto único.
Operación que recorta una imagen
Se puede pensar en muchas subclases de la segunda categoría en las que las operaciones se realizan sobre colecciones de datos. Voy a referirme brévemente a tres operaciones muy comunes que pueden realizarse de manera independiente de la naturaleza de los datos.

1 - Filtrar un subconjunto de una colección. El caso más evidente es la selección de un subconjunto de un conjunto de datos. En este ejemplo seleccionamos los círculos cuyo número es mayor que tres.

Operación de subconjunto
2 - Combinar dos colecciones para formar una colección más grande. En este ejemplo se mezclan dos elementos de datos con estructura de árbol por fusión del nodo con una propiedad común.
Operación de mezcla
3 - Calcular una función sobre una colección y devolver el valor de la función. En este ejemplo la función es un simple contador. En el mundo real, este tipo de función de agregación puede ser muy compleja.
Operación contador
Volveré a este tema cuando hable sobre las lecturas de mapas, pero en este curso hablaré sobre muchas operaciones diferentes sobre los datos. Todos los operadores deben ser eficientes. Esto significa que cada operador debe realizar su tarea lo más rápido posible, ocupando la mínima cantidad posible de memoria o de disco.

Obviamente, el tiempo invertido en realizar una operación dependerá del tamaño de la entrada y del tamaño de la salida. Por lo tanto, si existe la posibilidad de utilizar concurrencia, no debemos dudar en hacerlo, de manera que el operador pueda dividir sus datos y tener diferentes hilos que operen sobre las partes al mismo tiempo. Aquí presento un ejemplo simple del operador que vimos anteriormente. Este operador se denomina selección y hace referencia a la elección de un subconjunto basado en determinadas condiciones. Aquí estamos eligiendo un subconjunto de círculos cuyos números sean pares. Para optimizarlo podemos particionar los datos de entrada de manera aleatoria en dos grupos. Para cada grupo podemos ejecutar en paralelo el algoritmo del subconjunto y obtener los resultados parciales. Los resultados parciales de esta operación se pueden enviar directamente a la salida sin ninguna etapa de procesamiento adicional.
Operación de selección

0 comentarios:

Publicar un comentario

Gracias por participar en esta página.

 
Back to top!