Características y casos de uso de PostgreSQL
PostgreSQL es un sistema de gestión de base de datos relacional de objetos (DBMS) de código abierto. Es un sistema avanzado de gestión y análisis de bases de datos que se utiliza principalmente para plataformas de comercio electrónico, transacciones de pago y diversas soluciones de almacenamiento de datos. Ha existido durante más de 30 años y se actualiza regularmente cada año, admite varias funciones SQL como activadores, tipos y funciones definidos por el usuario, subconsultas, etc.
PostgreSQL es una de las bases de datos de código abierto más avanzadas del mundo. Es adecuado para varios casos de uso de producción y desarrollo. Ofrece numerosas ventajas, como particiones mejoradas y rendimiento de consultas (particularmente en grandes conjuntos de datos), mejoras de árbol B para una utilización óptima del espacio, estadísticas de valor más común (MCV) de varias columnas, expresiones de tabla comunes con consulta en línea y control de suma de comprobación.
Algunas palabras sobre Ubuntu 20.04 en DigitalOcean
Ubuntu es un popular sistema operativo de escritorio de código abierto. Ubuntu 20.04 incluye numerosas características de vanguardia, como una herramienta para administrar instantáneas de ZFS, una mejora importante del kernel y mejoras de seguridad. La plataforma en la nube de DigitalOcean proporciona una infraestructura robusta y disponibilidad global para desarrollar, administrar y escalar aplicaciones en la nube. Con sus productos de cómputo, almacenamiento, bases de datos y redes, los desarrolladores pueden crear aplicaciones web y móviles, servicios de transmisión, juegos, soluciones SaaS y más. Al ofrecer funciones como redes privadas compartidas, herramientas DevOps con un solo clic y discos duros SSD, DigitalOcean es una opción flexible, segura y simple para soluciones de misión crítica.
Este tutorial proporciona instrucciones detalladas sobre cómo instalar PostgreSQL en DigitalOcean Ubuntu 20.04. Sin más preámbulos, ¡comencemos!
|
Requisitos previos para instalar PostgreSQL
Antes de sumergirnos en la instalación real de PostgreSQL 12 en DigitalOcean Ubuntu 20.04, debe asegurarse de que su sistema cumpla con los siguientes requisitos previos.
- El servidor debe tener al menos un firewall UFW básico para garantizar que solo se permitan conexiones a ciertos servicios.
- El sistema debe actualizarse para una nueva instancia de servidor y reiniciarse. Para hacer eso, use los siguientes comandos:
sudo apt update && sudo apt upgrade –y
sudo reboot
Instalación de PostgreSQL en Ubuntu 20.04 DigitalOcean
Puede instalar PostgreSQL 12 usando los repositorios oficiales/predeterminados de Ubuntu 20.04 usando el sistema de administrador de paquetes apt. Antes de hacer esto, ya debería haber actualizado el índice de paquetes local de su servidor (consulte los requisitos previos más arriba).
El repositorio contiene diferentes paquetes (incluidos complementos de terceros) como:
- postgresql-cliente
- postgresql
- libpq-dev
- postgresql-servidor-dev
- paquetes pgadmin
Luego instale el paquete completo de PostgreSQL 12 junto con el módulo postgresql-contrib que proporciona utilidades y funcionalidades adicionales. Esto se puede instalar ejecutando el siguiente comando:
sudo apt install postgresql postgresql-contrib –y
Luego inicie el servicio PostgreSQL al reiniciar el sistema ejecutando el siguiente comando:
sudo systemctl start postgresql
Para iniciar automáticamente el servicio PostgreSQL al iniciar el sistema, ejecute:
sudo systemctl enable postgresql
Verifique que el servicio de PostgreSQL se esté ejecutando como se esperaba ejecutando systemctl status postgresql:
sudo systemctl status postgresql
Esto debería devolver el estado del servicio de PostgreSQL y mostrarse activo, similar a la captura de pantalla a continuación.
Personalizar la inicialización de PostgreSQL
Después de la instalación, se puede crear un clúster de base de datos con la ayuda del comando initdb. El comando initdb debe ejecutarse desde el usuario de la base de datos y no desde el usuario raíz. El usuario raíz puede crear un directorio vacío que el usuario de postgres puede cambiar (comando de cambio de propietario). Este directorio contendrá los datos a modo de plantilla, que se copiarán a todas las bases de datos por defecto. Desde el usuario de postgres, se puede invocar el siguiente comando con la opción y el nombre de directorio adecuados.
initdb [option...] [ --pgdata | -D ] directory
El comando initdb se puede ejecutar como un usuario autenticado con diferentes indicadores para crear una plantilla de base de datos en un directorio determinado.
A continuación se proporciona una lista de banderas específicas como se ve en la captura de pantalla anterior:
--encoding UTF8
(puede ser cualquiera según la configuración regional).- El indicador de codificación establece la codificación de la plantilla de la base de datos. Todas las bases de datos creadas con esa plantilla también usarán el mismo método de codificación a menos que se especifique por separado. Hay muchos métodos de codificación disponibles para diferentes idiomas.
--pgdata test
(esta bandera crea un directorio llamado "prueba" para almacenar los datos de la base de datos).- Especifica el directorio donde el clúster de la base de datos guarda sus datos.
-A peer
(Esto especifica el método de autenticación utilizado en el archivo pg_hba.conf).- Especifica el método de autenticación predeterminado para los usuarios locales que se usa en pg_hba.conf (líneas de host y locales). initdb completará previamente las entradas de pg_hba.conf usando el método de autenticación especificado para las conexiones de replicación y de no replicación.
-k
(usa data-checksum para verificar errores de E/S)- Especifica la suma de verificación de datos en todas las páginas de datos para detectar la corrupción del sistema de E/S. Sin embargo, esto ralentiza la velocidad de procesamiento de la base de datos).
Proteger su base de datos PostgreSQL
Durante la instalación, se crea automáticamente un nuevo usuario llamado postgres de forma predeterminada. Este usuario tiene todos los privilegios del sistema, por lo que es importante proteger la cuenta de usuario con una contraseña segura.
sudo passwd postgres
Ahora cambie a la cuenta de usuario de postgres. El usuario debe tener privilegios sudo.
sudo su – postgres
La versión de PostgreSQL se puede confirmar ejecutando
psql -c "SELECT version();"
Para cambiar la contraseña de postgres
comando de uso del usuario:
psql -c "ALTER USER postgres WITH PASSWORD 'MyNewPassword'";
Nota:esta contraseña solo se aplica cuando postgres
el usuario se conecta a PostgreSQL a través de la red.
Para acceder a la base de datos de Postgres, puede iniciar sesión en la base de datos de PostgreSQL con:
psql postgres
De forma predeterminada, PostgreSQL no requiere la autenticación de contraseña de los usuarios del sistema local para acceder a la base de datos. Esto se llama "autenticación de pares". Sin embargo, la autenticación de contraseña se puede habilitar desde dentro de pg_hba.conf
archivo.
Para editar este pg_hba.conf
archivo, use \q
comando para salir del shell de postgres y entrar en el shell de Linux. Desde dentro del shell de Linux, edite el pg_hba.conf
expediente. Asegúrese de realizar una copia de seguridad antes de editar el archivo.
sudo cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.bak
Luego edite el archivo usando el editor nano,
nano /etc/postgresql/12/main/pg_hba.conf
Busque la línea local en "Solo conexiones de socket de dominio Unix" y cambie el METHOD
atributo de peer
a md5
.
Vuelva a cargar el servicio PostgreSQL para aplicar la nueva configuración.
sudo systemctl reload postgresql
Tenga en cuenta aquí que hay dos usuarios con el nombre postgres; uno es el usuario de Linux para conectarse y acceder a la base de datos, y el otro es el usuario de la base de datos que se utiliza para realizar funciones administrativas dentro de la base de datos.
Configurando su base de datos PostgreSQL
PostgreSQL se puede configurar manualmente para escuchar direcciones y puertos cambiando los parámetros requeridos en el archivo postgresql.conf.
De manera predeterminada, se usa el puerto 5432 de PostgreSQL y escucha en localhost. Esto se puede cambiar editando el archivo de configuración.
sudo nano /etc/postgresql/12/main/postgresql.conf
El servicio se reiniciará después de realizar cualquier cambio.
sudo systemctl restart postgresql
Creación de un nuevo rol en PostgreSQL 12
La autenticación y la autorización en PostgreSQL 12 se realizan a través del concepto de "rol". Aquí, rol es un término flexible que se refiere tanto a usuarios como a grupos.
Inicie sesión en el usuario de postgres mediante el siguiente comando:
sudo su postgres
Se pueden crear nuevos roles de forma interactiva desde la línea de comandos con el comando createrole –interactive. Aquí, el uso de la bandera interactiva creará un aviso para el nombre del nuevo rol y si se le deben asignar permisos de superusuario a este rol.
Se puede crear un nuevo usuario con un nuevo rol fuera del shell postgresql del usuario como:
createuser –interactive
El resultado del nuevo comando de usuario debería verse así.
Crear y eliminar una base de datos en su servidor PostgreSQL
En PostgreSQL 12, cuando se crea un nuevo rol, debe existir una nueva base de datos con el mismo nombre ya que el rol intenta conectarse con la base de datos de forma predeterminada. Entonces, como en la sección anterior, donde se crea el usuario liam, se puede crear una base de datos con ese nombre usando el siguiente comando:
createdb liam
Dentro de PostgreSQL 12, hay varias rutas para crear bases de datos según sea necesario:
- Cuando inicie sesión desde la cuenta de postgres:
postgres@server:~$ createdb liam
- Utilice
sudo
,sudo –u postgres created liam
Para eliminar la base de datos, podemos usar
dropdb liam
Abrir un indicador de Postgres con el nuevo rol
Se puede crear un usuario de Linux con el mismo nombre que la base de datos y el rol de Postgres para iniciar sesión con autenticación basada en identidad.
Se puede crear un usuario de Linux (si aún no existe uno) desde la línea de comando escribiendo:
sudo adduser noah
Una vez que se crea el usuario, se puede iniciar sesión con el siguiente comando:
sudo -u noah psql
Se puede acceder a la base de datos actual y a la información del usuario mediante;
\conninfo
Administración de PostgreSQL
Creación y eliminación de tablas
El comando SQL CREATE TABLE
se puede utilizar para crear cualquier tabla dentro de una base de datos. Se debe especificar una lista de columnas y un tipo de datos para cada columna en el comando.
CREATE TABLE customers (customer_id int, first_name varchar(80), last_name varchar(80));
Este comando creará una tabla llamada "clientes". La primera columna contendrá el ID de cliente del tipo entero. La segunda y tercera columnas son de tipo carácter y contendrán los nombres y apellidos de los clientes con una extensión máxima de 80 caracteres.
Esta nueva tabla se puede ver escribiendo \d
.
La tabla se puede eliminar escribiendo:
DROP TABLE customers;
Inserción, selección y eliminación de datos en una tabla
Los datos se agregan a las tablas de PostgreSQL en forma de filas. Cada fila representa un conjunto separado de datos. Los datos se pueden insertar en la fila usando el comando INSERT INTO. El nombre del comando va seguido del "nombre de la tabla" (en el siguiente ejemplo, clientes), la palabra clave VALORES, una lista de valores separados por una coma.
INSERT INTO customers VALUES (1, 'Owen', 'Buyer');
INSERT INTO customers VALUES (2, 'Luke', 'Seller');
El contenido de la tabla se puede ver usando el comando SELECCIONAR.
SELECT * FROM customers;
Se puede eliminar una fila usando DELETE
dominio. El WHERE
palabra clave se utiliza para seleccionar las filas de forma condicional.
DELETE FROM customers WHERE last_name = 'Seller';
Para eliminar todas las filas, escriba:
SELECT * FROM customers;
Adición y eliminación de columnas de una tabla
PostgreSQL 12 brinda la capacidad de agregar o eliminar columnas de las tablas existentes con facilidad.
La ALTER TABLE
El comando se usa junto con ADD
palabra clave para agregar una columna a una tabla existente. Este campo está vacío para las filas existentes en la tabla.
ALTER TABLE customers ADD branch_id int;
El mismo comando se usa con DROP
palabra clave para eliminar la columna especificada de la tabla.
ALTER TABLE customers DROP first_name;
Actualización de datos en una tabla
Aparte de añadir y borrar registros dentro de una tabla, también podemos modificarlos. Esto se puede hacer usando el UPDATE
dominio. Necesitamos especificar las columnas que deben editarse con los nuevos valores.
UPDATE customers SET last_name= 'Buyer' WHERE customer_id = '1';
Consideraciones para el entorno de producción
PostgreSQL 12 se puede utilizar de forma segura en un entorno de producción. Esta base de datos es tan estable que uno no debería tener problemas para implementarla a gran escala. Para obtener más información, consulte nuestro artículo anterior aquí.
Conclusión
Este tutorial le mostró cómo configurar PostgreSQL 12 en un servidor Ubuntu 20.04 que se ejecuta en DigitalOcean. PostgreSQL 12 es una aplicación compleja con muchas funciones nuevas y avanzadas, como la gestión mejorada del espacio de los índices B-tree estándar y la compatibilidad con la reconstrucción simultánea de índices y la creación de índices de cobertura. La versión 12 también admite consultas WITH en línea y intercalaciones proporcionadas por ICU, mejora la partición y proporciona una interfaz de almacenamiento de tablas conectable para crear y usar diferentes métodos para el almacenamiento de tablas.
Ahora que conoce los aspectos básicos de la configuración y el uso de un servidor PostgreSQL, ¿por qué no probar una alternativa administrada? Con un servicio administrado como ScaleGrid, puede completar todo el proceso de configuración, instalación y configuración con solo hacer clic en un botón. ¡Comience su prueba gratuita de 30 días hoy y compruébelo usted mismo! No se requiere tarjeta de crédito y puede configurar su primera base de datos en cuestión de minutos.
Hemos cubierto los conceptos básicos de instalación aquí y también proporcionamos algunas instrucciones para la administración general de la base de datos. Esperamos que esta guía le haya resultado útil.