No tienes acceso a esta clase

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

Aprende Inglés, Desarrollo Web, AI, Ciberseguridad y mucho más.

Antes: $249

Currency
$209
Comienza ahora

Termina en:

0 Días
17 Hrs
58 Min
46 Seg
Curso de PostgreSQL

Curso de PostgreSQL

Oswaldo Rodríguez González

Oswaldo Rodríguez González

Otras Extensiones para Postgres

26/32
Recursos

Aportes 63

Preguntas 6

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 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.

CREATE EXTENSION pgcrypto;

SELECT crypt('123456789', 'md5');
-- Esta función nos permite encriptar un password
-- segun la forma de encriptació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.

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

```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) ```
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');
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');```