1. ADMINISTRACIÓN DE BASE DE
DATOS RELACIONALES EN
POSTGRESQL
ESTUDIANTE: ALAN JUNIOR SILVA DURÁN
2. INTRODUCCIÓN
• La Administración de Base de Datos (ABD) es un punto de partida para conocer
a detalle los servicios ofrecidos por el sistema PostgreSQL, este es un sistema
de base de datos objeto-relacional que tiene las características de los sistemas
de base de datos propietarios tradicionales. PostgreSQL es libre y el código
fuente completo está disponible. Esta última característica es la más atractiva
para desarrollar aplicaciones empresariales para el mercado latinoamericano,
ya que evita el pago de costosas licencias. El software se ofrece bajo la licencia
PostgreSQL. Este estudio se ha diseñado para proporcionar los conceptos y la
experiencia necesarios para conocer detalladamente el sistema y conocer la
parte correspondiente a la administración.
•
3. PROBLEMA
• Conocimiento inconsistente e impreciso sobre la administración de Base de
Datos en PostgreSQL, motivos por los cuales se realiza, y los métodos que se
utilizan.
ALCANCE
• Mostrar pasos detallados por los cuales se puede realizar la Administración
de Base de Datos en PostgreSQL, usuarios, ejemplos de líneas de códigos
utilizadas.
4. OBJETIVO GENERAL
• Proveer conocimientos sobre administrar grupos y usuarios que acceden a una base
de datos, así como a otorgar y revocar privilegios para limitar sus actividades
usando las herramientas que ofrece el sistema de administración de base de datos
PostgreSQL.
OBJETIVOS ESPECÍFICOS
• Obtención y análisis de la información.
• Evaluación de la investigación.
• Preparación del documento mediante perfil propuesto.
5. DETALLE DE LA INVESTIGACIÓN
ANÁLISIS
• Administración de Base de Datos en PostgreSQL
• PostgreSQL es un sistema de gestión de bases de datos objeto-relacional,
distribuido bajo licencia BSD y con su código fuente disponible libremente. Es el
sistema de gestión de bases de datos de código abierto más potente del
mercado y en sus últimas versiones no tiene nada que envidiarle a otras bases
de datos comerciales. Utiliza un modelo cliente/servidor y usa multiprocesos
para garantizar la estabilidad del sistema. Un fallo en uno de los procesos no
afectará el resto y el sistema continuará funcionando.
6. • La última serie de producción es la 9.3. Sus características técnicas la
hacen una de las bases de datos más potentes y robustas del mercado. Su
desarrollo comenzo hace más de 16 años, y durante este
tiempo, estabilidad, potencia, robustez, facilidad de administración e
implementación de estándares han sido las características que más se han
tenido en cuenta durante su desarrollo. PostgreSQL funciona muy bien con
grandes cantidades de datos y una alta concurrencia de usuarios
accediendo a la vez a el sistema.
CARACTERÍSTICAS
7. • Funciones/procedimientos almacenados (stored procedures) en numerosos lenguajes
de programacion, entre otros PL/pgSQL (similar al PL/SQL de oracle), PL/Perl,
PL/Python y PL/Tcl
• Bloques anónimos de código de procedimientos (sentencias DO)
• Numerosos tipos de datos y posibilidad de definir nuevos tipos. Además de los tipos
estándares en cualquier base de datos, tenemos disponibles, entre otros, tipos
geométricos, de direcciones de red, de cadenas binarias, UUID, XML, matrices, etc
• Soporta el almacenamiento de objetos binarios grandes (gráficos, videos, sonido, ...)
• APIs para programar en C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, PHP, Lisp,
Scheme, Qt y muchos otros.
PROCESO / DESARROLLO
8. • Administración En PostgreSQL
• A pesar de que el administrador local es responsable por la gestión
general de la instalación de Postgre, algunas bases de datos instaladas
pueden ser administradas por otra persona, llamada el administrador de la
base de datos. La responsabilidad de la administración se delega en el
momento en que se crea la base de datos. A un usuario se le puede dar
privilegio para crear nuevas bases de datos y/o nuevos usuarios. Un
usuario que tenga los dos tipos de privilegio puede realizar la mayoría de
las labores administrativas en Postgres, pero normalmente no tendrá los
mismos privilegios de sistema operativo que el administrador local.
9. • Normalmente, al usuario postgres del sistema operativo no se le permitirá
el acceso desde un shell ni tendrá contraseña asignada, por lo que
deberemos convertirnos en el usuario root, para después convertirnos en
el usuario postgres y realizar tareas en su nombre:
• yo@localhost:~$ su
Password:
# su - postgres
postgres@localhost:~$
10. • Administración de Cuentas de Usuario
• En la mayor parte de los ambientes, hay un mapeo uno a uno entre la identidad
de los usuarios en el sistema operativo y la identidad de PostgreSQL. En efecto,
tu nombre de usuario en PostgreSQL es frecuentemente identificado con tu
nombre de usuario del sistema operativo.
•
• En algunos casos otras configuraciones son útiles. Por ejemplo, quizá quiera que
la mayoría de los usuarios se identifique por ellos mismos de manera única
mientras les proporciona una cuenta con privilegios de invitado. Quizá también
tiene una aplicación cliente que se identifica por sí misma pero rara vez
identifica al usuario (esto es útil para las aplicaciones que son ejecutadas por
algún usuario dentro de algún proveedor de autentificación).
11. • Asignación de Privilegios
• Cuando se crea un nuevo usuario, se puede controlar algunas de las
actividades que estos realizan en la base de datos, tal como el permiso de
crear nuevas bases de datos. También puede controlar la actividad de
crear nuevos usuarios. Dar al usuario el derecho de crear nuevas bases de
datos o crear nuevos usuarios es un riesgo. Cuando asigna privilegios a un
usuario con CREATEUSER, ese usuario llega a ser un súper usuario en el
clúster. Se debe decir que ésta es una forma ligeramente diferente: un
usuario que tiene privilegios por CREATEUSER puede sobrepasar todas las
restricciones en el clúster de base de datos. Se puede negar
explícitamente los privilegios con CREATEUSER especificando
NOCREATEUSER, NOCREATEUSER es asumido si no se específica otro valor.
12. • El usuario postgres puede crear nuevos usuarios utilizando el coman
do createuser:
•
postgres@localhost:~$ createuser yo
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
• Los siguientes comandos eliminan bases de datos y usuarios,
respectivamente:
•
postgres@localhost:~$ dropdb demo
postgres@localhost:~$ dropuser yo
13. • Privilegios
• Los grupos permiten asignar privilegios a varios usuarios y su gestión es
sencilla:
• create group migrupo;
• Para añadir o quitar usuarios de un grupo, debemos usar:
• alter group migrupo add user marc, ... ;
alter group migrupo drop user marc, ... ;
14. • Administración de Grupos
• Se pueden definir grupos de usuarios para hacer la administración mucho
más fácil. Cada grupo puede incluir usuarios. Cada usuario puede llegar a
pertenecer a uno o más grupos. Cuando se otorga o revocan privilegios
para un objeto, se puede identificar un usuario específico o un grupo de
usuarios. Cada usuario es automáticamente miembro de un grupo PUBLIC.
PUBLIC es realmente un grupo virtual, no puede agregar o remover
miembros y no puede borrar este grupo, pero se permite asociar
privilegios con PUBLIC.
15. • Vistas
• Las vistas son pseudo-tablas, esto es, que no son tablas reales, sin
embargo aparecen como tablas ordinarias para seleccionar. Una vista
puede representar un subconjunto de una tabla real, seleccionando ciertas
columnas o ciertas filas de una tabla ordinaria. Incluso, una vista puede
representar a varias tablas unidas. Debido a que a las vistas se les asignan
permisos por separado, se les puede usar para restringir acceso a una
tabla. Las vistas son creadas utilizando el comando CREATE VIEW.
16. • Copias de Seguridad
• Hacer periódicamente copias de seguridad de la base de datos es una de las tareas
principales del administrador de cualquier base de datos. En PostgreSQL, estas copias
de seguridad se pueden hacer de dos maneras distintas:
• • Volcando a fichero las sentencias SQL necesarias para recrear las bases de datos.
• • Haciendo copia a nivel de fichero de la base de datos.
• pg_dump es un programa cliente de la base de datos (como psql), lo que significa que
podemos utilizarlo para hacer copias de bases de datos remotas, siempre que
tengamos privilegios para acceder a todas sus tablas. En la práctica, esto significa que
debemos ser el usuario administrador de la base de datos para hacerlo.
• Si nuestra base de datos usa los OID para referencias entre tablas, debemos indicárselo
a pg_dump para que los vuelque también (pg_dump -o) en lugar de volver a crearlos
cuando inserte los datos en el proceso de recuperación. Asimismo, si tenemos BLOB en
alguna de nuestras tablas, también debemos indicárselo con el parámetro
correspondiente (pg_dump -b) para que los incluya en el volcado.
17. • Mantenimiento A la Base de Datos.
• Hay una serie de actividades que el administrador de un sistema gestor de
bases de datos debe tener presentes constantemente, y que deberá
realizar periódicamente. En el caso de PostgreSQL, éstas se limitan a un
mantenimiento y limpieza de los identificadores internos y de las
estadísticas de planificación de las consultas, a una reindexación periódica
de las tablas, y al tratamiento de los ficheros de registro.
18. • Vacuum
• El proceso que realiza la limpieza de la base de datos en PostgreSQL se llama vacuum.
La necesidad de llevar a cabo procesos de vacuum periódicamente se justifica por los
siguientes motivos:
• • Recuperar el espacio de disco perdido en borrados y actualizaciones de datos.
• • Actualizar las estadísticas de datos utilizados por el planificador de consultas SQL.
• • Protegerse ante la pérdida de datos por reutilización de identificadores de
transacción.
•
• Reindexación
•
• La reindexación completa de la base de datos no es una tarea muy habitual, pero
puede mejorar sustancialmente la velocidad de las consultas complejas en tablas con
mucha actividad.
19. • Ficheros de Registro
•
• Es una buena práctica mantener archivos de registro de la actividad del servidor.
Por lo menos, de los errores que origina. Durante el desarrollo de aplicaciones
puede ser muy útil disponer también de un registro de las consultas efectuadas,
aunque en bases de datos de mucha actividad, disminuye el rendimiento del
gestor y no es de mucha utilidad. En cualquier caso, es conveniente disponer de
mecanismos de rotación de los ficheros de registro; es decir, que cada cierto
tiempo (12 horas, un día, una semana...), se haga una copia de estos ficheros y
se empiecen unos nuevos, lo que nos permitirá mantener un histórico de éstos
(tantos como ficheros podamos almacenar según el tamaño que tengan y
nuestras limitaciones de espacio en disco).
•
• PostgreSQL no proporciona directamente utilidades para realizar esta rotaci
ón, pero en la mayoría de sistemas Unix vienen incluidas utilidades
como logrotate que realizan esta tarea a partir de una planificación temporal.
20. • Mantenimiento
• Vacuum
• Para llevar a cabo un vacuum, deberemos ejecutar periódicamente las
sentencias vacuum y analyze. En caso de que haya algún problema o
acción adicional a realizar, el sistema nos lo indicará:
• demo=# VACUUM;
• Reindexación
• Se debe ejecutar el siguiente código para la reindexación:
• demo=# reindex database demo;
21. • Casos de Exito
Sicirec – Sistema de Gestión de Proceso.
Referencias: Anko Stillma
Fecha de entrega: 31/03/2016
País: Bolivia
Sistema de control de procesos orientado a administrar la información generada
en la cadena de producción y comercialización de madera.
Sistema de control de procesos orientado a administrar la información generada
en la cadena de producción y comercialización de madera. El sistema también
contará con los módulos del Sistema ArBolivia
(http://www.enbolivia.com/cartera/cliente/arbolivia_sitio_web/210/)
aprovechando la experiencia obtenida con este sistema.
22. • Casos de Exito
Colegio Aleman – La Paz
Entregado: 02/02/2015
País: Bolivia
Etapa de proyecto: Concluido
Referencias: Christina Wrinkler
http://nuevo.ds-lapaz.edu.bo/
MIGA – Movimiento de Integración Gastronómico
Entregado: 10/07/2015
País: Bolivia
Etapa de proyecto: Concluido
Referencias: Adriana Troche
http://www.miga.org.bo
23. CONCLUSIONES
La Administración de Bases de Datos con PostgreSQL, muestra de forma
práctica la administración de este tipo de sistemas, el cual tiene un amplio
uso en la industria de desarrollo de software. Mientras que las bases de
datos son la herramienta que requieren las empresas que necesitan
almacenar la información que generan, es en este tipo de sistemas donde se
guarda ésta. De ahí la importancia de entender y aplicar los conceptos de
administración estándar que se usa en la industria. Se usa el sistema
PostgreSQL debido a que ofrece los mecanismos que tienen otros sistemas
similares pero de carácter propietario. PostgreSQL se ofrece bajo una licencia
PostgresSQL, lo que permite desde el punto de vista del propietario de un
sistema de información evitar el pago de costosas licencias por el uso de una
base de datos.
24. ANEXOS
• FUNDACIÓN ALCO – Información al Productor
• 17/06/2015
País: Bolivia
Etapa de proyecto: Concluido
Referencias: Hugo Gutierrez
http://www.informandoalproductor.org.bo
•
•
• NIEMANDSLAND
• 27/06/2015
País: Bolivia
Etapa de proyecto: Concluido
Referencias: Teresa Torres-Heuchel
http://www.niemandsland.net.bo/