martes, 29 de mayo de 2018

SQL vs Java 8 Stream

Para entender los streams de Java 8 lo mejor es compararlos con sus equivalentes de SQL.

SQL Equivalente interfaz stream
from stream()
select map()
where filter() (antes de un collecting)
order by sorted()
distinct distinct()
having filter() (después de un collecting)
join flatMap()
union concat().distinct()
offset skip()
limit limit()
group by collect(groupingBy())
count count()

En el siguiente enlace podrás encontrar más ejemplos.

Fuente: https://windoctor7.github.io/API-Stream-Java8.html

lunes, 28 de mayo de 2018

Indices en Postgresql

Hay una serie de índices aparte de los convencionales, que son poco conocidos, pero no por ello dejan de ser muy útiles.

GIN - índices optimizados para la búsqueda de subelementos, dentro de una columna, por ejemplo columnas de tipo Array, columnas que almacenen JSON o campos de texto para hacer búsquedas FTS (Full Text Search).

GIST - índices para búsquedas de datos geolocalizados.

BRIN - índices que ahorra espacio de almacenamiento para aquellos datos que se encuentran ordenados de forma natural. Por ejemplo las entradas de un fichero log, siempre se generan de forma secuencial en base al campo de fecha de la entrada.

HASH - indice optimizado en velocidad para la búsqueda de elementos por igualdad. Por ejemplo la dirección de email de usuarios. Usando este índice tendríamos máxima velocidad de acceso para buscar a un usuario por su email.