Mortuux

Diario de un estudiante geek. Informática, tecnología, programación, redes, sistemas operativos, bases de datos…

Estadísticas del consumo de datos de una interfaz de red.

Debo admitir que soy un gran fan de las estadísticas, así que me gusta también tener controlado el tráfico web de mis descargas.

En Windows utilizo Jc Net Meter, y en linux vnstat

Para instalar vnstat hacemos lo siguiente:

# apt-get install vnstat

Y una vez tengamos datos suficientes, bastará con escribir ‘vnstat’ en la terminal para que nos muestre la cantidad de GB descargados y que nos haga una estimación.

Túnel para el tráfico web. Proxy socks

A través de un compañero de clase, descubrí esta forma de tunelizar nuestro tráfico web de una red insegura. Este túnel encripta cualquier dato, por lo que estaría fuera del alcance de cualquier sniffer también.

Necesitaremos dos máquinas: Una será el servidor SSH que hará el forwarding de puertos, y otro será la máquina que creará el túnel hacia el servidor

En el servidor debe estar instalado openssh.

# apt-get install openssh

En el servidor, editamos el archivo /etc/ssh/sshd_config y al final añadimos las siguientes líneas:

AllowTcpForwarding yes

GatewayPorts yes

Y guardamos el archivo.

Ahora tenemos activado el forwarding de puertos en el servidor.

Ahora en la máquina que creará el túnel y en la cuál queremos que el tráfico sea seguro, hacemos lo siguiente

 

ssh -N -p PORT user@sshserver -D 2080 -v

 

 

Donde:
  • – N -> Impide que se ejecuten comandos
  • -p -> Indica el puerto SSH a usar en caso que no sea el 22
  • -D -> Indica un puerto dinámico. He puesto 2080 sin ningún motivo en especial
  • -v -> Verbose mode.
Y ahora en Mozilla Firefox, establecemos el proxy socks v5 a “localhost” y el puerto “2080”
Y con eso tendríamos nuestro tráfico web protegido.

 

 

Optimizar el uso de la RAM y del Swap en Linux.

La mayoría de los sistemas operativos modernos poseen un mecanismo llamado memoria virtual, que permite hacer creer a los programas que tienen más memoria que la disponible realmente; por ejemplo, 4 Gb en un ordenador de 32 bits. Como en realidad no se tiene físicamente toda esa memoria, algunos procesos no podrán ser ubicados en la memoria RAM.
En este caso es cuando es útil el espacio de intercambio: el sistema operativo puede buscar un proceso poco activo, y moverlo al área de intercambio (el disco duro) y de esa forma liberar la memoria principal para cargar otros procesos. Mientras no haga falta, el proceso extraído de memoria puede quedarse en el disco, ya que ahí no gasta memoria física. Cuando sea necesario, el sistema vuelve a hacer un intercambio, pasándolo del disco a memoria RAM. Es un proceso lento (comparado con usar sólo la memoria RAM), pero permite dar la impresión de que hay más memoria disponible.

En Linux, existe un parámetro llamado ‘swappiness‘ cuyo valor estará situado entre 0 y 100. El valor 0 dará mucha más prioridad a la ram que al swap, y si el valor es 100 al revés.

Para poder ver el swappiness que tenemos en nuestro sistema, hacemos lo siguiente:

$ cat /proc/sys/vm/swappiness

60

El valor por defecto es 60.

Para cambiarlo tenemos que hacer lo siguiente:

# sysctl vm.swappiness=45

En el caso de que queramos un valor de 45.

Este cambio no es persistente, y al reiniciar perderemos el cambio. Para que el cambio se quede guardado hacemos lo siguiente:

# vim /etc/sysctl.conf

Buscamos la línea y cambiamos el valor (si no está la añadimos)

vm.swappiness=45

Guardamos y listo, ya tenemos cambiado el valor de nuestro swappiness.

 

Encontrar el proceso que consume más ram en Linux

Hay varias formas de hacerlo, la primera sería utilizando awk y sort

ps aux | awk '{print $2, $4, $11}' | sort -k2r | head -n 20

 

Esto nos mostraría algo así:

 

Otra forma sería utilizar el comando ‘top‘ y pulsar la tecla ‘>’, así directamente nos lo ordenará por consumo de RAM.

 

Y la última forma es utilizar el comando ‘htop‘ y de la misma forma pulsar la tecla ‘>’, pero aquí nos preguntará que es lo que queremos ordenar:

 

 

 

Via: Go2Linux

Manifiesto por una Red Neutral

Los ciudadanos y las empresas usuarias de Internet adheridas a este texto manifestamos:

  • Que Internet es una Red Neutral por diseño, desde su creación hasta su actual implementación, en la que la información fluye de manera libre, sin discriminación alguna en función de origen, destino, protocolo o contenido.
  • Que las empresas, emprendedores y usuarios de Internet han podido crear servicios y productos en esa Red Neutral sin necesidad de autorizaciones ni acuerdos previos, dando lugar a una barrera de entrada prácticamente inexistente que ha permitido la explosión creativa, de innovación y de servicios que define el estado de la red actual.
  • Que todos los usuarios, emprendedores y empresas de Internet han podido definir y ofrecer sus servicios en condiciones de igualdad llevando el concepto de la libre competencia hasta extremos nunca antes conocidos.
  • Que Internet es el vehículo de libre expresión, libre información y desarrollo social más importante con el que cuentan ciudadanos y empresas. Su naturaleza no debe ser puesta en riesgo bajo ningún concepto.
  • Que para posibilitar esa Red Neutral las operadoras deben transportar paquetes de datos de manera neutral sin erigirse en “aduaneros” del tráfico y sin favorecer o perjudicar a unos contenidos por encima de otros.
  • Que la gestión del tráfico en situaciones puntuales y excepcionales de saturación de las redes debe acometerse de forma transparente, de acuerdo a criterios homogéneos de interés público y no discriminatorios ni comerciales.
  • Que dicha restricción excepcional del tráfico por parte de las operadoras no puede convertirse en una alternativa sostenida a la inversión en redes.
  • Que dicha Red Neutral se ve amenazada por operadoras interesadas en llegar a acuerdos comerciales por los que se privilegie o degrade el contenido según su relación comercial con la operadora.
  • Que algunos operadores del mercado quieren “redefinir” la Red Neutral para manejarla de acuerdo con sus intereses, y esa pretensión debe ser evitada; la definición de las reglas fundamentales del funcionamiento de Internet debe basarse en el interés de quienes la usan, no de quienes la proveen.
  • Que la respuesta ante esta amenaza para la red no puede ser la inacción: no hacer nada equivale a permitir que intereses privados puedan de facto llevar a cabo prácticas que afectan a las libertades fundamentales de los ciudadanos y la capacidad de las empresas para competir en igualdad de condiciones.
  • Que es preciso y urgente instar al Gobierno a proteger de manera clara e inequívoca la Red Neutral, con el fin de proteger el valor de Internet de cara al desarrollo de una economía más productiva, moderna, eficiente y libre de injerencias e intromisiones indebidas. Para ello es preciso que cualquier moción que se apruebe vincule de manera indisoluble la definición de Red Neutral en el contenido de la futura ley que se promueve, y no condicione su aplicación a cuestiones que poco tienen que ver con ésta.

La Red Neutral es un concepto claro y definido en el ámbito académico, donde no suscita debate: los ciudadanos y las empresas tienen derecho a que el tráfico de datos recibido o generado no sea manipulado, tergiversado, impedido, desviado, priorizado o retrasado en función del tipo de contenido, del protocolo o aplicación utilizado, del origen o destino de la comunicación ni de cualquier otra consideración ajena a la de su propia voluntad. Ese tráfico se tratará como una comunicación privada y exclusivamente bajo mandato judicial podrá ser espiado, trazado, archivado o analizado en su contenido, como correspondencia privada que es en realidad.

 

Comunicación a través de la red.

2. Comunicación a través de la red

2.1. Plataforma para las comunicaciones

2.1.1. Elementos de la comunicación

La comunicación comienza con un mensaje o información que se debe enviar de una persona o dispositivo a otro. Existen varios elementos

El primero de estos elementos es el origen del mensaje, o emisor. El segundo elemento de la comunicación es el destino o receptor del mensaje. Y el tercer elemento, es el canal, que está formado por los medios que proporcionan el camino por el que el mensaje viaja desde el origen hasta el destino.

Canal: Medio utilizado para transportar información de un emisor a un receptor

 

El término red en este curso se refiere a las redes de datos o información capaces de transmitir muchos tipos diferentes de comunicaciones, incluyendo datos computacionales tradicionales, voz interactiva, vídeo y productos de entretenimiento.

2.1.2.Comunicación de mensajes

Los mensajes no pueden mandarse como grandes streams, porque generarían retrasos, ya que todo sería secuencial.

 

Un método mejor es dividir los datos en partes más pequeñas y manejables para enviarlas por la red. La división del stream de datos en partes más pequeñas se denomina segmentación. La segmentación de mensajes tiene dos beneficios principales.

Primero, al enviar partes individuales más pequeñas del origen al destino, se pueden intercalar diversas conversaciones en la red. El proceso que se utiliza para intercalar las piezas de conversaciones separadas en la red se denomina multiplexación.

Multiplexación: Proceso en el que se combinan múltiples corrientes de datos digitales en una señal.

Segundo, la segmentación puede aumentar la confiabilidad de las comunicaciones de red. No es necesario que las partes separadas de cada mensajes sigan el mismo recorrido a través de la red desde el origen hasta el destino. Si una ruta de satura con el tráfico de datos, se pueden direccionar mediante recorridos alternativos.

La desventaja de utilizar segmentación y multiplexación para transmitir mensajes a través de la red es el nivel de complejidad que se agrega al proceso.

2.1.3. Componentes de la red

Los dispositivos y los medios son los elementos físicos o hardware de la red. El hardware es generalmente el componente visible de la plataforma de red, como una computadora portátil o personal, un switch, o el cableado que se usa conectar estos dispositivos. También existen los medios inalámbricos, que se transmiten a través del aire mediante radio frecuencias.

Switch: Dispositivo de red que filtra, reenvía o inunda frames basándose en la dirección destino de cada frame. Opera en la capa data-link (Nivel 2)

Los servicios y procesos son los programas de comunicación, que se ejecutan en dispositivos conectados a la red. Como por ejemplo servidores de correo, web hosting, etc.

2.1.4. Dispositivos finales y su función en la red

Algunos ejemplos de dispositivos finales son:

  • Máquinas ( estaciones de trabajo, portátiles, servidores, etc)

  • Impresoras de red

  • Teléfonos VoIP

  • Cámaras de seguridad

  • Dispositivos portátiles móviles

 

Dispositivos finales → Hosts

Un host puede ser el origen o el destino.

2.1.5. Dispositivos intermediarios y su función en la red

Algunos dispositivos dependen de dispositivos intermediarios.

Dispositivo intermediario: Dispositivo que conecta de forma directa con los dispositivos de usuario final o brinda enrutamiento de usuario final a otras redes. Como el router.

Ejemplos de dispositivos de red intermediarios:

  • Dispositivos de acceso a la red (hubs, switches y puntos de acceso inalámbricos)

  • Dispositivos de internetwork (routers)

  • Servidores y módems de comunicación

  • Dispositivos de seguridad (firewalls)

 

Estos dispositivos utilizan la dirección de host de destino conjuntamente con información sobre las interconexiones de la red, para determinar la ruta que deben tomar los mensajes a través de la red. Realizan las siguientes funciones:

  • Volver a generar y transmitir las señales de datos

  • Conservar información acerca de las rutas que existen a través de red y de internetwork

  • Notificar a otros dispositivos los errores y las fallas de comunicación

  • Dirigir los datos a lo largo de rutas alternativas cuando hay una falla en el enlace

  • Clasificar y dirigir mensajes de acuerdo a las prioridades de QoS

  • Permitir o denegar el flujo de datos de acuerdo a los parámetros de seguridad

    2.1.6. Medios de red

El medio proporciona el canal por el cual viaje el mensaje desde el origen hasta el destino.

Los medios más comunes son:

  • Hilos metálicos dentro de cables

  • Fibras de vidrio y plástico (cable de fibra óptica)

  • Transmisión inalámbrica

 

Codificación: El proceso de transformación de datos de una forma a otra.

 

Tienen diferentes características y beneficios. Los criterios para elegir un medio de red son:

  • La distancia en la cual el medio puede transportar exitosamente una señal

  • El ambiente en el cual se instalará el medio

  • La cantidad de datos y la velocidad a la que se deben transmitir

  • El costo del medio y de la instalación

    2.2.LAN, WAN e Internetworks

    2.2.1. Redes de área local

Las infraestructuras de red pueden variar en gran medida en términos de:

  • El tamaño del área cubierta

  • El número de usuarios conectados

  • El número y los tipos de servicios disponibles

 

Una red individual generalmente cubre una única área geográfica y proporciona servicios y aplicaciones a personas dentro de una estructura organizacional común.

Este tipo de red se denomina LAN. Una LAN por lo general está administrada por una organización única.

Red de área local (LAN): Red local o grupo de redes locales interconectadas que están bajo el mismo control administrativo.

2.2.2. Redes de área amplia

Estas redes conectan las LAN separadas geográficamente.

Las WAN está utilizan dispositivos de red diseñados específicamente para realizar las interconexiones entre las LAN.

2.2.3. Internet: una red de redes

Internetwork

Una malla mundial de redes interconectadas que cumple estas necesidades de comunicación humana. Internet se crea por la interconexión de redes que pertenecen a los proveedores de servicios de internet (ISP)

Estas redes ISP se conectan entre sí para proporcionar acceso.

Intranet

El término intranet con frecuencia se utiliza para hacer referencia a una conexión privada de LAN y WAN que pertenece a una organización y está diseñada para que accedan a ella sólo los miembros y los empleados.

Intranet: Sistema interno de una organización, como un sitio web, expresamente utilizado por empleados internos o estudiantes. También se puede acceder de forma remota.

2.2.4. Representaciones de red

Términos importantes para recordar son:

  • Tarjeta de interfaz de red(NIC): Una NIC, o adaptador de LAN, proporciona la conexión física a la red en la computadora personal u otra dispositivo host.

  • Puerto físico: Un conector o conexión en un dispositivo de networking donde se conectan los medios a un host u otro dispositivo de networking

  • Interfaz: Puertos especializados en un dispositivo de internetworking que se conecta a redes individuales. Puesto que los routers se utilizan para interconectar redes, los puertos de un router se conocen como interfaces de red.

    2.3. Protocolos

    2.3.1. Reglas que rigen las comunicaciones

Son reglas que rigen la comunicación.

La comunicación exitosa entre los hosts de una red requiere la interacción de gran cantidad de protocolos diferentes. Un grupo de protocolos interrelacionados que son necesarios para realizar una función de comunicación se denomina suite de protocolos. Estos protocolos se implementan en el software y hardware que está cargado en cada host y dispositivo de red.

2.3.2. Protocolos de red

Para que los dispositivos se puedan comunicar en forma exitosa, un nuevo conjunto de aplicaciones de protocolos debe describir los requerimientos e interacciones precisos.

Conjunto de aplicaciones: Grupo de componentes que trabajan de forma cooperativa. TCP/IP es un ejemplo de una suite de protocolos.

 

Las suites de protocolos de networking describen procesos como los siguientes:

  • El formato o estructura del mensaje

  • El método por el cual los dispositivos de networking comparten información sobre las rutas con otras redes.

  • Cómo y cuándo se transmiten mensajes de error y del sistema entre los dispositivos

  • La configuración y la terminación de sesiones de transferencia de datos.

    2.3.3. Interacción de los protocolos

Un ejemplo del uso de una suite de protocolos en comunicaciones de red es la interacción entre un servidor web y un explorador web. Algunos ejemplos de protocolos son:

Protocolo de aplicación:

El protocolo de transferencia de hipertexto (HTTP) es un protocolo común que rige la forma en que interactúan un servidor web y un cliente web. Define el contenido y el formato de las solicitudes web

Protocolo de transporte:

El protocolo de control de transmisión (TCP) es el protocolo de transporte que administra las conversaciones individuales entre servidores web y clientes web. TCP divide los mensajes HTTP en pequeñas partes, denominadas segmentos.

Protocolo de internetwork:

El protocolo de internetwork más común es el protocolo de internet (IP). El IP es responsable de tomar los segmentos formateados del TCP, encapsularlos en paquetes y asignar las direcciones apropiadas y seleccionar la mejor ruta al host de destino.

Protocolos de acceso a la red:

Los protocolos de acceso a la red describen dos funciones principales, la administración de enlace de datos y la transmisión física de datos en los medios. Los protocolos de administración de enlace de datos toman los paquetes IP y los formatean para transmitirlos por los medios.

2.3.4. Protocolos independientes de la tecnología

Los protocolos describen que funciones se requieren en una regla de comunicación, pero no se describe cómo realizarlas, es posible que la implementación de un protocolo sea independiente de la tecnología. Por ejemplo, http no especifica en que lenguaje debe estar escrito una página, ni el software de servidor web, ni el sistema operativo. Significa que se puede acceder a un servidor desde cualquier dispositivo con cualquier sistema operativo, mientras tenga soporte http.

 

2.4. Uso de modelos en capas

2.4.1. Beneficios del uso de un modelo en capas

Beneficios:

Ayuda en el diseño de protocolos, ya que los protocolos que operan en una capa específica tienen información definida según la cual actúan.

Fomenta competencia, ya que los productos de distintos proveedores pueden trabajar en conjunto

Evita que los cambios en la tecnología o en las capacidades de una capa afecten otras capas

Proporciona un lenguaje común para describir las funciones y capacidades de networking

 

2.4.2. Modelos de protocolo y referencia

El modelo de interconexión de sistema abierto (OSI) es el modelo de referencia de internetwork más conocido. Se usa para diseño de redes de datos, especificaciones y resolución de problemas.

 

TCP/IP es un protocolo modelo porque describe las funciones que ocurren en cada capa de protocolos dentro de una suite de TCP/IP

Equivalencia entre ambos:

 

2.4.3 Modelo TCP/IP

 

El modelo TCP/IP (modelo de Internet ) se creó a principios de la década de los setenta y se conoce con el nombre de modelo de Internet.
Define cuatro categorías de funciones, 4 capas.
El modelo TCP/IP es un estándar abierto, ninguna compañía controla la definición del modelo.
Las definiciones del estándar y los protocolos TCP/IP se explican en un foro público y se definen en un conjunto de documentos disponibles al público, denominados Solicitudes de comentarios (RFC, Request For Comments).

Capa Aplicación: datos del usuario, control de codificación y de diálogo.
Capa Transporte: comunicación entre dispositivos de distintas redes (distintas LAN).
Capa Internet: determina la mejor ruta a través de la red.
Capa Acceso a red: dispositivos y medios de la red (comunicación dentro de LAN).

 

2.4.4. Proceso de comunicación

El modelo TCP/IP describe la funcionalidad de los protocolos que forman la suite.

Un proceso de comunicación completo incluye estos pasos:

  1. Creación de datos en la capa de aplicación del dispositivo final de origen

  2. Segmentación y encapsulación de datos a medida que pasan por el stack de protocolos en el dispositivo final de origen

  3. Generación de datos en los medios en la capa de acceso a la red del stack

  4. Transportación de los datos a través de internetwork, la cual está compuesta por medios y por cualquier dispositivo intermediario

  5. Recepción de los datos en la capa de acceso en la red del dispositivo final de destino

  6. Desencapsulación y reensamblaje de los datos a medida que pasan por el stack en el dispositivo final de destino

  7. Transmisión de estos datos a la aplicación de destino en la capa de aplicación del dispositivo final de destino

 

2.4.5. Unidad de datos del protocolo y encapsulación

Proceso de encapsulación.

La forma que adopta una sección de datos en cualquier capa se denomina Unidad de datos del protocolo (PDU). En cada etapa del proceso, una PDU tiene un nombre distinto para reflejar su nuevo aspecto. Se denominan:

Datos: Término general que se utiliza en la capa de aplicación para la PDU

Segmento: PDU de la capa de transporte

Paquete: PDU de la capa de internetwork

Trama: PDU de la capa de acceso de red

Bits: PDU que se utiliza cuando se transmiten datos físicamente por el medio

 

2.4.6. Proceso de envío y recepción

En el ejemplo de la aplicación http:

El protocolo de la capa aplicación, HTTP, comienza el proceso entregando los datos de la página Web con formato HTML a la capa de transporte. Allí, los datos de aplicación se dividen en segmentos de TCP. A cada segmento de TCP se le otorga una etiqueta, denominada encabezado, que contiene información sobre qué procesos que se ejecutan en la computadora de destino deben recibir el mensaje.

La capa de transporte encapsula los datos HTML de la página Web dentro del segmento y los envía a la capa de Internet, donde se implementa el protocolo IP. Aquí, el segmento de TCP se encapsula en su totalidad dentro de un paquete IP que agrega otro rótulo denominado encabezado IP. El encabezado IP contiene las direcciones IP de host de origen y de destino

Luego el paquete IP se envía al protocolo Ethernet de la capa de acceso a la red, donde se encapsula en un encabezado de trama. Cada encabezado de trama contiene una dirección física de origen y de destino. La dirección física identifica de forma exclusiva los dispositivos en la red local. Finalmente, los bits se codifican en el medio Ethernet mediante la NIC del servidor.

Este proceso se invierte en el host receptor. Los datos se desencapsulan mientras suben al stack hacia la aplicación del usuario final.

 

 

2.4.7. Modelo OSI

Es un modelo de referencia. Describe cada interacción entre cada capa.

7. Aplicación: Proporciona los medios para la conectividad de extremo a extremo entre individuos de la red humana que usan redes de datos

6. Presentación: Proporciona una representación común de los datos transferidos entre los servicios de la capa de aplicación

5. Sesión: Proporciona servicios a la capa de presentación para organizar su diálogo y administrar el intercambio de datos.

4. Transporte: Define los servicios para segmentar, transferir y reensamblar los datos para las comunicaciones individuales entre dispositivos finales. (extremo a extremo)

3. Red: Proporciona servicios para intercambiar datos individuales en la red entre dispositivos finales identificados.

2. Enlace de datos: Los protocolos de la capa de enlace de datos describen los métodos para intercambiar tramas de datos entre dispositivos en un medio común.

1. Física: Describen los medios mecánicos, eléctricos, funcionales y de procedimiento para activar, mantener y desactivar conexiones físicas para la transmisión de bits.

 

 


2.5 Direccionamiento de red

2.5.1 Direccionamiento en la red

El modelo OSI describe los procesos de codificación, formateo, segmentación y encapsulación de datos para transmitir por la red. Un flujo de datos que se envía desde un origen hasta un destino se puede dividir en partes y entrelazar con los mensajes que viajan desde otros hosts hacia otros destinos.

 

2.5.2 Envío de datos al dispositivo final

El primer identificador, la dirección física del host, se incluye en el encabezado de la PDU de Capa 2 llamada trama. La Capa 2 está relacionada con la entrega de los mensajes en una red local única. La dirección de la Capa 2 es exclusiva en la red local y representa la dirección del dispositivo final en el medio físico. En una LAN que utiliza Ethernet, esta dirección se denomina dirección de Control de acceso a los medios (MAC). Cuando dos dispositivos se comunican en la red Ethernet local, las tramas que se intercambian entre ellos contienen las direcciones MAC de origen y de destino. Una vez que una trama se recibe satisfactoriamente por el host de destino, la información de la dirección de la Capa 2 se elimina mientras los datos se desencapsulan y suben el stack de protocolos a la Capa 3.

2.5.3 Transporte de datos a través de Internetwork

Los protocolos de Capa 3 están diseñados principalmente pata mover datos desde una red local a otra red local dentro de una internetwork. Mientras las direcciones de Capa 2 sólo se utilizan para comunicar entre dispositivos de una red local única, las direcciones de Capa 3 deben incluir identificadores que permitan a dispositivos de red intermediarios ubicar hosts en diferentes redes

Un dispositivo de red intermediario, por lo general un router, desencapsula la trama para leer la dirección host de destino contenida en el encabezado del paquete, la PDU de Capa 3. Los routers utilizan la porción del identificador de red de esta dirección para determinar qué ruta utilizar para llegar al host de destino. Una vez que se determina la ruta, el router encapsula el paquete en una nueva trama y lo envía por su trayecto hacia el dispositivo final de destino.

2.5.4 Envío de datos a la aplicación correcta

En la Capa 4, la información contenida en el encabezado de la PDU no identifica un host de destino o una red de destino. Lo que sí identifica es el proceso o servicio específico que se ejecuta en el dispositivo host de destino que actuará en los datos que se entregan. Los hosts, sean clientes o servidores en Internet, pueden ejecutar múltiples aplicaciones de red simultáneamente. Cuando los datos se reciben en el host, se examina el número de puerto para determinar qué aplicación o proceso es el destino correcto de los datos.

 

 

Bases de datos relacionales.



  1. Bases de datos relacionales

    Objetivos y ventajas del modelo relacional

El principal objetivo del modelo relacional es traducir el modelo de negocio (realidad) para que el modelo de base de datos sea lo más parecido posible.

Abstracción del almacenamiento físico

Separación entre el nivel de almacenamiento físico y el nivel conceptual

Utilizando bases de datos relacionales, el depósito de información es compacto, está gestionado de forma transparente. Todas las entidades residen en mismo depósito de información.

Relaciones reflexivas y recursividad

Permite relaciones reflexivas.

Una entidad puede relacionarse consigo misma, lo cual nos lleva pensar en esquemas recursivos.

Abstracción de tablas y vistas

Podemos tener entidades almacenadas en tablas (filas y columnas) y también podemos componer vistas empleando los contenidos de diferentes tablas.

Relaciones y reglas de integridad referencial

Son las líneas que vinculan unas entidades con otras.

Las reglas de integridad referencial se generan a partir de relaciones entre tablas.

Dependiendo de si el campo es clave en origen o en destino podemos tener relaciones fuertes o débiles. Las relaciones fuertes implican reglas de integridad referencial.

Las reglas de integridad referencial sirven para exigir coherencia entre los datos.

Relaciones fuertes y relaciones débiles. Cardinalidad.

Hay varios tipos de relaciones, pueden ser 1 a N o N a M.

Si la relación es NM, se debe crear una tabla de cruce con los campos clave de ambas tablas

Relación fuerte: Porque se trata de una relación de uno a muchos. El hecho de que exista un sello implica que debe estar guardado en un álbum.

Procedimientos almacenados y disparadores (triggers)

Los procedimientos almacenados son funciones y métodos que amplían las posibilidades de manejo de la base de datos.

Estos procedimientos constituyen una capa de programación intermedia muy cercana a la base de datos.

Ejemplos de tareas:

Dar de alta entidades. Una empresa tiene como norma que un cliente nunca pueda darse de alta si no se le ha realizado un análisis de riesgo de cobro. El procedimiento de alta de un cliente verificará que el valor de la columna Riesgo no sea nulo.

Distribuir datos lógicos a lo largo de diferentes tablas físicas sin que externamente se modifique nada.

Obtener datos de hardware o controlar dispositivos externos.

 

Los disparadores o triggers son procedimientos almacenados que se ponen en marcha automáticamente cuando sucede un acontecimiento previsto. Por ejemplo, la inserción de un nuevo registro sobre una tabla.

Más ejemplos:

Llamar a los técnicos de control cuando se ha insertado un registro en la tabla de incidencias de maquinaria

Para enviar un mensaje de correo electrónico a un cliente cuando su mercancía está lista para salir de almacén

Transacciones

Una transacción es un bloque diferenciado de operaciones de escritura sobre una o más tablas, cuyo resultado puede ser confirmado o revocado en su totalidad.

La inserción de una factura implica a su vez la inserción de una cabecera de factura y de unas líneas de factura.

Imaginemos que intentan entrar una línea de factura con una cantidad 0 de unidades o que estamos trabajando con albaranes/factura y las unidades facturadas superan las unidades que tenemos en stock para entregar.

Lo que sucede en este caso es que se revoca la escritura de la cabecera, de las líneas anteriormente grabadas de esa factura y se retorna al estado anterior.

Debe respetar las condiciones ACID.

  • A de atomización: la palabra átomo quiere decir indivisible. Una factura es una entidad lógica indivisible, por ejemplo.
  • C de consistencia: se garantiza que sólo se realizará el bloque si no se rompe ninguna regla de integridad referencial ni ninguna regla de negocio explícitamente guardada en la base de datos.
  • I de Isolation: una operación no puede afectar a otras. Dos transacciones sobre la misma información son independientes y no generan errores.
  • D de durabilidad: una vez que la transacción se ha confirmado, se mantiene en disco completamente grabada aunque haya un fallo de sistema

    Seguridad

Pueden establecer normas de seguridad para proporcionar acceso de lectura, escritura, inserción y borrado de sus usuarios, así como establecer seguridad también sobre los derechos de administración, como por ejemplo creación y destrucción de tablas.

En programación orientada a objetos, una tabla equivale a una entidad o un tipo de objeto: una clase. La seguridad es a nivel de tipos, y no de registro.

Existe una segunda forma de seguridad que no está implementada en las bases de datos relacionales que es la seguridad a nivel de instancias; la seguridad a nivel de filas individuales de las tablas.

Lenguajes propias para la gestión de datos y recursos

Lenguaje unificado. Se trata del lenguaje SQL del cual han surgido variaciones y dialectos propias de cada fabricante:

  • DDL (Data Definition Language): Lenguaje de definición de estructuras de datos. Permite crear tablas, modificarlas y eliminarlas
  • DML (Data Management Language): Lenguaje de manipulación de datos. Permite dar de alta filas, modificar contenido de columnas y borrar filas y columnas
  • DCL (Data Control Language): Lenguaje de control de datos. Permite administrar la seguridad de quién puede leer, escribir o borrar datos en una tabla; quién puede crear o eliminar tablas, etc.

 

Utilizar las fonts de Ubuntu en Debian.

Las fonts que utiliza Ubuntu son bastante bonitas en mi opinión, instalarlas en Debian es bastante sencillo:

Nos descargamos las fonts de aquí: http://dl.dropbox.com/u/1301915/ubuntu-font-family.tar.gz

Ahora extraemos:

tar -xvzf ubuntu-font-family.tar.gz -C /usr/share/fonts/truetype

Ahora tenemos que ir a Sistema -> Preferencias -> Apariencia.

Y en tipografía ponemos esta configuración:

No se ve, pero antes del paso siguiente, debemos tener marcada la opción Suavizado subpixel (LCDs)

En el siguiente paso, hacemos click en detalles y ponemos la siguiente configuración:

Y eso es todo, ahora debería parecerse bastante al estilo de fonts que tiene Ubuntu.

¿Problemas al compilar driver fglrx 10.9? Solución aquí.

Los desarrolladores del kernel han solucionado una vulnerabilidad crítica y una librería que utilizaba fglrx ha sido eliminada.

El error puede ser algo así:

/usr/src/kernel-modules/fglrx /
make: Entering directory `/usr/src/packages/BUILD/kernel-2.6.35.50.3desktop'
  LD      /usr/src/kernel-modules/fglrx/built-in.o
  CC [M]  /usr/src/kernel-modules/fglrx/firegl_public.o
/usr/src/kernel-modules/fglrx/firegl_public.c: In function ‘KCL_GetInitKerPte’:
/usr/src/kernel-modules/fglrx/firegl_public.c:2378:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2379:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2380:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c: In function ‘KCL_GetPageTableByVirtAddr’:
/usr/src/kernel-modules/fglrx/firegl_public.c:2425:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2428:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2429:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c: In function ‘KCL_TestAndClearPageDirtyFlag’:
/usr/src/kernel-modules/fglrx/firegl_public.c:2598:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c: In function ‘KCL_GetDmaPhysAddr’:
/usr/src/kernel-modules/fglrx/firegl_public.c:2636:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2637:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2638:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2640:5: warning: return makes integer from pointer without a cast
  CC [M]  /usr/src/kernel-modules/fglrx/kcl_acpi.o
  CC [M]  /usr/src/kernel-modules/fglrx/kcl_agp.o
  CC [M]  /usr/src/kernel-modules/fglrx/kcl_debug.o
  CC [M]  /usr/src/kernel-modules/fglrx/kcl_ioctl.o
/usr/src/kernel-modules/fglrx/kcl_ioctl.c: In function ‘KCL_IOCTL_AllocUserSpace32’:
/usr/src/kernel-modules/fglrx/kcl_ioctl.c:196:5: error: implicit declaration of function ‘compat_alloc_user_space’
/usr/src/kernel-modules/fglrx/kcl_ioctl.c:196:5: warning: return makes pointer from integer without a cast
make[1]: *** [/usr/src/kernel-modules/fglrx/kcl_ioctl.o] Error 1
make: *** [_module_/usr/src/kernel-modules/fglrx] Error 2
make: Leaving directory `/usr/src/packages/BUILD/kernel-2.6.35.50.3desktop'

Y la salida del comando ‘glxinfo’, así:

root@normandy:~# glxinfo
name of display: :0.0
X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  136 (GLX)
  Minor opcode of failed request:  19 (X_GLXQueryServerString)
  Serial number of failed request:  15
  Current serial number in output stream:  15

Solucionar esto, a pesar de que quizás parezca lo contrario, es bastante sencillo:

Nos movemos a la siguiente carpeta:

Debian: cd /lib/modules/fglrx/build_mod

Otra posible localización: cd  /usr/src/kernel-modules/fglrx/

Ahora tenemos que editar el archivo kcl_ioctl.c

# gedit kcl_ioctl.c

Buscamos la línea 197, el fragmento debe ser algo así:

void* ATI_API_CALL KCL_IOCTL_AllocUserSpace32(long size)
{
    return compat_alloc_user_space(size);
}

#endif // __x86_64__

Pues lo cambiamos por lo siguiente:

void* ATI_API_CALL KCL_IOCTL_AllocUserSpace32(long size)
{
    return arch_compat_alloc_user_space(size);
}

#endif // __x86_64__

Guardamos el archivo, y ahora tenemos que compilarlo otra vez, para ello:

# cd ..
# ./make_install.sh

Y eso es todo, yo así conseguí arreglarlo.

Optimizar Debian.

Antes de realizar cualquier cambio en el sistema, recomiendo hacer una copia de seguridad de vuestra configuración actual, por lo que puediera pasar.

Comenzamos:

El arranque secuencial tiene un pequeño problemilla: Si un servicio tarda demasiado en arrancar, retrasará a los demás servicios.

La solución a esto es el arranque paralelo. Así un servicio que inicie despacio, no retrasará a los demás

# apt-get install insserv

Y ahora para activar el arranque paralelo :

# echo ‘CONCURRENCY=shell’ >> /etc/default/rcS

Ahora pasamos a la parte de las aplicaciones

Preload corre como un daemon, monitorea lo que estás haciendo, los programas que más usas y  se adapta. Esto significa que inicialmente no verás ningún beneficio aparente, pero al cabo de unos días o semanas, la diferencia será notable.

# apt-get install preload

La configuración por defecto suele ser suficiente.

 

 

El siguiente cambio afectará al modo en que el kernel libera la cache de dispositivos frente a las entradas del filesystem. Tener cacheadas las entradas del filesystem hace que los filemanagers y otras aplicaciones sean más receptivos. El valor por defecto es 100. Probaremos esto:

# echo ‘vm.vfs_cache_pressure=50’ >> /etc/sysctl.conf

 

Con eso es suficiente, hay otras optimizaciones, pero yo no las he implementado en mi sistema, así que no sé muy bien como reaccionarían. Tampoco tengo el suficiente conocimiento técnico como para saber como afectará esto a todos los sistemas.