Vous êtes sur la page 1sur 39

1

DISEÑO LÓGICO DE LA BASE DE DATOS PARA LA ALCALDÍA DE SAN


ANTONIO DEL SENA.

CARLOS ALBERTO CENTENO RAMÍREZ

SERVICIO NACIONAL DE APRENDIZAJE SENA


ESPECIALIZACIÓN EN GESTION Y SEGURIDAD EN BASES DE DATOS
MODALIDAD VIRTUAL
2019
2

CONTENIDO

Tabla de contenido
INTRODUCCIÓN .............................................................................................................. 3
OBJETIVO ......................................................................................................................... 4

Desarrollo
Conclusiones
3

INTRODUCCIÓN

En la configuración realizada al SMBD PostgreSQL, se tiene en cuenta las


características identificadas antes de realizar la instalación del SMBD, estas
características estarán contempladas con los requerimientos mínimos que exige
el SMBD para su instalación.

La realización de esta actividad permitirá adquirir las destrezas en el manejo de la


configuración del SMBD, para ello se abordan los puntos que son la gestión de
usuarios y la administración de servicios permitiendo conocer las herramientas
que tiene PostgreSQL.
4

OBJETIVO

Configurar el SMBD, la base de datos y el Sistema Operativo para garantizar el


desempeño del servicio.
5

DESARROLLO

Sistemas operativos que soportan el SMBD PostgreSQL.

Desarrolle la siguiente tabla, identificando los sistemas operativos sobre los que
se puede instalar el SMBD PostgreSQL, establezca la versión del SMBD y las
herramientas GUI más utilizadas en cada plataforma.

La versión utilizada es la 11.4 como se observa en la descarga de la versión de


PostgreSQL.

4.1 Sistemas operativos que soportan el SMBD PostgreSQL.

Sistema Versión SO Versión SMBD Herramienta de


operativo administración
GUI
Debian 9 postgreSQL 9.2 Pgadmin4
Open suse Leap
SUSE postgreSQL 9.2 Pgadmin4
42.1
Red Hat RHEL 8 postgreSQL 10 Pgadmin4
Solaris 10 y 11 postgreSQL 10
Windows Server
Windows 11.4 Pg. Admin 4
2012 R2

4.2 Características del sistema computacional.


6

Características Maquina Anfitrión Máquina virtual


Sistema operativo Windows Windows
Versión del sistema
Windows 10 Enterprice Windows Server 2012 R2
operativo
Referencia del Intel Core i7-4510U Intel Core i7-4510U
procesador 2.00Hz 2.00Hz
Arquitectura del
64 bits i5-4570 320 GHz
procesador
Velocidad del reloj del
2000 GHz 3200 GHz
procesador.
L1 Code Cache 32 KB per L1 Code Cache 32 KB per
core core
Memoria cache del
L1 Data Cache 32 KB per L1 Data Cache 32 KB per
procesador.
core core
L2 Cache 2 MB L2 Cache 2 MB
Chip de video (Integrado Vmware, Inc VBEsupport
Nvidia Gforce 820M
o tarjeta externa) 2.0
Memoria RAM 8 GB ddr 3 2048 GB
Tamaña disco duro 1000 GB 20 GB
Paginación inicial 16 MB Paginación inicial 384 MB
Tamaño del archivo de
Uso actual / máximo 706 Uso actual / máximo 768
paginación
MB / MB
inicial/máximo
1807 MB

4.3 Afinamiento del SMBD PostgreSQL.

El comportamiento de PostgreSQL en cualquier sistema operativo sobre el que se


utilice depende en gran medida de la configuración que se les dé a los siguientes
archivos:

pg_hba.conf: define los diferentes tipos de accesos que un usuario tiene con la
base de datos.
Ruta: C:\Archivos de programa\PostgreSQL\9.1\share
7

La autenticación del cliente se controla mediante un archivo de configuración, que


tradicionalmente se denomina pg_hba.conf y se almacena en el directorio de
datos del clúster de la base de datos. ( HBA significa autenticación basada en
host). Un archivo pg_hba.conf predeterminado se instala cuando initdb inicializa
el directorio de datos . Sin embargo, es posible colocar el archivo de configuración
de autenticación en otro lugar; vea el parámetro de configuración hba_file .

El formato general del archivo pg_hba.conf es un conjunto de registros, uno por


línea. Las líneas en blanco se ignoran, al igual que cualquier texto después del
carácter # comentario. Los registros no pueden continuar a través de las líneas.
Un registro está compuesto por varios campos que están separados por espacios
y / o pestañas. Los campos pueden contener espacios en blanco si el valor del
campo está entre comillas dobles. Citar una de las palabras clave en una base de
datos, usuario o campo de dirección (p. Ej., Todo o replicación ) hace que la
palabra pierda su carácter especial y simplemente hace coincidir una base de
datos, usuario u host con ese nombre.

Cada registro especifica un tipo de conexión, un rango de dirección IP del cliente


(si es relevante para el tipo de conexión), un nombre de base de datos, un nombre
de usuario y el método de autenticación que se utilizará para las conexiones que
coincidan con estos parámetros. El primer registro con un tipo de conexión,
dirección de cliente, base de datos solicitada y nombre de usuario coincidentes se
utiliza para realizar la autenticación. No hay "caída" o "copia de seguridad" : si se
8

elige un registro y la autenticación falla, no se consideran los registros posteriores.


Si ningún registro coincide, se deniega el acceso.

pg_ident.conf: define la información necesaria en el caso que utilicemos un


acceso del tipo ident en pg_hba.conf.
Ruta: C:\Archivos de programa\PostgreSQL\9.1\share

Mapas de nombre de usuario


Cuando se utiliza un sistema de autenticación externo como Ident o GSSAPI, el
nombre del usuario del sistema operativo que inició la conexión puede no ser el
mismo que el usuario de la base de datos al que necesita conectarse. En este
caso, se puede aplicar un mapa de nombre de usuario para asignar el nombre de
usuario del sistema operativo a un usuario de la base de datos. Para usar la
asignación de nombre de usuario, especifique map = map-name en el campo de
opciones en pg_hba.conf . Esta opción es compatible con todos los métodos de
autenticación que reciben nombres de usuarios externos. Dado que podrían
necesitarse diferentes asignaciones para diferentes conexiones, el nombre del
mapa que se utilizará se especifica en el parámetro nombre-mapa en pg_hba.conf
para indicar qué mapa usar para cada conexión individual.

Los mapas de nombre de usuario se definen en el archivo de mapa de


identificación, que de forma predeterminada se denomina pg_ident.conf y se
almacena en el directorio de datos del clúster. (Sin embargo, es posible colocar el
archivo de mapa en otro lugar; consulte el parámetro de configuración ident_file ).
El archivo de mapa de identificación contiene líneas de la forma general:

nombre-mapa nombre- sistema nombre-nombre - base-datos


9

Los comentarios y los espacios en blanco se manejan de la misma manera que


en pg_hba.conf . El nombre del mapa es un nombre arbitrario que se utilizará para
referirse a esta asignación en pg_hba.conf . Los otros dos campos especifican un
nombre de usuario del sistema operativo y un nombre de usuario de la base de
datos coincidente. El mismo nombre de mapa se puede usar repetidamente para
especificar múltiples asignaciones de usuarios dentro de un solo mapa.

No hay restricciones con respecto a la cantidad de usuarios de la base de datos


a los que puede corresponder un usuario del sistema operativo, ni viceversa. Por
lo tanto, las entradas en un mapa deben considerarse como "este usuario del
sistema operativo puede conectarse como este usuario de la base de datos" , en
lugar de implicar que son equivalentes. La conexión se permitirá si hay alguna
entrada de mapa que empareje el nombre de usuario obtenido del sistema de
autenticación externo con el nombre de usuario de la base de datos con el que el
usuario ha solicitado conectarse.

Si el campo de nombre de usuario del sistema comienza con una barra diagonal
( / ), el resto del campo se trata como una expresión regular. (Consulte la Sección
9.7.3.1 para obtener detalles de la sintaxis de expresión regular de PostgreSQL ).
La expresión regular puede incluir una captura única o subexpresión entre
paréntesis, que luego puede referenciarse en el campo de nombre de usuario-
base de datos como \ 1 (barra diagonal inversa uno). Esto permite la asignación
de múltiples nombres de usuario en una sola línea, lo cual es particularmente útil
para sustituciones de sintaxis simples. Por ejemplo, estas entradas

mymap /^(.*)@mydomain\.com$ \ 1
mymap /^(.*)@otherdomain\.com$ invitado
eliminará la parte del dominio para los usuarios con nombres de usuario del
sistema que terminen en @ midominio.com , y permitirá que cualquier usuario
cuyo nombre de sistema termine con @ otherdomain.com inicie sesión como
invitado .

Sugerencia: Tenga en cuenta que, de forma predeterminada, una expresión


regular puede coincidir solo con parte de una cadena. Por lo general, es
aconsejable usar ^ y $ , como se muestra en el ejemplo anterior, para forzar la
coincidencia con todo el nombre de usuario del sistema.

El archivo pg_ident.conf se lee al inicio y cuando el proceso del servidor principal


recibe una señal SIGHUP . Si edita el archivo en un sistema activo, deberá
indicarle al administrador de correo (usando pg_ctl reload o kill -HUP ) para que
vuelva a leer el archivo.
10

En el ejemplo 19-2 se muestra un archivo pg_ident.conf que podría usarse junto


con el archivo pg_hba.conf en el ejemplo 19-1 . En este ejemplo, cualquier
persona que haya iniciado sesión en una máquina en la red 192.168 que no tiene
el nombre de usuario del sistema operativo bryanh , ann o robert no tendrá acceso.
El usuario de Unix robert solo tendrá acceso cuando intente conectarse como
usuario de PostgreSQL bob , no como robert o cualquier otra persona. ann solo
podría conectarse como ann . Usuario bryanhse permitiría conectarse como
bryanh o como invitado1 .

Ejemplo 19-2. Un ejemplo de archivo pg_ident.conf

# MAPNAME SYSTEM-USERNAME PG-USERNAME

omicron bryanh bryanh


omicron ann ann
# bob tiene el nombre de usuario robert en estas máquinas
omicron robert bob
# bryanh también puede conectarse como invitado1
omicron bryanh invitado1

postgresql.conf: define los parámetros de configuración que permiten obtener la


mayor eficiencia del hardware y mejorar el funcionamiento de PostgreSQL.
Ruta:
11

Establecer parámetros

Nombres de parámetros y valores

Todos los nombres de parámetros distinguen entre mayúsculas y minúsculas.


Cada parámetro toma un valor de uno de cinco tipos: booleano, entero, coma
flotante, cadena o enumeración. Valores booleanos pueden ser escritas como en,
apagado, verdadero, falso, sí, no, 1, 0 (todo mayúsculas y minúsculas) o cualquier
prefijo inequívoco de estos.

Algunas configuraciones especifican un valor de memoria o tiempo. Cada uno de


estos tiene una unidad implícita, que es kilobytes, bloques (típicamente ocho
kilobytes), milisegundos, segundos o minutos. Las unidades predeterminadas se
pueden encontrar haciendo referencia a pg_settings . unidad . Por conveniencia,
una unidad diferente también se puede especificar explícitamente. Las unidades
de memoria válidas son kB (kilobytes), MB (megabytes) y GB (gigabytes); las
unidades de tiempo válidas son ms (milisegundos), s (segundos), min (minutos),
h (horas) yd (días). Tenga en cuenta que el multiplicador para las unidades de
memoria es 1024, no 1000.

Los parámetros de tipo "enum" se especifican de la misma manera que los


parámetros de cadena, pero están restringidos a un conjunto limitado de valores.
Los valores permitidos se pueden encontrar en pg_settings . enumeraciones . Los
valores de los parámetros de enumeración no distinguen entre mayúsculas y
minúsculas.

Establecer parámetros a través del archivo de configuración

Una forma de establecer estos parámetros es editar el archivo postgresql.conf ,


que normalmente se mantiene en el directorio de datos. (Allí se instala una copia
predeterminada cuando se inicializa el directorio del clúster de la base de datos).
Un ejemplo de cómo podría verse este archivo es:

# Este es un comentario
log_ connections = yes
log_destination = 'syslog'
search_path = '"$ user", public'
shared_buffers = 128MB

En la imagen se encuentra la ruta y el documento


12

a. Consulte la documentación y parámetros que tiene en su interior cada uno de


los anteriores archivos, estos se encuentran ubicados en la carpeta de
instalación de PostgreSQL dentro del disco de la máquina virtual que hemos
instalado con anterioridad. Especifique la ruta donde se encuentran
almacenados cada uno de los anteriores archivos y realice una breve
descripción del contenido de cada uno.

pg_hba.conf

pg_ident.conf
13

postgresql.conf

b. Abra el archivo de configuración postgresql.conf, posteriormente habilite y


modifique los parámetros indicados a continuación, tenga en cuenta los
aspectos que influyen sobre cada uno de ellos, tome los datos que requiera de
las especificaciones de la máquina virtual registradas en la tabla anterior.
Adjunte como evidencia el archivo postgresql.conf con las modificaciones.
14

max_connections: Número máximo de clientes conectados a la vez a las bases


de datos. Este valor debe incrementarse en proporción al número de clientes
concurrentes.

shared_buffers: Define el tamaño del buffer de memoria utilizado por PostgreSQL.


En un servidor dedicado de PostgreSQL se debe asignar entre un 25% y un 33%
del total de la memoria RAM.
15

work_mem: Define el tamaño de memoria asignada a operaciones que contengan


las cláusulas ORDER BY, DISTINCT, JOINS, etc. En un servidor dedicado de
PostgreSQL podemos usar entre el 2% y 4% del total de la memoria RAM
disponible, aunque variara dependiendo de la cantidad de sesiones que se
tengan.

maintenance_work_mem: Define el tamaño de la memoria asignada a


Operaciones de tipo VACUUM, ANALYZE, CREATE INDEX, ALTER TABLE y
ADD FOREIGN KEY. Su valor depende del tamaño de las bases de datos que
estemos manejando, aunque se puede asignar 1/16 de la memoria RAM
disponible como valor inicial.
16

effective_cache_size: Parámetro usado por el planificador de consultas ‘query


planner’ de PostgreSQL para optimizar la lectura de datos. En un servidor
dedicado de PostgreSQL podemos asignar un mínimo del 50% y un máximo del
66% del total de la memoria RAM disponible.

checkpoint_segments: Parámetro usado para indicar a PostgresSQL un promedio


de operaciones de escritura: INSERT, UPDATE y DELETE. Para bases de datos
17

con pocas operaciones de este tipo se puede asignar un valor de 64 y puede


aumentar hasta 256 cuando hay muchos GB de datos escritos.

max_stack_depth: Especifica el tamaño máximo de profundidad de la pila de


ejecución del servidor. Establezca y argumente en el documento que será enviado
con la evidencia de este laboratorio los aspectos que deben ser tenidos en cuenta
para definir este parámetro de configuración.

Especifica la profundidad segura máxima de la pila de ejecución del servidor. La


configuración ideal para este parámetro es el límite de tamaño de pila real
impuesto por el núcleo (según lo establecido por ulimit -s o equivalente local),
menos un margen de seguridad de un megabyte más o menos. El margen de
seguridad es necesario porque la profundidad de la pila no se verifica en todas las
rutinas del servidor, sino solo en rutinas clave potencialmente recursivas, como la
evaluación de expresiones. La configuración predeterminada es de dos
megabytes ( 2 MB ), que es conservadoramente pequeña y es poco probable que
se arriesgue. Sin embargo, puede ser demasiado pequeño para permitir la
ejecución de funciones complejas. Solo los superusuarios pueden cambiar esta
configuración.

Establecer max_stack_depth más alto que el límite real del kernel significará que
una función recursiva desbocada puede bloquear un proceso de fondo individual.
En las plataformas donde PostgreSQL puede determinar el límite del kernel, el
servidor no permitirá que esta variable se establezca en un valor inseguro. Sin
18

embargo, no todas las plataformas proporcionan la información, por lo que se


recomienda precaución al seleccionar un valor.

c. Registre en la siguiente tabla los aspectos y el valor que determinan cada


parámetro.

Aspectos u
Parámetro operaciones que Valor
determinan el valor
Hay que tener en cuenta que
necesitas ~400 bytes de memoria
compartida por
> cada conexión, y PG lo reserva,
Max_connections por lo que, si tenes 20
max_connections =
> 100, vas a tener ~40Kb menos
de memoria compartida para
usar.
La configuración del parametro
shared_buffers determina cuanta
memoria está dedicada a
PostgreSQL para datos en
caché. Por defecto es bajo
Shared_buffers porque en algunas plataformas 256Mb
(como versiones viejas de solaris
y SGI) teniendo valores altos
requieren acciones invasivas
como recompilar el kernel. si
tiene un sistema con 1GB o más
19

de RAM, un valor inicial


razonable es un 1/4 de dicha
memoria. Si tiene menos deberá
calcular cuidadosamente este
valor de acuerdo al sistema
operativo, cercano al 15% en los
casos más comunes.
Para un servidor dedicado de
PostgreSQL se puede usar entre
el 0.02 y el 0.04 del total de la
memoria RAM disponible, puede
varias dependiendo de las
sesiones que se tengan.
Este tamaño está aplicado a cada
uno de los ordenamientos para
cada usuario, y consultas
complejas pueden utilizar
múltiples buffers de memoria
dedicados a estos. Establecerlo
en 50MB y teniendo 30 usuarios
Work_mem ejecutando consultas y estaría 40MB
utilizando 1.5GB de memoria
real. Más allá, si una consulta
implica hacer ordenamientos con
juntas de 8 tablas, requeriría 8
veces work_mem. Debería
considerar lo que tiene
establecido en max_connections
para establecer el work_mem
apropiadamente. Este es un valor
donde los almacenes de datos,
donde los usuarios ejecutan
consultas extensas, podrían
llegar a utilizar gigas en memoria.
El valor de asignación depende
del tamaño de las bases de datos
maintenance_work_mem que estemos manejando, aunque 64
se puede asignar
Estableciendo
effective_cache_size a la mitad
del total de la memoria, debería
ser la opción más conservadora y
3/4 para una opción más agresiva
pero que sigue siendo razonable.
Sería conveniente que elija este
valor de acuerdo a las
estadísticas del sistema
effective_cache_size operativo. En sistemas 1024Mb
Unix/linux, sume free + cached
arrojados por los comandos free
o top para tener una estimación.
En Windows vea el tamaño del
"System Cache" de la pestaña
del Administrador de Tareas.
Cambiar este valor no requiere
reiniciar el servidor (un HUP sería
suficiente o un RELOAD).
20

Este parámetro indica el


promedio de operaciones de
escritura INSERT UPDATE
DELETE para una base de datos
checkpoint_segments se puede asignar un valor de 64 64
y puede aumentar a 256 cuando
existen muchos datos de
escritura
El margen de seguridad es
necesario porque la profundidad
de la pila no se verifica en todas
las rutinas del servidor, sino solo
en rutinas clave potencialmente
recursivas, como la evaluación
de expresiones. La configuración
predeterminada es de dos
max_stack_depth megabytes ( 2 MB ), que es 4Mb
conservadoramente pequeña y
es poco probable que se
arriesgue. Sin embargo, puede
ser demasiado pequeño para
permitir la ejecución de funciones
complejas. Solo los
superusuarios pueden cambiar
esta configuración.

4.4 Conexión al sistema manejador de base de datos PostgreSQL.

Capture las imágenes de pantalla donde se aprecie la correcta ejecución de cada


uno de los siguientes procedimientos y anéxelas al documento que será enviado
como evidencia de este laboratorio.

Conexión al SMBD mediante la herramienta de administración gráfica GUI,


pgAdmin3
21
22

Conexión al SMBD mediante el SQL Shell

Diríjase al menú “Inicio, Todos los programas, PostgreSQL” y ejecute la aplicación


SQL shell (psql), cree una nueva conexión con el servidor de base de datos
PostgreSQL ingresando los siguientes datos.
23

Verificamos en el entorno de interfaz gráfica.

4.5. Gestión de las bases de datos (crear, acceder, consultar y borrar).

Capture las imágenes de pantalla donde se aprecie la correcta ejecución de cada


uno de los siguientes procedimientos y anéxelas al documento que será enviado
como evidencia de este laboratorio.
24

a. Mediante el SQL Shell cree una nueva base de datos que use la tabla de
caracteres UTF8; esta debe ser llamada con la combinación de su primer
nombre y apellido, quedando de la siguiente forma (nombre_apellido)

b. Usando la herramienta de administración pgAdmin3 cree una nueva base de


datos que lleve por nombre “laboratorio” y defina UTF8 como la tabla de
caracteres a usar. Pruebe que sucede si se intenta crear una base de datos
con una tabla de caracteres distinta a la definida en la configuración regional.

Creación de la base de datos y definición de utd8 como tabla de caracteres a usar.


25

Definición.
26

Cuando se trata de crear una tabla con configuración diferente a utf8 sale error
porque no coincide con el idioma regional del sistema.
27
28

c. Ingrese a la base de datos “nombre_apellido” mediante SQL Shell.

d. Realice una consulta desde el SQL Shell y desde la herramienta de


administración pgAdmin3 que muestre las bases de datos que están creadas
en el SMBD PostgreSQL.

e. Borre desde el SQL Shell la base de datos que lleva por nombre “laboratorio”
y posteriormente consulte el SMBD PostgreSQL con el fin de evidenciar que
el proceso se realizó correctamente.
29

Verificamos si la base de datos laboratorio fue eliminada.

Como se observa ya no se encuentra la base de datos laboratorio.

4.6. Gestión de usuarios o roles (consultar, crear, modificar y borrar


usuarios o roles).
30

Capture las imágenes de pantalla donde se aprecie la correcta ejecución de cada


uno de los siguientes procedimientos y anéxelas al documento que será enviado
como evidencia de este laboratorio.

a. Consulte los usuarios que están creados en el SMBD PostgreSQL mediante el


SQL Shell y la herramienta de administración pgAdmin3.
31

b. Cree dos nuevos usuarios mediante el SQL Shell, uno con su primer
nombre y otro con su primer apellido.
32

El usuario con su nombre tendrá una contraseña de acceso la cual no caduca y


debe poseer privilegios de administrador para crear usuarios, bases de datos y
realizar Backup.
33

El usuario con su apellido tendrá una contraseña de acceso que caducará


dentro de 6 meses y debe tener restricciones para crear usuarios y bases de
datos.
34

Cree los usuarios que aparecen en la tabla mediante la herramienta de


administración pgAdmin3 de forma que posean cada uno los privilegios indicados
en la tabla. Posteriormente realice una consulta desde el SQL Shell en donde se
muestre que los usuarios han sido creados correctamente.
35

Mediante el SQL Shell modifique el usuario “cliente” para que este posea una
contraseña que le permita iniciar sesión solo durante dos meses y pueda heredar
derechos de los usuarios padres.

Mediante el SQL Shell modifique el usuario “gerente” para que este no posea
privilegios de superusuario ni pueda iniciar backups.
36

Borre el usuario cliente.

4.7. Administración de servicios (consultar, iniciar, detener, pausar,


reanudar y reiniciar servicios).

a. Consultar los servicios que PostgreSQL está ejecutando.


37

b. Iniciar PostgreSQL de forma permanente en el servidor

c. Detener, pausar, reanudar y reiniciar los servicios de PostgreSQL.

4.8. Implementación del diseño de la base de datos.

a. Cree un Tablespace llamado SENA en la ruta


C:\dataPostgreSQL\TableSapaceSENA que tenga como propietario al usuario
con su “nombre”.
38

b. Cree su base de datos definiendo como propietario al usuario con su “nombre”


y asígnele el tablespace SENA.

c. Cree un nuevo Schema con el nombre de “especialización” dentro de la base


de datos que acaba de crear.
39

CONCLUSIÓN

La información hoy en día es muy importante para cualquier tipo de compañía,


convirtiéndose en el activo más valioso para realizar sus trazabilidades o llevar el
tratamiento de sus datos, por esta razón es importante conocer a fondo como
funciona el SMBD, con el propósito de corresponder a una necesidad en el
momento que se requiera implementar una base de datos.

Vous aimerez peut-être aussi