No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de PostgreSQL

Curso de PostgreSQL

Oswaldo Rodríguez González

Oswaldo Rodríguez González

Otras Extensiones para Postgres

26/32
Recursos

Aportes 65

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Lastima no poder darle LIKE al video. Por que se lo merece!

Puedes listar todas las extensiones disponibles en postgres y visualizar una pequeña descripción de su funcionamiento con este comando.

SELECT * FROM pg_available_extensions;

Hola a todos, en el siguiente ejemplo usé la extensión de encriptación y use dos parámetros para el hash md5, en los cuales uso las funciones salt (la cual aplica valores aleatorios) y **md5 básico ** para evidenciar las diferencias en los casos de usuarios con las mismas contraseñas:

En mi caso usaría con frecuencia la extensión PostGIS que habilita **análisis espacial **y manejo de geometrías, todo lo necesario para un Sistema de información geográfica.

Excelente

CREATE EXTENSION fuzzystrmatch;
SELECT levenshtein('oswaldo', 'osvaldo')
SELECT difference('oswaldo', 'osvaldo');
SELECT difference('beard', 'bird');

Información resumida de esta clase
#EstudiantesDePlatzi

  • Existen algunas extensiones instaladas más no activas dentro de PgAdmin que nos ayudan a ejecutar ciertos comandos

  • Con levelnshtein encontramos el número de diferencias que tienen dos palabras en su escritura.

  • Es importante crear la extensión para usar las funciones normalmente

  • Con difference encontramos que tan similares suenan dos palabras

CREATE EXTENSION pgcrypto;

SELECT crypt('123456789', 'md5');
-- Esta función nos permite encriptar un password
-- segun la forma de encriptación

create extension earthdistance cascade;

select
(
point(-81.3927381, 30.2918842)<@>point(-87.6473133, 41.8853881)
) as distance;

el resultado

873.203527399339

me hubiera servido para cuando trabajé en un sistema de geolocalización.

Acá una muy buena lista de algunas de las extenciones más útiles

Estaba revisando Soundex, que está dentro de fuzzystrmach, y ya me ayuda entender como funcionan aplicaciones como Duolingo.

Hace unos años hubiera sido interesante haber conocido esta extensión

--CREATE EXTENSION unaccent;
SELECT unaccent('Última acción en la academia española')

--Retorna sin acentos
Ultima accion en la academia espanola

Me encontré este caso con Unicode y quise probar

SELECT CONCAT(E'\u4f60', E'\u597d', E'\uff0c', E'\u4e16', E'\u754c')

SELECT unaccent(CONCAT(E'\u4f60', E'\u597d', E'\uff0c', E'\u4e16', E'\u754c'))

-- A este nivel no llega, por buena razón creo
<code>

**QUE CHIMBA DE CLASEEEE, AMO PLATZI **

no creí que fuera real pero hay una extensión que te deja hacer machine learning en postgres se llama mindsdb
https://mindsdb.com/postgresql-machine-learning

jjajajaja yo pensé que iba a sonar algo ajajajaja

Extensiones populares para PostgreSQL:

PostGIS:

  • Descripción: Agrega soporte para datos geoespaciales a PostgreSQL, permitiendo el almacenamiento y la consulta eficientes de información geográfica.
    Sitio web: PostGIS

pgcrypto:

  • Descripción: Proporciona funciones para realizar operaciones criptográficas directamente dentro de PostgreSQL, como encriptación y generación de hash.
    Documentación: pgcrypto

hstore:

  • Descripción: Permite el almacenamiento de pares clave-valor en una sola columna, proporcionando una forma flexible de agregar atributos no estructurados a las filas.
    Documentación: hstore

uuid-ossp:

  • Descripción: Agrega soporte para el tipo de dato UUID (identificador único universal) y funciones relacionadas.
    Documentación: uuid-ossp

pg_stat_statements:

  • Descripción: Proporciona información estadística sobre el rendimiento de las consultas, lo que facilita la identificación de consultas ineficientes.
    Documentación: pg_stat_statements

pg_trgm:

  • Descripción: Ofrece funciones para realizar búsqueda de texto basada en similitud, utilizando trigramas para comparar cadenas de caracteres.
    Documentación: pg_trgm

pg_partman:

  • Descripción: Facilita la partición de tablas grandes en PostgreSQL, lo que puede mejorar el rendimiento y facilitar la administración de datos.
    Repositorio: pg_partman en GitHub

TimescaleDB:

  • Descripción: Transforma PostgreSQL en una base de datos de series temporales, adecuada para datos de series temporales a gran escala.
    Sitio web: TimescaleDB

pglogical:

  • Descripción: Permite la replicación lógica entre bases de datos PostgreSQL, facilitando la creación de arquitecturas de alta disponibilidad.
    Repositorio: pglogical en GitHub

Citext:

  • Descripción: Proporciona un tipo de datos de texto insensible a mayúsculas y minúsculas, útil para comparaciones de texto que no distinguen entre mayúsculas y minúsculas.
    Documentación: Citext

Encontre la funcion earth() que devuelve el radio supuesto de la Tierra. Util en la construcción de aplicaciones de geolocalizacion, distancias y de mas.

La función difference en PostgreSQL calcula la diferencia entre dos cadenas de texto basándose en la cantidad de caracteres coincidentes al inicio de ambas cadenas. Devuelve un entero que indica la longitud de la subcadena común más larga al principio de las dos cadenas proporcionadas. La función difference compara las dos cadenas de texto y determina cuántos caracteres coinciden al principio de ambas cadenas. Devuelve la longitud de la subcadena común más larga al inicio de ambas cadenas. Si las cadenas no tienen caracteres coincidentes al principio, la función devuelve 0. Este ejemplo devolverá el valor 2, ya que las dos cadenas comparten los primeros dos caracteres ('os') antes de diferir. Por lo tanto, la longitud de la subcadena común más larga al principio es 2. SELECT difference('osvaldo','oswaldo');

No tenia ni idea que en SQL habia este tipo de funcionalidades.

hola creo que uno bueno para implementar es : ¨passwordcheck¨

Excelente característica, no sabia de estas capacidades de postgres

PostgreSQL es conocido por su flexibilidad y robustez, en gran parte gracias a su soporte para extensiones. Las extensiones amplían las capacidades de PostgreSQL, permitiendo realizar operaciones avanzadas, optimización de consultas, gestión de datos, seguridad y muchas otras tareas. Aquí te presento algunas **extensiones populares** que se utilizan comúnmente en PostgreSQL: ### 1. **PostGIS** * **Descripción**: PostGIS es una extensión para PostgreSQL que añade soporte para trabajar con datos espaciales. Permite almacenar y consultar datos geográficos como puntos, líneas, polígonos, entre otros. * **Usos comunes**: Aplicaciones SIG (Sistemas de Información Geográfica), análisis espacial, mapas. * **Instalación**:CREATE EXTENSION postgis; ### 2. **pgAdmin** * **Descripción**: pgAdmin es una extensión que añade una interfaz gráfica para administrar bases de datos PostgreSQL. Muy útil para consultas, ejecución de scripts y gestión visual de la base de datos. * **Instalación**:CREATE EXTENSION pgadmin4; ### 3. **pgAudit** * **Descripción**: pgAudit permite realizar auditoría detallada sobre las actividades y modificaciones realizadas en la base de datos, como quién ejecutó una operación y qué operaciones se realizaron. * **Usos comunes**: Cumplimiento normativo y seguimiento de actividad. * **Instalación**:CREATE EXTENSION pgaudit; ### 4. **pgBouncer** * **Descripción**: pgBouncer es un proxy para PostgreSQL que ayuda a optimizar y escalar conexiones a la base de datos, reduciendo el uso de recursos y mejorando el rendimiento de las aplicaciones. * **Usos comunes**: Optimización del uso de conexiones en aplicaciones con alto tráfico. * **Instalación**:CREATE EXTENSION pgbouncer; ### 5. **TimescaleDB** * **Descripción**: Extensión que añade soporte para bases de datos temporales o series temporales. Está optimizada para manejar grandes volúmenes de datos de tiempo y realizar consultas específicas de series temporales. * **Usos comunes**: Análisis de IoT, análisis de tiempo, métricas de aplicaciones en tiempo real. * **Instalación**:CREATE EXTENSION timescaledb; ### 6. **pgCrypto** * **Descripción**: Extensión que proporciona funciones criptográficas avanzadas dentro de PostgreSQL. Permite realizar operaciones seguras como encriptación, generación de claves, firmas digitales, etc. * **Usos comunes**: Seguridad, protección de datos sensibles, autenticación. * **Instalación**:CREATE EXTENSION pgcrypto; ### 7. **uuid-ossp** * **Descripción**: Genera identificadores únicos universales (UUID). Útil para crear claves primarias únicas de manera eficiente. * **Instalación**:CREATE EXTENSION uuid-ossp; ### 8. **citus** * **Descripción**: Extensión para sharding, que permite dividir bases de datos grandes en varias particiones distribuidas (horizontalmente) sobre diferentes nodos, mejorando el rendimiento y escalabilidad. * **Usos comunes**: Bases de datos grandes y distribución de carga. * **Instalación**:CREATE EXTENSION citus; ### 9. **pg\_stat\_statements** * **Descripción**: Extensión para realizar el monitoreo detallado de consultas SQL. Permite analizar qué consultas se ejecutan con más frecuencia y qué recursos consumen. * **Usos comunes**: Optimización de consultas, monitoreo de rendimiento. * **Instalación**:CREATE EXTENSION pg\_stat\_statements; ### 10. **hstore** * **Descripción**: Proporciona soporte para almacenar pares clave-valor dentro de una misma fila. Muy útil para datos estructurados. * **Usos comunes**: Almacenamiento de configuraciones, metadatos, datos en formato clave-valor. * **Instalación**:CREATE EXTENSION hstore; ### 11. **PL/pgSQL** * **Descripción**: Un lenguaje procedural dentro de PostgreSQL que permite la escritura de funciones y procedimientos almacenados. * **Usos comunes**: Creación de lógica comercial dentro de la base de datos, como validaciones y cálculos. * **Instalación**: Ya está instalada por defecto. ### 12. **intarray** * **Descripción**: Proporciona soporte para trabajar con arreglos de enteros dentro de PostgreSQL. * **Usos comunes**: Manipulación de conjuntos de datos numéricos. * **Instalación**:CREATE EXTENSION intarray; ### 13. **uuid-ossp** * **Descripción**: Permite la generación de UUID (identificadores únicos universales). * **Usos comunes**: Creación de identificadores únicos para registros. * **Instalación**:CREATE EXTENSION uuid-ossp; ### 14. **plpgsql\_check** * **Descripción**: Proporciona una validación adicional para funciones PL/pgSQL, como chequeo de posibles errores en las funciones almacenadas. * **Instalación**:CREATE EXTENSION plpgsql\_check; ### ¿Cómo instalar una extensión? Para instalar una extensión en PostgreSQL, puedes ejecutar el siguiente comando como usuario con permisos suficientes: CREATE EXTENSION nombre\_extensión; * **Nota**: Algunas extensiones como TimescaleDB o Citus necesitan configuraciones adicionales o requerimientos específicos para su correcta utilización.
interesante
```js CREATE EXTENSION fuzzystrmatch; --Función Levenshtein: SELECT levenshtein ('hola', 'hola'); -- regresa un valor 0 SELECT levenshtein ('hola', 'ola'); -- regresa un valor 1 SELECT levenshtein ('hola', 'olam'); -- regresa un valor 2 SELECT levenshtein ('hola', 'aloh'); -- regresa un valor 4 --Función Soundex SELECT difference ('cat', 'moon'); -- regresa un valor 2 (sonido medio similar) SELECT difference ('beard', 'bird'); -- regresa un valor 4 (sonido muy similar) SELECT difference ('one', 'doctor'); -- regresa un valor 0 (sonido nada igual) ```
cool!

Algo a tener en cuenta es que algunas extensiones pueden agregar bastantes funciones e incluso tablas a la base de datos. Lo cual en algunos casos puede aumentar artificialmente el tamaño de la misma.

Por ende, aunque pueda parecer una buena idea importar todas las extensiones que creas que se puedan usar al inicio del proyecto. Lo mejor es hacerlo a medida que estas se vuelven necesarias para evitar que extensiones sin usar estén haciendo la base de datos más grande de lo que debería.

Excelente clase, anima a seguir profundizando en este motor de base de datos!

Wow, simplemente Perfecto!

beard:

  • UK:*/ˈbɪərd/
  • US:/bɪrd/

 
bird:

  • UK:/bɜːd/
  • US:/bɝd/

El poder de una m:

una clase muy interesante

La extensión que me pareció interesante es "The pg_stat_statements". Te da en una tabla todos los statements (SELECT, UPDATE, etc) ejecutados en un servidor. Puede ser útil para alguien que sea el administrador líder de los servidores de una empresa (pienso yo). Aquí un screenshot de algunos stats:

<SELECT * FROM vip
  JOIN
  dblink ('dbname=transporte
  port=5432
  host=127.0.0.1
  user=usuario_consulta
  password=admin',
  'SELECT id, nombre FROM pasajeros')
  AS datos_remotos (id integer, nombre VARCHAR)
  USING (id);> 
/*Convierte un nombre (preferiblemente en ingles) en codigo
para comparar sus sonidos.
El siguiente select convierte con la funcion "soundex() un nombre a codigo y luego compara con la fucion ""difference", que tan similares son */

SELECT soundex('Pablo'), soundex('Paul'), difference('Pablo', 'Paul');

La extensión

uuid-ossp

Es usada para tener identificador universales únicos.
UUID

SELECT levenshtein('oswaldo','Osvaldo');
-- Funcion que retorna el número de letras
-- que hay que cambiar para que las palabras
-- sean iguales.

SELECT difference('oswaldo','osvaldo');
-- Esta función nos retorna de 0 a  4 que tan
-- iguales suenan las dos palabras.```

😉

SELECT levenshtein('beer', 'bear');
SELECT difference('son', sun');

en el caso de que no les agarre link de la pagina es porque hay versiones posteriores solo hay que hacer cambiar el numero en el link: https://www.postgresql.org/docs/11/contrib.html el cambio seria https://www.postgresql.org/docs/16/contrib.html

Interesante, revise otras extensiones muy interesantes:
https://www.timescale.com/blog/top-5-postgresql-extensions/

Bastante interesante los diferentes usos que se le pueden dar a postgres, y que n solo sirva para bases de datos.

Excelente clase.

beard y bird se pronuncian parecido pero NO IGUALES, la primera lleva una i muy parecida a la del español y la 2da tiene una vocal que es como una combinacion entre una “i” y una “e”

Una clase MUY interesante y util !!

Me pareció interesante la extensión earthdistance.
https://www.postgresql.org/docs/11/earthdistance.html
En realidad son 2 extensiones. En el link explica la forma de instalarla.
Se pueden realizar diferentes cálculos sobre la superficie terrestre (distancias, coordenadas, distancia secante, etc) asumiendo que la tierra es perfectamente esférica.
Por ejemplo: de esta manera podemos tomar estos cálculos como referencia para compararlos con los realizados en Postgis usando algún geom específico. De esta manera podemos tener una idea de cómo los distintos supuestos de la deformación de la tierra (geom) afectan estos cálculos.

Wow esta extensión me gusto mucho.

La mas interesante para mi caso son dblink y postgis,

Por si trabajan con geología: Earth distance

PostGis, no lo conocía. Pero ahora se en que puedo usarlo justo.

CREATE EXTENSION fuzzystrmatch;

Select levenshtein(‘Oswaldo’, ‘osvaldo’);
Select difference(‘Oswaldo’, ‘osvaldo’);
Select difference(‘Beard’, ‘Bird’);

la que me parece mas interesante el la le SELECT levenshtein, ya que la comparación de caracteres si se aplica muy bien a una base de datos y por supuesto dblink es indispensable

CREATE EXTENSION name_extension; activamos la extensión;

Alguien me podria ayudar porque si puedo instalar la extencion pero no la puedo ejecutar, aclaro que si la pude instalar.

Ya casi te tengo Data Tree Gardener 😂

Uffff me sorprendo todos los días con pequeñas-grandes cosas. Gracias Platzi, gracias Porfe.

Extensiones
-- Creamos la extenxion
CREATE EXTENSION fuzzystrmatch;
-- Funcion que retorna el numero de letras que hay que cambiar para las palabras iguales. 1: True, 0: False.
SELECT levenshtein('oswaldo', 'osvaldo');
-- Funcion para saber que tan iguales suenan, manda valores de 0 a 4, 0: Nada parecido, 4: Muy parecido.
SELECT difference('oswaldo', 'osvaldo');
SELECT difference('beard', 'bird');

Funciones de extensiones para instalar.

Activar la extensión fuzzystrmach

Función levenshtein

Función difference

Appendix F. Additional Supplied Modules
Podemos ver la información de extensiones

Me encantó esta clase mostranos otras funciones que nos pueden ayudar

--Creando la extensión
CREATE EXTENSION fuzzystrmatch;

--Grado de Diferencia de palabras
SELECT levenshtein ('Mario','Maria');

--Grado de pronunciación de palabras
SELECT difference ('date','bite');
SELECT difference ('java','python');```