consulta_XAMPP

XAMPP Es un paquete formado por un servidor web Apache, una base de datos MySQL y los intérpretes para los lenguajes PHP

Views 136 Downloads 68 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Citation preview

XAMPP Es un paquete formado por un servidor web Apache, una base de datos MySQL y los intérpretes para los lenguajes PHP y Perl. De hecho su nombre viene de hay, X (para cualquier sistema operativo), A (Apache), M (MySQL), P (PHP) y P (Perl). XAMPP es independiente de plataforma y tiene licencia GNU GPL. Existen versiones para Linux (testeado para SuSE, RedHat, Mandrake y Debian), Windows (Windows 98, NT, 2000, XP y Vista), MacOS X y Solaris (desarrollada y probada con Solaris 8, probada con Solaris 9). Una de las ventajas de XAMPP es que de una forma muy sencilla y rápida (no más de 5 minutos) te puedes montar en tu máquina un entorno de desarrollo de cualquier aplicación web que use PHP y base de datos. La configuración por defecto de XAMPP tiene algunas deficiencias de seguridad por lo que no es recomendable usarla como una herramienta para producción, sin embargo con algunas modificaciones es lo suficientemente seguro para ser usada como servidor de sitios web en internet. Desde LAMPP (Linux AMPP) sique podrá hacer una instalación segura haciendo "/opt/lampp/lampp security".

XAMPP no es para uso en producción, pero para los desarrolladores en un entorno de desarrollo, el uso como localhost en una red local cerrado se recomienda. La forma en que XAMPP está configurado es estar abierto como sea posible, y permitir que el desarrollador de cualquier cosa que él / ella quiere. Para entornos de desarrollo esto está muy bien, pero en un entorno de producción podría ser fatal. Aquí está una lista de (algunas) de las medidas de seguridad que faltan en XAMPP: - El administrador de MySQL (root) no tiene contraseña. - El demonio MySQL es accesible a través de la red. - PhpMyAdmin es accesible a través de la red. - Ejemplos de ello son accesibles a través de la red.

Para solucionar la mayoría de las debilidades de seguridad, simplemente llame a la siguiente dirección URL: http://localhost/security/ La contraseña de root para MySQL y phpMyAdmin, y también la protección directorio XAMPP se puede establecer aquí. Todas estas medidas se deben tomar si el servidor está en una LAN con una conexión a Internet, aunque esto debe estar detrás de un firewall de hardware. * NOTAS APACHE (1) A diferencia de Apache 1.x, no puedes dejar de Apache 2.x con el comando "apache-k shutdown". Esto solo funciona para una instalación como servicio de NT. Use el botón Panel de control. En el caso de Apache no se instala como un servicio, basta con cerrar la ventana de comandos DOS Apache para el cierre. Esta ventana se puede minimizar durante el funcionamiento normal. (2) Para utilizar la versión experimental de mod_auth_mysql, eliminar el comentarioout # al inicio de la línea correspondiente, en el archivo httpd.conf. Información detallada sobre este tema se puede encontrar en el menú barra de navegación izquierda de la página de administración de XAMPP. (3) Para utilizar mod_dav cargar los módulos y mod_dav.so mod_dav_fs.so en el "httpd.conf" quitando el # en el comienzo de sus líneas. Reinicia Apache. A continuación, intente http://127.0.0.1:81 (para Dreamweaver, no para MS Frontpage!) * NOTAS MYSQL (1) El servidor MySQL puede ser iniciado en el panel de control de Xampp, de lo contrario, haciendo doble clic en (la ejecución) mysql_start.bat en el directorio raíz Xampp. En las instalaciones de manual (no instalador de Windows), la ruta exacta de este archivo es X: \ xampp \ mysql_start.bat, donde "X" indica la letra de la unidad que ha desempaquetado en XAMPP. Este archivo por lotes inicia el servidor MySQL en modo consola. La primera inicialización puede tardar unos minutos. No cierre la ventana de DOS o tendrá que tumbar el servidor! Para detener el servidor, por favor use mysql_shutdown.bat, que se encuentra en el mismo directorio. (2) Para utilizar el demonio de MySQL con "innodb" para un mejor rendimiento, por favor, edite el "mi" (o "my.cnf") en el archivo C: \ xampp \ mysql \ bin, o para los servicios de la carpeta c: \ my.cnf para Windows NT/2000/XP. De allí, activar el "innodb_data_file_path = ibdata1: 30M" comunicado. La atención, "innodb" no se recomienda para 95/98/ME. Para usar MySQL como servicio de NT / 2000 / XP, simplemente copia el "mi" / "my.cnf" archivo "C: \ mi", o "C: \ my.cnf". Tenga en cuenta que este archivo tiene que ser colocado en C: \ (raíz), en otros lugares no están permitidos. A continuación, ejecute la "mysql_installservice.bat" en la carpeta mysql. (3) MySQL se inicia con valores estándar para la identificación del usuario y la contraseña. El ID de usuario predeterminado es "root", la contraseña es "" (= sin contraseña). Para acceder a MySQL a través de PHP con los valores preestablecidos, que tendrá que usar la siguiente sintaxis:

mysql_connect ("localhost", "root", ""); Si desea establecer una contraseña para acceder a MySQL, por favor usa MySQLAdmin. Para establecer la Contraseña "secreto" para el usuario "root", escriba lo siguiente: C: \ xampp \ mysql \ bin \ mysqladmin.exe-u root-p secreto Después de cambiar la contraseña que tendrá que volver a configurar phpMyAdmin para utilizar la nueva contraseña, de lo contrario no podrá acceder a las bases de datos. Para ello, abra el fichero config.inc.php en \ xampp \ phpmyadmin \ y editar las siguientes líneas: $ Cfg ['Servers'] [$ i] ['usuario'] = 'root'; / / MySQL del usuario $ Cfg ['Servers'] [$ i] ['auth_type'] = 'http'; / / HTTP autenticación Así que primero el 'root' password se consulta por el servidor MySQL, antes de phpMyAdmin puede acceder a él. * PHP-Switch Notas Esto se utiliza para probar las aplicaciones en el PHP anteriores v4, así como el último v5 incluye Xampp. Puede utilizar la opción del menú Inicio de Windows en el grupo de Xampp, o el archivo por lotes relevantes para el cambio entre las dos versiones. Por favor, ignore esta función si no se están desarrollando con PHP. ¿Qué PC se puede utilizar como un servidor? Si la carga no es pesada luego un PC obsoleto puede ser utilizado como un servidor. Si la carga es media, como en una LAN bien utilizados en una oficina grande (tal vez 10 usuarios en línea o más), un PC bastante moderna se debe utilizar - pero nada especial que se necesita. Si un servidor es un servidor de producción, luego de un PC con una buena especificación debe ser utilizado. Las áreas críticas (en orden de importancia) son la memoria RAM (2 GB necesarios por lo menos), una alta calidad en disco duro rápido (como un Seagate uno), y una CPU rápida (lo que es actualmente un modelo rápido, pero a un precio razonable - no hay necesidad de ir por la borda). Establecer una LAN simple Para una red sencilla, básica - una red local - sólo necesita un poco de equipo simple y económico. Esto es lo que usted necesita: Cualquier viejo PC - incluso un viejo PC de la CPU a 800 MHz será adecuada para trabajos ligeros un eje básico de LAN, para su uso con cable (no WiFi) - esto es sólo alrededor de £ 10 / $ 15 dos cables de LAN (a contar desde la PC1 al centro, y el centro de PC2) Tarjetas LAN o LAN a bordo, en cada uno de los PCs Este equipo no es caro. No se necesita software, aparte de XAMPP u otra aplicación de servidor en el PC que está designado como el servidor. No se necesita software en el PC cliente (es decir, su trabajo principal uno) además de un navegador. Un navegador, como Firefox o IE, es el software que se conecta a un servidor. Dado que este es un LAN cerrado hay menos consecuencias para la seguridad de que el uso de Internet. Puede conectar tantos PCs como quieras (o de otros equipos como los Mac). La capacidad del centro (también conocido como switch) es el único factor limitante - la más pequeña es de aproximadamente 4 conexiones, y el más grande de uso común

es de 20. En la práctica no existe una "mayor", como usted puede comprar incluso las más grandes, o una cadena de ellos. Una alternativa sencilla para el uso temporal es un USB de PC a PC por cable. No se puede utilizar una ordinarias a un cable USB en este caso no va a funcionar. Se necesita un micro centro de LAN en el centro. Esto puede ser más barato si la alternativa es que usted tiene que comprar todos los otros componentes. Sin embargo, hay problemas de usabilidad como este no es un estándar de LAN - las direcciones IP son inusuales, por ejemplo. Xampp ubicación de la carpeta Después de la instalación, la carpeta raíz Xampp (el directorio raíz) se puede encontrar en: C: \ Archivos de programa \ xampp \ El 'Webroot o carpeta de páginas web (que es siempre un nivel por debajo del directorio raíz) se encuentra en: C: \ Archivos de programa \ xampp \ htdocs Esta carpeta es donde se colocan los archivos que se puede acceder a través de la web (o en este caso a través de la LAN). En teoría, todos los archivos en esta carpeta se puede ver en la web / LAN. Una carpeta en un servidor que suele llamarse un directorio - no hay diferencia entre una carpeta y un directorio. La construcción de un nuevo sitio En primer lugar - la limpieza de la carpeta de documentos web, / htdocs /. Puede reorganizar la carpeta de documentos web, porque en la instalación que contiene una gran cantidad de archivos sueltos que se confunde después de realizar sus propios archivos de aquí. Cree una nueva carpeta en htdocs, llamado / viejo / Poner todo el archivo actual suelto en htdocs en esto (pero no las carpetas como prohibidas, etc) Dejar las carpetas de allí, ya que son Sus páginas web deben ser colocados en la carpeta \ xampp \ htdocs (no en \ apache \ htdocs \ como normalmente podría ser el caso de un servidor LAMP, pero esto no existe de todos modos). Vuelva a colocar la página de prueba incluye index.html con su propia página. La primera página de su sitio es denominado correctamente la página de índice. También puede ser llamado tu página de inicio, página de inicio, etc Su nombre es a menudo index.html, ya que es la convención. También puede ser un htm. O. Archivo php. Hay alternativas - pero esto se está volviendo demasiado complejo. Tenga en cuenta que no se puede ejecutar. Asp en un servidor LAMP así. A pesar de que está utilizando un PC con Windows, se ha instalado una capa de servidor independiente en la parte superior, y un servidor estándar no se puede ejecutar. Asp o. Net. Establecer un solo sitio Por lo general, para servir a un solo sitio, su índice y otras páginas de 'frontend' se colocan sueltos en la carpeta htdocs. A continuación, las carpetas se agregan otros aquí, como imágenes y secciones de su sitio web. Cuando el uso de carpetas en un servidor, que generalmente se llaman directorios. A = El directorio de una carpeta en un servidor. No hay ninguna diferencia. Puede utilizar cualquiera de los términos, aunque por el uso del servidor, es más correcto usar

'directorio' del término. En este caso, hemos utilizado 'carpeta' el término más porque me parecía mejor para estos fines, es decir, más simple. Así que si sólo tienes un sitio, y las páginas están sueltas en el webroot, entonces la URL de un sitio único, podrá ser: 192.168.0.1/index.html ... Dependiendo del router. En el propio servidor (acceso a la máquina local directamente, en su propio teclado / pantalla) será: http://127.0.0.1/index.html ... Suponiendo que se pone un archivo de la página principal de allí, llamado index.html. Cómo crear una página de índice Usted puede crear una página HTML o usar un CMS o una aplicación similar. Para crear una página HTML, basta con crear un archivo de texto y el nombre de "índice". Cuando se guarda por lo que será index.txt, un archivo de texto estándar. Escriba este texto en él: ¡Hola, mundo. A continuación, cambie la extensión de archivo (la parte después del punto), de modo que se convierta en index.html, ahora tiene una página de índice HTML. O construir en un editor HTML, por supuesto. Ahora, cuando usted acceder a su sitio, podrá ver "¡Hola, mundo". Multi-Site en XAMPP Cuando se atiende a más de un sitio web, cada uno debe ser colocado en su propia carpeta. De multi-sitio utilizan, entonces, debe poner a cada "sitio" en su propia carpeta dentro de / htdocs /. Por lo tanto, una ruta de archivo local a una página de índice para yoursite1.com, en una carpeta denominada , serán los siguientes: \ Htdocs \ yoursite1 \ index.html La dirección URL será: 192.168.0.1/yoursite1 ... Aunque en navegadores antiguos o no estándar es posible que tenga que escribir: http://192.168.0.1/yoursite1/index.html Para cada sitio adicional de la ruta de archivo local es: \ Htdocs \ yoursite2 \ index.html ... Y así sucesivamente. Por lo tanto las direcciones URL de sitios múltiples, cada uno en su propia carpeta, en formato largo (aunque usted debería ser capaz de salirse con la versión más corta de sólo ) serán los siguientes: http://192.168.0.1/yoursite1/index.html http://192.168.0.1/yoursite2/index.html ... O en un equipo local: http://127.0.0.1/yoursite1/index.html http://127.0.0.1/yoursite2/index.html Servidores de Internet resolver este problema el nombre de multi-site mediante el establecimiento de los DNS para cada sitio en sus servidores directos en la carpeta de cada sitio, y por lo tanto perder parte de la 'yoursite1 "de la URL.

Al utilizar varias carpetas de páginas web en un sitio (que es una práctica normal para el estándar de páginas HTML), estos se denominan directorios. Usted debe asegurarse de que su menú de navegación son correctos entre los niveles de directorio. ¿Cuántos sitios en XAMPP? ¿Cuál es el número máximo de sitios que se pueden ejecutar en XAMPP? - Un número infinito, pero limitado por los recursos del PC. En otras palabras, no importa. Más grande que he oído hablar de es de 30.000 (sí, 30k). En la práctica, una base de datos MySQL debe limitarse a alrededor de 50.000 entradas, como las páginas. Si desea instalar cientos de HTML o de los sitios de la CMS, que está bien, no tendrán ningún problema - para el desarrollo del curso, o utilizar la red LAN. Para la producción, los sitios web son las siguientes limitaciones: De alta calidad de hosting compartido tiene un máximo de 50 sitios CMS / ecommerce / foro, para un rendimiento superior (dinámicas agencias) De buena calidad de alojamiento compartido, los sitios están limitados a 200 max. Para obtener un rendimiento promedio de, 300 o 400 sitios por servidor son permitidos. Página tiempos de carga, y, en ocasiones los incidentes fuera de línea, el aumento para cada paso en el número de sitios dinámicos por servidor. Son aproximadamente 100 veces más recursos que un sitio web HTML. Con la base de datos impulsada por sitios, entonces el servidor de base de datos será muy sobrecargado, a veces, con más de 300 sitios por servidor, y esto se traduce en carga de la página muy lenta o incluso offlines. Pero, por supuesto, no estamos hablando de servidores de producción aquí, XAMPP no puede ser endurecido para la producción, excepto por un experto. Y un experto no lo estaría utilizando para ello, no tendrían razón para hacerlo si se puede ejecutar un Linux / Apache o un servidor Linux / Nginx. CMS sobre XAMPP Xamp CMS set-up esfácil.Esta es la mejor manera de probar y construir su CMS antes de transferirlo a la red de acogida. XAMP contiene las bases de datos MySQL y PHP scripting que usted necesita para la funcionalidad de CMS. En teoría, el número de DB (bases de datos) que puede tener es ilimitada. Que se establecen, como en un servicio de hosting, con phpMyAdmin. Motores de sitios dinámicos, como las aplicaciones CMS, debe ser colocado en la carpeta htdocs, y la instalación ejecutar desde aquí (a menos que la aplicación indique lo contrario). Dicha instalación del motor del sitio no debe iniciarse hasta que su base de datos está configurado y funciona correctamente (a menos que la aplicación se instala la base de datos durante la primera instalación). Es probable que no de otra manera, ya que la funcionalidad dinámica depende de la base de datos. Tenga en cuenta que las "páginas" de un sitio completo, dinámico - como un sitio de CMS basado - no existen: se construyen sobre la marcha de la aplicación dinámica en conjunto con la base de datos y el servidor, y por lo tanto, son las páginas virtuales. Por lo tanto, no van en busca de sus páginas web en htdocs - sólo las carpetas de aplicación (el programa de CMS en sí mismo) no existe. Con una aplicación CMS o de comercio electrónico, las páginas no existen. Se construyen a partir de la base de datos, sobre la marcha.

No hay más sobrecarga del servidor con este método, aunque esto es irrelevante en un entorno de desarrollo. XAMPP ofrece un ambiente totalmente desarrollado * AMP para la prueba local de CMS y sitios de comercio electrónico.

APACHE (Acrónimo de "a patchy server"). Servidor web de distribución libre y de código abierto, siendo el más popular del mundo desde abril de 1996, con una penetración actual del 50% del total de servidores web del mundo (agosto de 2007). La principal competencia de Apache es el IIS (Microsoft Internet InformationServices) de Microsoft. Apache fue la primera alternativa viable para el servidor web de Netscape Communications, actualmente conocido como Sun Java System Web Server. Apache es desarrollado y mantenido por una comunidad abierta de desarrolladores bajo el auspicio de la Apache Software Foundation. La aplicación permite ejecutarse en múltiples sistemas operativos como Windows, Novell NetWare, Mac OS X y los sistemas basados en Unix. Historia de Apache La primera versión del servidor web Apache fue desarrollada por Robert McCool, quien desarrollaba el servidor web NCSA HTTPd (National Center forSupercomputingApplications). Cuando Robert dejó el NCSA a mediados de 1994, el desarrollo de httpd se detuvo. Robert McCool buscó otros desarrolladores para que lo ayudaran, formando el Apache Group. Algunos miembros del grupo original fueron Brian Behlendorf, Roy T. Fielding, RobHartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew Wilson, Eric Hagberg, Frank Peters y NicolasPioch. La versión 2 del servidor Apache fue una reescritura sustancial de la mayor parte del código de Apache 1.x, enfocándose en una mayor modularización y el desarrollo de una capa de portabilidad, el Apache Portable Runtime.

Apache 2.x incluyó multitarea en UNIX, mejor soporte para plataformas no Unix (como Windows), una nueva API Apache y soporte para IPv6.

Características de Apache * Soporte para los lenguajes perl, python, tcl y PHP. * Módulos de autenticación: mod_access, mod_auth y mod_digest. * Soporte para SSL y TLS. * Permite la configuración de mensajes de errores personalizados y negociación de contenido. * Permite autenticación de base de datos basada en SGBD. Uso de Apache Apache es principalmente usado para servir páginas web estáticas y dinámicas en la WWW. Apache es el servidor web del popular sistema XAMP, junto con MySQL y los lenguajes de programación PHP/Perl/Python. La "X" puede ser la inicial de cualquier sistema operativo, si es Windows: WAMP, si es el Linux: LAMP, etc. Descripción de la arquitectura en módulos del Apache. Explicación y enumeración de las funcionalidades asociadas a cada módulo. El servidor Apache es un software que esta estructurado en módulos. La configuración de cada módulo se hace mediante la configuración de las directivas que están

contenidas dentro del módulo. Los módulos del Apache se pueden clasificar en tres categorías: Módulos Base: Módulo con las funciones básicas del Apache Módulos Multiproceso: son los responsables de la unión con los puertos de la máquina, acepando las peticiones y enviando a los hijos a atender a las peticiones Módulos Adicionales: Cualquier otro módulo que le añada una funcionalidad al servidor. Las funcionalidades más elementales se encuentran en el módulo base, siendo necesario un módulo multiproceso para manejar las peticiones. Se han diseñado varios módulos multiproceso para cada uno de los sistemas operativos sobre los que se ejecuta el Apache, optimizando el rendimiento y rapidez del código. El resto de funcionalidades del servidor se consiguen por medio de módulos adicionales que se pueden cargar. Para añadir un conjunto de utilidades al servidor, simplemente hay que añadirle un módulo, de forma que no es necesario volver a instalar el software. Módulos Base y Módulos Multiproceso:           

core: Funciones básicas del Apache que están siempre disponibles. mpm_common: Colección de directivas que se implementan en más de un módulo multiproceso. beos: Módulo de multiproceso optimizado para BeOS. leader: Variable experimental de MPM. mpm_netware: Módulo de multiproceso que implementa un servidor web optimizado para Novell NetWare. mpmt_os2: MPM híbrido, multiproceso y multihilo para OS/2 . perchild: Módulo multiproceso que permite a los procesos demonio servir las peticiones que se asignan a distintos id de usuario. prefork: Implementa un servidor sin hilos. threadpool: Variante experimental del módulo estándar de MPM . mpm_winnt: Módulo multiproceso optimizado para Windows NT. worker: Módulo multiproceso que implementa un híbrido multihilos y multiprocesos de servidor Web.

Módulos adicionales:          

mod_access: proporciona control de acceso basándose en el nombre del host del cliente, su dirección IP u otras características de la petición del cliente. mod_actions: este módulo se utiliza para ejecutar Scripts CGI, basándose en el tipo de medio o el método de petición. mod_alias: proporcionado para mapear diferentes partes del sistema de ficheros del servidor en el árbol de documentos del servidor, y para redirección de URL's. mod_asis: envío de ficheros que tienen sus propias cabeceras http. mod_auth: autentificación de usuario utilizando ficheros de texto. mod_auth_anon: permite a usuarios anónimos acceder a áreas autentificadas mod_auth_dbm: proporciona autentificación utilizando ficheros DBM. mod_auth_digest: autentificación de usuario utilizando MD5. mod_auth_ldap: permite la utilización un directorio LDAP para almacenar la base de datos de autentificación. mod_autoindex: muestra los contenidos de un directorio automáticamente, parecido al comando ls de Unix.

                                

mod_cache: Cache de contenidos indexados por URI's. mod_cern_meta: Semántica de etiquetas meta del CERN. mod_cgi: Ejecución de Scritps CGI. mod_cgid: ejecución de Scripts CGI utilizando un demonio CGI externo. mod_charset_lite: para la especificación del juego de caracteres de las traducciones. mod_deflate: comprime el contenido antes de ser enviado al cliente. mod_dir: Proporcionado para redirecciones y para servir los ficheros de listado de directorios. mod_disk_cache: Cache para almacenar contenidos identificados por URI. mod_echo: Un servidor simple de echo para ilustrar los módulos del protocolo. mod_env: modificación del entorno que se envia a los scripts CGI y las páginas SSI. mod_expires: Generación de las cabeceras http Expires, de acuerdo de los criterios especificados por el usuario. mod_ext_filter: pasa el cuerpo de la respuesta a través de un programa antes de enviársela al cliente. mod_file_cache: cachea una lista estática de ficheros en memoria. mod_headers: personalización de las peticiones HTTP y las cabeceras de las respuestas. mod_imap: proceso de imágenes en el lado del servidor. mod_include: Documentos HTML generados por el servidor (Server SideIncludes). mod_info: proporciona una visión comprensiva de la configuración del servidor. mod_isapi: Extensiones ISAPI en Apache para Windows. mod_ldap: pool de conexiones LDAP y cacheo de resultados para la utilización de otros módulos LDAP. mod_log_config: registro de las peticiones hechas al servidor. mod_logio: registro del número de bytes recibidos y enviados en cada respuesta. mod_mem_cache: Cache de contenidos identificados por URI. mod_mime: asocia las extensiones de peticiones de los ficheros con el comportamiento del fichero (manejadores y filtros) y contenido (tipos mime, idioma, juego de caracteres y codificación). mod_mime_magic: determina el tipo MIME de un fichero mirando unos pocos bytes del contenido. mod_negotiation: se proporciona para la negociación del contenido. mod_proxy: servidor HTTP/1.1 proxy/gateway. mod_proxy_connect: extensión de mod_proxy para la gestión de las peticiones CONNECT. mod_proxy_ftp: soporte FTP para mod_proxy. mod_proxy_http: soporte HTTP para el módulo mod_proxy. mod_rewrite: proporciona un motor de reescritura basado en reglas que rescribe las peticiones de URL's al vuelo. mod_setenvif: permite la configuración de las variables de entorno basándose en las características de la petición. mod_so: carga del código ejecutable y los módulos en al iniciar o reiniciar el servidor. mod_speling: intenta corregir las URL mal puestas por los usuarios, ignorando las mayúsculas y permitiendo hasta una falta.

      

mod_ssl: criptografía avanzada utilizando los protocolos Secure Sockets Layer y TransportLayer Security. mod_status: proporciona información en la actividad y rendimiento del servidor. mod_suexec: permite a los scripts CGI ejecutarse con un nombre y grupo específico. mod_unique_id: proporciona variables de entorno y un identificador único para cada petición. mod_userdir: directorios específicos para usuarios. mod_usertrack: registro de actividad de un usuario en el sitio. mod_vhost_alias: Proporcionado para configurar muchos servidores virtuales dinámicamente.

Estructura del fichero principal de configuración del Apache. El fichero httpd.conf es el fichero principal de configuración del Apache, se encuentra dentro del directorio Conf, en el directorio de instalación del Apache. En primer lugar hay que destacar que el fichero está dividido en tres secciones, que son: 1º Parámetros globales 2º Directivas de Funcionamiento 3º Host Virtuales En el fichero se encuentran todos los parámetros de funcionamiento del Apache. Algunos parámetros son generales para la instalación y funcionamiento del Apache. Muchos otros de los parámetros se pueden configurar independientes para un conjunto de directorios y/o ficheros . En estos casos los parámetros se encuentran ubicados dentro de secciones donde se indica el ámbito de aplicación del parámetro. Las secciones más importantes son: : Los parámetros que se encuentran dentro de esta sección, sólo se aplicarán a el directorio especificado y a sus subdirectorios. : Igual que Directory, pero acepta en el nombre del directorio expresiones regulares. : Los parámetros de configuración proporcionan control de acceso de los ficheros por su nombre. : Igual que Files, pero acepta expresiones regulares en el nombre del fichero. : Proporciona un control de acceso de los ficheros por medio de la URL : Igual que Location, pero acepta expresiones regulares en el nombre del fichero. Algunas veces las directivas de funcionamiento de las secciones anteriores se pueden cruzar en cuyo caso tienen el siguiente orden de preferencia: 1. 2. 3. 4.

y .htaccess (.htaccessprevalecefrente a ) y y y

También hay que destacar, que el fichero contiene un montón de comentarios para su correcta utilización, las líneas comentadas aparecen con el símbolo #. ¿Alguna vez has implementado clases que gestionaran directamente datos de configuración? Existen en varias formas estándar de gestionar los datos configuración de nuestros componentes y aplicaciones: Mediante la clase java.util.Properties A través de las clases del paquete java.util.prefs. (API muy potente que permite gestionar datos de configuración de modo herárquico al estilo del "Registro de Windows" que recomiendo leerse si el lector la desconoce) En este pequeño tutorial, voy a nombrar un API que a mi personalmente me parece de una enorme utilidad y potencia para la gestión de datos de configuración. Se trata de Apache JakartaCommonsConfiguration. Apache JakartaCommonsConfiguration es un subproyecto de la serie de proyectos Apache JakartaCommons. CommonsConfiguration es un conjunto de proyectos que intentan estandarizar las tareas comunes que casi todas las aplicaciones y componentes realizan normalmente. Una tarea muy común en cualquier aplicación es la gestión de datos de configuración. Es aquí en donde entra en juego Apache JakartaCommonsConfiguration. Podemos obtener todo lo necesario desde la siguiente dirección:http://jakarta.apache.org/commons/configuration/ Básicamente Apache CommonsConfiguration nos permite: Gestión de los datos de configuración independientemente del lugar en el que esten almacenados. (Ficheros de propiedades, documentos XML, JNDI, Base de datos, etc.). Un potente motor de consultas para realizar búsquedas del valor que tienen determinadas propiedades de configuración. Recarga automática de los datos de configuración en caso de que sean modificados en su lugar físico de origen (Fichero de texto plano, fichero xml, etc) Posibilidad de almacenar los datos de configuración automáticamente en su lugar físico (fichero de texto plano, fichero xml, etc). Otras Características interesantes Este API también nos da la posibilidad de que se recargen automáticamente los datos de configuración sobre el objeto Configuration en caso de que estos hayan sido modificados.

MySQL MySQL es la base de datos open source más popular y, posiblemente, mejor del mundo. Su continuo desarrollo y su creciente popularidad está haciendo de MySQL un competidor cada vez más directo de gigantes en la materia de las bases de datos como Oracl MySQL es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamados de bases de datos o , lo que es lo mismo, u Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza multiples tablas para almacenar y organizar la información. MySQL fue escrito en C y C++ y destaca por su gran adaptación a diferentes entornos de desarrollo, permitiendo su interactuación con los lenguajes de programación más utilizados como PHP, Perl y Java y su integración en distintos sistemas operativos. También es muy destacable, la condición de open source de MySQL, que hace que su utilización sea gratuita e incluso se pueda modificar con total libertad, pudiendo descargar su código fuente. Esto ha favorecido muy positivamente en su desarrollo y continuas actualizaciones, para hacer de MySQL una de las herramientas más utilizadas por los programadores orientados a Internet. 9.1. Valores literales

En esta sección se trata la escritura de valores literales en MySQL. Estos incluyen a las cadenas, números, valores hexadeciales, valores booleanos y NULL. También se ocupa de las distintas situaciones (algunas muy propensas a error) en las que se puede incurrir al manejar estos tipos básicos de MySQL. 9.1.1. Cadenas de caracteres Una cadena (string) es una secuencia de caracteres, encerrada por comillas simples (''') o dobles ('"'). Ejemplos: 'una cadena' "otra cadena" Si el modo de servidor tiene habilitado ANSI_QUOTES, las cadenas solamente pueden delimitarse con comillas simples. Una cadena delimitada por comillas dobles será interpretada como un identificador. A partir de MySQL 4.1.1, las cadenas pueden tener una parte indicativa del conjunto de caracteres y una cláusulaCOLLATE: [_conjunto_caracteres]'cadena' [COLLATE tipo_ordenación] Ejemplos: SELECT _latin1'cadena'; SELECT _latin1'cadena' COLLATE latin1_danish_ci; 9.1.2. Números Los enteros se representan como secuencias de dígitos. Los flotantes utilizan '.' como separador decimal. Cada tipo de número puede estar precedido con '-' para indicar un valor negativo. Ejemplos de enteros válidos: 1221 0 -32 Ejemplos de números de punto flotante válidos: 294.42 -32032.6809e+10 148.00 Un entero puede usarse en un contexto de punto flotante; se intepretará como el número de punto flotante equivalente. 9.1.3. Valores hexadecimales MySQL soporta valores hexadecimales. En contextos numéricos, éstos actuarán como enteros (con precisión de 64 bits). En contextos de cadena, actuarán como cadenas binarias, donde cada par de dígitos hexadecimales es convertido a un carácter: mysql> SELECT x'4D7953514C'; -> 'MySQL' mysql> SELECT 0xa+0; -> 10

mysql> SELECT 0x5061756c; -> 'Paul' En MySQL 5.0, el tipo predeterminado para un valor hexadecimal es una cadena. Si se desea estar seguro de que el valor se tratará como un número, puede emplearse CAST(... AS UNSIGNED): mysql> SELECT 0x41, CAST(0x41 AS UNSIGNED); -> 'A', 65 La sintaxis 0x se basa en ODBC. Las cadenas hexadecimales son utilizadas a menudo por ODBC para proveer valores para columnas BLOB. La sintaxis x'hexstring' se basa en SQL standard. Se puede convertir una cadena o un número en una cadena en formato hexadecimal con la función HEX(): mysql> SELECT HEX('cat'); -> '636174' mysql> SELECT 0x636174; -> 'cat' 9.1.4. Valores booleanos En MySQL 5.0, la constante TRUE se evalúa como 1 y la constante FALSE, como 0. Los nombres de constantes pueden escribirse en cualquier combinación de mayúsculas y minúsculas. mysql> SELECT TRUE, true, FALSE, false; -> 1, 1, 0, 0 9.1.5. Valores de bits A partir de MySQL 5.0.3, los valores de bits pueden escribirse utilizando la notación b'valor'. value es un valor binario escrito empleando ceros y unos. La notación de bits es conveniente para especificar valores que se asignarán a columnas BIT: mysql> CREATE TABLE t (b BIT(8)); mysql> INSERT INTO t SET b = b'11111111'; mysql> INSERT INTO t SET b = b'1010'; +------+----------+----------+----------+ | b+0 | BIN(b+0) | OCT(b+0) | HEX(b+0) | +------+----------+----------+----------+ | 255 | 11111111 | 377 | FF | | 10 | 1010 | 12 |A | +------+----------+----------+----------+ 9.1.6. Valores NULL

El valor NULL significa “no hay dato.” NULL puede escribirse en cualquier combinación de mayúsculas y minúsculas. Debe tenerse en cuenta que el valor NULL no es lo mismo que 0 para tipos numéricos o la cadena vacía para tipos de cadena. Consulte Sección A.5.3, “Problemas con valores NULL”. Para operaciones de exportación o importación de texto utilizando LOAD DATA INFILE o SELECT ... INTO OUTFILE, NULL se representa con la secuencia \N. Motores de almacenamiento de MySQL y tipos de tablas MySQL soporta varios motores de almacenamiento que tratan con distintos tipos de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen: 

MyISAM trata tablas no transaccionales. Proporciona almacenamiento y recuperación de datos rápida, así como posibilidad de búsquedas fulltext. MyISAM se soporta en todas las configuraciones MySQL, y es el motor de almacenamiento por defecto a no ser que tenga una configuración distinta a la que viene por defecto con MySQL. El motor de almacenamiento MEMORY proporciona tablas en memoria. El motor de almacenamiento MERGE permite una colección de tablas MyISAM idénticas ser tratadas como una simple tabla. Como MyISAM, los motores de almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se incluyen en MySQL por defecto. Nota: El motor de almacenamiento MEMORY anteriormente se conocía como HEAP. Los motores de almacenamiento InnoDB y BDB proporcionan tablas transaccionales. BDB se incluye en la distribución binaria MySQL-Max en aquellos sistemas operativos que la soportan. InnoDB también se incluye por defecto en todas las distribuciones binarias de MySQL5.0 . En distribuciones fuente, puede activar o desactivar estos motores de almacenamiento configurando MySQL a su gusto. El motor de almacenamiento EXAMPLE es un motor de almacenamiento "tonto" que no hace nada. Puede crear tablas con este motor, pero no puede almacenar datos ni recuperarlos. El objetivo es que sirva como ejemplo en el código MySQL para ilustrar cómo escribir un motor de almacenamiento. Como tal, su interés primario es para desarrolladores. NDB Cluster es el motor de almacenamiento usado por MySQLCluster para implementar tablas que se particionan en varias máquinas. Está disponible en

distribuciones binarias MySQL-Max 5.0. Este motor de almacenamiento está disponible para Linux, Solaris, y Mac OS X . Añadiremos soporte para este motor de almacenamiento en otras plataformas, incluyendo Windows en próximas versiones. El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades de datos sin índices con una huella muy pequeña. El motor de almacenamiento CSV guarda datos en ficheros de texto usando formato de valores separados por comas. El motor de almacenamiento FEDERATED se añadió en MySQL 5.0.3. Este motor guarda datos en una base de datos remota. En esta versión sólo funciona con MySQL a través de la API MySQL C Client. En futuras versiones, será capaz de conectar con otras fuentes de datos usando otros drivers o métodos de conexión clientes. Cuando crea una nueva tabla, puede decirle a MySQL qué tipo de tabla crear añadiendo la opción de tablaENGINE o TYPE al comando CREATE TABLE : CREATE TABLE t (i INT) ENGINE = INNODB; CREATE TABLE t (i INT) TYPE = MEMORY; Aunque se soporta TYPE en MySQL 5.0, ENGINE es el término preferido. Si omite la opción ENGINE o TYPE, se usa el motor de almacenamiento por defecto, quees MyISAM. Puede cambiarlo usando las opciones de arranque --default-storageengine o --default-table-type ,o

cambiando

la

variable

de

sistema storage_engine o table_type . Cuando

se

instala

MySQL

en

Windows

usando

el

MySQLConfigurationWizard, InnoDB es el motor de almacenamiento por defecto en lugar de MyISAM. Para convertir una tabla de un tipo a otro, use un comando ALTER TABLE que indique el nuevo tipo: ALTER TABLE t ENGINE = MYISAM; ALTER TABLE t TYPE = BDB; Si trata de usar un motor de almacenamiento que no está compilado o que está desactivado, MySQL crea una tabla de tipo MyISAM. Este comportamiento es conveniente cuando quiere copiar tablas entre servidores MySQL que soportan distintos motores. (Por ejemplo, en una inicialización de replicación, tal vez su maestro suporte un motor de almacenamiento transaccional para más seguridad, pero los esclavos usan un motor de almacenamiento no transaccional para mayor velocidad.) La sustitución automática del tipo MyISAM cuando se especifica un tipo no especificado puede ser confuso para nuevos usuarios. En MySQL 5.0, se genera una advertencia cuando se cambia un tipo de tabla automáticamente.

MySQL siempre crea un fichero .frm para guardar la definición de tabla y columnas. El índice y datos de la tabla puede estar almacenado en uno o más ficheros, en función del tipo de tabla. El servidor crea el fichero .frm por encima del nivel de almacenamiento del motor. Los motores de almacenamiento individuales crean los ficheros adicionales necesarios para las tablas que administran. Una base de datos puede contener tablas de distintos tipos. Las tablas transaccionales (TSTs) tienen varias ventajas sobre las no transaccionales (NTSTs): Más seguras. Incluso si MySQL cae o tiene problemas de hardware, puede recuperar los datos, mediante recuperación automática o desde una copia de seguridad más el log de transacciones. Puede combinar varios comandos y aceptarlos todos al mismo tiempo con el comando COMMIT (si autocommit está desactivado). Puede ejecutar ROLLBACK para ignorar los cambios (si autocommit está desactivado). Si falla una actualización, todos los cambios se deshacen. (Con tablas no transaccionales, todos los cambios son permanentes.) Motores de almacenamiento transaccionales pueden proporcionar mejor concurrencia para tablas que tienen varias actualizaciones concurrentes con lecturas. En MySQL 5.0, InnoDB usa valores de configuración por defecto si no los especifica. Tablas no transaccionales tienen varias ventajas al no tener una sobrecarga transaccional: 

Más rápidas



Menor requerimiento de espacio.



Menos memoria para actualizaciones Puede combinar tablas transaccionales y no transaccionales en el mismo comando para obtener lo mejor de ambos mundos. Sin embargo, en una transaccion con autocommit desactivado, los cambios de tablas no transaccionales son permanentes inmediatamente y no pueden deshacerse.

Apéndice E. Variables de entorno Este apéndice lista todas las variables de entorno que se usan directa o indirectamente en MySQL. La mayoría de ellas pueden encontrarse en otros apartados de este manual. Tenga en cuenta que cualquier opción de la línea de comandos tiene precedencia sobre los valores especificados en los ficheros de opciones y variables de entorno, y los valores en los ficheros de opciones tienen precedencia sobre los valores de las variables de entorno. En muchos casos, es preferible usar un fichero de opciones en lugar de variables de entorno para modificar el comportamiento de MySQL. Variable Descripción CXX

Nombre del compilador C++ (para ejecutar configure).

CC

Nombre del compilador C (para ejecutar configure).

CFLAGS

Flags para el compilador C (para ejecutar configure).

CXXFLAGS

Flags para el compilador C++ (para ejecutar configure).

DBI_USER

Nombre de usuario por defecto para Perl DBI.

DBI_TRACE

Opciones de traceo para Perl DBI.

HOME

La ruta por defecto para el fichero histórico mysql es $HOME/.mysql_history.

LD_RUN_PATH

Usado para especificar dónde está localizado libmysqlclient.so.

MYSQL_DEBUG

Opciones de traceo de depuración durante la depuración.

MYSQL_HISTFILE

La ruta al fichero histórico mysql . Si esta variable está inicializada, su valor sobreescribe el valor por defecto de$HOME/.mysql_history.

MYSQL_HOST

Nombre de equipo usado por defecto por el cliente de línea de comandos mysql .

MYSQL_PS1

El prompt usado por el cliente de línea de comandos mysql .

MYSQL_PWD

La contraseña por defecto al conectar a mysqld. Tenga en cuenta que su uso es inseguro! Consulte Sección 5.7.6, “Guardar una contraseña de forma segura”.

MYSQL_TCP_PORT

Puerto TCP/IP por defecto.

MYSQL_UNIX_PORT

Nombre de fichero socket Unix por defecto; usado para conexiones con el localhost.

PATH

Usado por la shell para encontrar programas MySQL.

TMPDIR

Directorio donde se crean los ficheros temporales.

TZ

Debe tener el valor de la zona horaria local. Consulte Sección A.4.6, “Problemas con las franjas horarias”.

UMASK_DIR

La máscara de creación de directorios del usuario. Tenga en cuenta que se hace una operación Y lógica con UMASK!

UMASK

La máscara de creación de ficheros del usuario.

USER

Nombre de usuario por defecto para Windows y NetWare usado al concetar con mysqld.

Procedimientos almacenados y funciones

Los procedimientos almacenados y funciones son nuevas funcionalidades de la versión de MySQL 5.0. Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en el servidor. Una vez que se hace, los clientes no necesitan relanzar los comandos individuales pero pueden en su lugar referirse al procedimiento almacenado. Algunas

situaciones

en

que

los

procedimientos

almacenados

pueden

ser

particularmente útiles: Cuando múltiples aplicaciones cliente se escriben en distintos lenguajes o funcionan en distintas plataformas, pero necesitan realizar la misma operación en la base de datos. Cuando la seguridad es muy importante. Los bancos, por ejemplo, usan procedimientos almacenados para todas las operaciones comunes. Esto proporciona un entorno seguro y consistente, y los procedimientos pueden asegurar que cada operación se loguea apropiadamente. En tal entorno, las aplicaciones y los usuarios no obtendrían ningún acceso directo a las tablas de la base de datos, sólo pueden ejectuar algunos procedimientos almacenados. Los procedimientos almacenados pueden mejorar el rendimiento ya que se necesita enviar menos información entre el servidor y el cliente. El intercambio que hay es que aumenta la carga del servidor de la base de datos ya que la mayoría del trabajo se realiza en la parte del servidor y no en el cliente. Considere esto si muchas máquinas cliente (como servidores Web) se sirven a sólo uno o pocos servidores de bases de datos. Los procedimientos almacenados le permiten tener bibliotecas o funciones en el servidor de base de datos. Esta característica es compartida por los lenguajes de programación modernos que permiten este diseño interno, por ejemplo, usando clases. Usando estas características del lenguaje de programación cliente es beneficioso para el programador incluso fuera del entorno de la base de datos. MySQL sigue la sintaxis SQL:2003 para procedimientos almacenados, que también usa IBM DB2. La implementación de MySQL de procedimientos almacenados está en progreso. Toda la sintaxis descrita en este capítulo se soporta y cualquier limitación y extensión se

documenta apropiadamente.

Más

discusión

o

restricciones de

uso

de

procedimientos almacenados se da en Apéndice H, Restricciones en características de MySQL.

PHPAdmin PhpMyAdmin es un programa de libre distribución en PHP, creado por una comunidad sin ánimo de lucro, que sólo trabaja en el proyecto por amor al arte. Es una herramienta muy completa que permite acceder a todas las funciones típicas de la base de datos MySQL a través de una interfaz web muy intuitiva. La aplicación en si no es más que un conjunto de archivos escritos en PHP que podemos copiar en un directorio de nuestro servidor web, de modo que, cuando accedemos a esos archivos, nos muestran unas páginas donde podemos encontrar las bases de datos a las que tenemos acceso en nuestro servidor de bases de datos y todas sus tablas. La herramienta nos permite crear tablas, insertar datos en las tablas existentes, navegar por los registros de las tablas, editarlos y borrarlos, borrar tablas y un largo etcétera, incluso ejecutar sentencias SQL y hacer un backup de la base de datos. Página de phpMyAdmin La página de inicio del proyecto es http://www.phpmyadmin.net/. Desde allí podemos descargar los ficheros de la última versión de la aplicación, que posteriormente debemos colocar en nuestro servidor web. También podemos encontrar a phpMyAdmin dentro de la red Sourceforge.net, que es un sitio que recoge multitud de proyectos "Open Source" (código abierto). Hay varias versiones disponibles, pero es recomendable escoger la que nos aconsejen como la última versión estable (Thelaststable versión). En el momento de escribir este

artículo era la 2.2.6. De modo que, si nuestro sistema es Windows, descargaremos el archivo phpMyAdmin-2.2.6-php.zip Los archivos que hemos descargado son de la versión 4 de PHP, aunque también ofrecen la posibilidad de bajarse los archivos que guardan compatibilidad con la versión 3 de PHP, para que aquellos que no dispongan del motor de PHP más actual. La pagina de inicio del programa también nos ofrece la posibilidad de ver un demo online, aunque nos avisan de que el servidor donde se aloja puede estar caído. http://www.phpmyadmin.net/phpMyAdmin/ Instalando phpMyAdmin Una vez descargada la última versión la tenemos que descomprimir, con lo que obtendremos los ficheros PHP que conforman la herramienta y colocarlos dentro del directorio de publicación de nuestro servidor web. Nota: recordamos que phpMyAdmin es un proyecto escrito en PHP, por lo que necesitaremos colocar los archivos en un servidor web que permita programación de páginas PHP. Además, deberemos acceder a la herramienta a través de la dirección del servidor web, seguida del directorio en el que tenemos los archivos que hemos descomprimido. Por ejemplo, si nuestro servidor es el PWS y hemos colocado los archivos dentro del directorio de publicación (Generalmente C:\Inetpub\wwwroot), en el subdirectorio phpMyAdmin, debemos escribir algo como http://localhost/phpMyAdmin Si tuviéramos instalado un servidor Apache los colocaríamos en la carpeta que hayamos indicado como "documentRoot", que suele ser htdocs. Lo primero que podemos leer es el archivo de la documentación, que encontramos junto con los archivos de phpMyAdmin. Explica datos generales del programa, como sus requerimientos, instrucciones de instalación, configuración, preguntas frecuentes, etc. Posteriormente, tal como explica la documentación, hay que editar el archivo config.inc.php para cambiar los valores de host de la base de datos (ordenador que tiene instalado el MySQL) y el usuario y password con el que nos conectamos. Se pueden configurar muchos aspectos en la herramienta, aunque ahora solo comentaré los que he encontrado esenciales para hacerla funcionar, en la documentación tenemos un apartado dedicado por completo a especificar el sentido de cada variable. $cfgPmaAbsoluteUri Debemos asignarlo a la ruta completa necesaria para acceder a phpMyAdmin. Podría ser algo como http://localhost/phpMyAdmin o http://www.midominio.com/phpMyAdmin $cfgServers[$i]['host'] string El nombre del host de la base de datos. Por ejemplo localhost, si es que es el mismo ordenador donde estamos instalandosphpMyAdmin y la base de datos. También podría ser la dirección IP del ordenador al que nos conectamos. $cfgServers[$i]['user'] string $cfgServers[$i]['password'] string El par usuario/contraseña que debe utilizar phpMyAdmin para conectarse con el servidor MySQL. Con estas sencillas configuraciones ya podemos acceder a phpMyAdmin y trabajar con nuestra base de datos a golpe de ratón, que resulta muy de agradecer teniendo en

cuenta que, en caso de no tener esta herramienta u otra parecida, la otra opción consistiría en utilizar el lenguaje SQL, y, en caso de que la base de datos esté alojada remotamente en Internet, no podríamos hacerlo sino es con acceso por TELNET al servidor de la base de datos.

DBMS Evolución Inicialmente, en los años 40s, los Sistemas de Archivos generados a través de lenguajes de programación no propietarios como Cobol y Fortran (vigentes en la actualidad), permiten almacenar los datos a través de archivos planos con funciones básicas de lectura y escritura sobre ellos. En 1964, se conciben los primeros Gestores de Base de Datos (DBMS: Database Management System), por medio de los cuales se pretende dar un viraje a los Sistemas de Archivos, los cuales se limitan a la estructuración del almacenamiento físico de los datos. Con los DBMS se crea el concepto de Administración de los datos, por medio de actividades integradas que permiten verlos físicamente en un solo almacenamiento pero lógicamente se manipulan a través de esquemas compuesto por estructuras donde se establecen vínculos de integridad, métodos de acceso y organización física sobre los datos, permitiendo así obtener valores agregados de utilización tales como: manejo de usuarios, seguridad, atomicidad e independencia física y lógica de los datos, entre otros. El primer gestor de bases de datos (DBMS) comercial, IDS: Integrated Data Store , se crea bajo el concepto del Modelo de Datos de Red (Bachgman, 1965); luego se desarrolla el IMS: Information Management System , sobre el concepto del Modelo de Datos Jerárquico. Estos DBMSs eran accesados normalmente por lenguajes de programación como Cobol usando interfasesde bajo nivel haciendo que las tareas de creación de aplicaciones y mantenimiento de los datos fuesen controlables, pero aún complejas.

A medida que evolucionaban los DBMS, los lenguajes de programación también lo hacían. En 1967 surge el primer lenguaje de programación orientado a objetos, Simula, el cual fue propuesto para simulación de actividades. En este los procedimientos podían ser asociados a un tipo para representar el comportamiento de una instancia, introduciendo así el concepto de Clase. Simula, soporta paralelismo permitiendo muchas entidades interactivas en una simulación. Además comparte objetos acoplando datos y procedimientos. Luego se genera una nueva noción, donde las bases de datos deben almacenar por medio de una estructura tabular llamada relación o tabla (Codd,1970), compuesta por filas y columnas, accesando dichas relaciones a través de un lenguaje de alto nivel no procedural (declarativo). De esta forma en los años 80s surgen varios productores de DBMS Relacionales (RDBMS) como Oracle, Informix, Ingres y DB2, además de otros lenguajes orientados a objetos como el C++, Java (antes el Oak), Eiffel, y Smalltalk adoptando y mejorando el concepto de clase pero su desarrollo se hace independiente de los DBMSs. Comenzando los años 80’s ya se siente la necesidad de que los DBMS actuales manipulen objetos complejos y estructuras como las usadas en sistemas CAD y CASE, entre otras. A partir de esto se da inicio a dos grandes tendencias: los ORDBMS (ObjectRelationalDatabase Management System) los cuales se proyectan como una extensión de los RDBMS hacia el paradigma OO, y los OODBMS (ObjectOrientedDatabase Management System) estarían disponibles para almacenar y manipular las clases, los objetos, la asociación entre ellos y sus métodos. Así, finalizando los años 80s se crean los OODBMSs por medio de productores como O2, ObjectDesign y Objectivity, entre otros. Pero realmente se puede decir que estos no se hicieron tan comerciales como los existentes RDBMS ya que el concepto de Orientación a Objetos se seguía manejando muy a nivel del lenguaje de programación, sin que se trabajaran estructuras de almacenamiento Orientadas a Objetos dependientes de estos . Así, en 1991 surge la ODMG (ObjectDatabase Management Group) el cual estandariza los OODBMSs a partir del ODMG-93 y luego en 1992 el comité ANSI X3H2 inicia un trabajo en SQL3, del cual surgen los DBMS objeto relacional ORDBMS. Este trabajo fue programado para finalizarse en 1995, pero aún se sigue trabajando en este con un tiempo límite de terminación, en el año 1999.

Por medio de la tabla 1 se puede observar la clasificación que se ha hecho de las versiones que han generado los diferentes vendedores de acuerdo a la evolución de los modelos:

Tabla

1.

ProductosVendedor Oracle Sybase Informix IBM

UniSQL

Productos

RDBMS Oracle 7.x System 10/11 Dynamic Server DB/2

DBMS

por

ORDBMS Oracle 8.x

Universal Server (Ilustra) Universal Database (DB/2 Extenders) UniSQL/X

Vendedor,

OODBMS

1997.

Unisys ComputerAssociates Gemstone O2 ObjectDesign Objectivity Versant

Esquema de un DBMS

OSMOS OpenIngres

Jasmine Gemstone O2 ObjectStore Objectivity/DB Versant ODBMS

Lenguajes del DBMS En la estructura básica de un Sistema Manejador de Base de Datos se enuncian dos lenguajes que permiten trabajar sobre la base de datos. Estos lenguajes estandar son: 

DDL (Data Definitionlanguage): Lenguaje de Definición de Datos. Por medio de este el DBMS identifica las descripciones de los elementos de los esquemas y almacena la descripción del esquema en el catálogo del DBMS. Por medio de este el DBMS especifica el esquma conceptual e interno (Base de datos Almacenada).



SDL (StoreDefinitionlanguage): Lenguaje de definición de almacenamiento. Es utilizado por el DBMS para especificar el esquema interno que corresponde a la Base de Datos Almacenada.



VDL (View Definitionlanguage): Lenguaje de Definición de Vistas. Es utilizado por el DBMS para especificar las vistas del usuario y sus correspondiencias con el esquema conceptual.

En las Bases de Datos Relacionales, el SQL, representa una combinación de los anteriores. 

DML (Data Manipulationlanguage): Lenguaje de Manipulación de Datos. Permite la manipulación de las operaciones de Inserción, Eliminación y Modificación. o Tipos de DML's:  De alto Nivel o No por procedimientos: SQL.  De bajo Nivel o por procedimientos. Usuarios de un Sistema Manejador de Base de Datos  Personal del DBA  Usuarios Exporádicos  Programadores de Aplicaciones  Usuarios paramétricos ARQUITECTURA DE UN MANEJADOR DE BASES DE DATOS (DBMS) Nota: Las partes utilizadas para ejemplificar la arquitectura se refieren a Oracle Una base de datos en ejecución consta de 3 cosas: 

Archivos o Control (ctl): almacenan información acerca de la estructura de archivos de la base. o Rollback (rbs): cuando se modifica el valor de alguna tupla en una transacción, los valores nuevos y anterioresse almacenan en un archivo, de modo que si ocurre algún error, se puede regresar (rollback) a un estado anterior. o Redo (rdo): bitácora de toda transacción, en muchos dbms incluye todo tipo de consulta incluyendo aquellas que no modifican los datos. o Datos (dbf): el tipo más común, almacena la información que es accesada en la base de datos. o Indices (dbf) (dbi): archivos hermanos de los datos para acceso rápido.

o





Temp (tmp): localidades en disco dedicadas a operaciones de ordenamiento o alguna actividad particular que requiera espacio temporal adicional. Memoria o Shared Global Area (SGA): es el área más grande de memoria y quizás el más importante  Shared Pool: es una caché que mejora el rendimiento ya que almacena parte del diccionario de datos y el parsing de algunas consultas en SQL  Redo Log Buffer: contiene un registro de todas las transacciones dentro de la base, las cuales se almacenan en el respectivo archivo de Redo y en caso de siniestro se vuelven a ejecutar aquellos cambios que aún no se hayan reflejado en el archivo de datos (commit).  Large Pool: espacio adicional, generalmente usado en casos de multithreading y esclavos de I/O.  Java Pool: usado principalmente para almacenar objetos Java o Program Global Area (PGA): información del estado de cursores/apuntadores o User Global Area(UGA): información de sesión, espacio de stack Procesos o Threading o System Monitor: despierta periódicamente y realiza algunas actividades entre las que se encuentran la recuperación de errores, recuperación de espacio libre en tablespaces y en segmentos temporales. o Process Monitor: limpia aquellos procesos que el usuario termina de manera anormal, verificando consistencias, liberación de recursos, bloqueos. o DatabaseWriter: escribe bloques de datos modificados del buffer al disco, aquellas transacciones que llegan a un estado de commit. o Log Writer: escribe todo lo que se encuentra en el redo log buffer hacia el redo file o Checkpoint: sincroniza todo lo que se tenga en memoria, con sus correspondientes archivos en disco

Instancia de una bd en Oracle

Rotación de segmentos de rollback

Rotación de bitácoras de Redo

Ejemplo del esquema de una base de datos en Oracle

Utilización del Shared Pool

Ejemplo del control de transacción Los Sistemas de Bases de Datos Relacionales (RDBMS) Los sistemas de bases de datos relacionales RDBMS (RelationalDatabase Management System, por sus siglas en Inglés) tales como Oracle, MySQL, SQL Server, PostgreSQL, Informix, entre otros, le permiten ejecutar las tareas que se mencionan a continuación, de una forma entendible y razonablemente sencilla: Le permiten ingresar datos al sistema. Le permiten almacenar los datos. Le permiten recuperar los datos y trabajar con ellos. Le proveen herramientas para capturar, editar y manipular datos. Le permiten aplicar seguridad. Le permiten crear reportes e informes con los datos. DEFINICIÓN Y TERMINOLOGÍA DE UN RDBMS Los sistemas de base de datos relacionales son aquellos que almacenan y administran de manera lógica los datos en forma de tablas. Una TABLA es, a su vez, un método para presentar los datos en la forma de filas y columnas. Cada columna representa un campo único de un registro. Varias de estas columnas o campo componen un registro, proveyendo información significativa e interrelacionada. Cada registro es representado en una fila. Una tabla puede consistir en varias columnas. Muchas de las tablas que poseen datos interrelacionados e interdependientes son agrupadas por medio de el establecimiento de relaciones entre ellas. Al administrar las tablas y sus relaciones, encontramos los medios para insertar, borrar, consultar y actualizar la información de un sistema RDBMS. En la tabla anterior, la tabla Empleados consiste en tres columnas y tres filas. Las columnas o campo conforman un registro lógico, correspondiente a un empleado.

La tabla Empleados esta relacionada con la tabla de Departamentos por medio de una columna "Numero de Departamento" que aparece en ambas tablas. Llave Primaria Hemos visto que los datos son almacenados de manera lógica en tablas en la Bases de datos relacionales. Cada tabla tiene un nombre único. Para identificar una fila particular en una tabla, se usa una columna o combinación de columnas. Esta columna debe ser tal que identifique de manera única e inequívoca cada fila. No puede haber mas de dos filas (registros) en una tabla que tengan el mismo valor para la columna que haya sido elegida como llave primaria. Una columna identificada como la llave primaria no puede tener valores duplicados no nulos. Por ejemplo, considerando la tabla de Empleados presentada en la Figura No. 1, podemos ver que cada empleado tiene un único numero de empleado. La columna "NUM-EMP" puede ser escogida como la llave primaria. Similarmente, la columna "NUM-DEPT" en la tabla de Departamentos puede ser igualmente una llave primaria. Llave Foránea La llave primaria y la llave foránea son usadas para establecer relaciones entre tablas. En la Figura No. 1 el dominio de los valores de la columna "NUM-DEPT" de la tabla Empleados se encuentra dentro del rango de valores de la columna "NUM-DEPT" de la tabla Departamentos. Un empleado deber pertenecer a un Departamento que esté listado en la tabla Departamentos. Se considera entonces que la columna "NUM-DEPT" en la tabla Empleados es una llave foránea. De esta manera, la existencia de esta llave foránea en la tabla Empleados controla que no pueda ser ingresado un nuevo registro de un empleado si este no pertenece primero a un Departamento. Si el empleado que desea ingresarse a la tabla trabaja en un Departamento que no esta listado en la tabla Departamentos, primero debe crearse el registro del Departamento en su respectiva tabla, y luego si procedemos a ingresar al empleado. Este tipo de control que impone la asignación de una llave foránea en una tabla es de mucha utilidad para evitar la existencia de registros huérfanos y para evitar la incongruencia de datos, temas que veremos mas adelante. Además, como dijimos al principio, la llave foránea nos permite relacionar dos tablas, lo cual nos permite compartir y repartir la información de manera que no tengamos los mismos datos duplicados en varias tablas. Estos conceptos serán aterrizados en la sección de Normalización de tablas que se estudiará en un capitulo posterior. En los esquemas de tablas, las llaves primarias están subrayadas. Igualmente diagramaremos restricciones de integridad referencial a través de líneas de conexión que van desde cada llave foránea hasta la llave primaria que referencie. Para que haya mejor claridad, la punta de la flecha deberá apuntar hacia la llave primaria de la tabla referenciada. Nulos Un Nulo se puede interpretar como un valor indefinido o como ningún valor. Los nulos son usados en las columnas donde se desconozca su valor. Un nulo no significan espacios en blanco. Un valor "nulo" no puede ser usado para hacer ningún cálculo u operaciones de comparación. Un "nulo" puede ser comparable a un infinito. Un "nulo" no es igual a otro "nulo". Vistas

Los RDBMS gestionan la estructura física de los datos y su almacenamiento. Con esta funcionalidad, el RDBMS se convierte en una herramienta de gran utilidad. Sin embargo, desde el punto de vista del usuario, se podría discutir que los RDBMS han hecho las cosas más complicadas, ya que ahora los usuarios ven más datos de los que realmente quieren o necesitan, puesto que ven la base de datos completa. Conscientes de este problema, los RDBMS proporcionan un mecanismo de vistas que permite que cada usuario tenga su propia vista o visión de la base de datos. El lenguaje de definición de datos permite definir vistas como subconjuntos de la base de datos. Las vistas, además de reducir la complejidad permitiendo que cada usuario vea sólo la parte de la base de datos que necesita, tienen otras ventajas: Las vistas proporcionan un nivel de seguridad, ya que permiten excluir datos para que ciertos usuarios no los vean. Las vistas proporcionan un mecanismo para que los usuarios vean los datos en el formato que deseen. Una vista representa una imagen consistente y permanente de la base de datos, incluso si la base de datos cambia su estructura.

Htdocs D: \ FTP \ Usuario \ htdocs directorio Web raíz, donde se coloca el contenido del sitio web como index.html y default.asp. ¿Quién puede editar htdocs. Cualquier persona con acceso de escritura al árbol de NetBSD CVS puede htdocs caja y hacer los cambios, y de hecho se anima a hacerlo. En particular, los desarrolladores agregar funciones y los conductores deben actualizar el hardware adecuado o página de inicio del puerto. Utilice su nombre de usuario NetBSD.org contra cvs.NetBSD.org y la salida 'htdocs'. Lo que se necesita para editar htdocs (arriba) Lea la introducción CVS. Instale meta-pkgs/netbsd-www, que proporciona las herramientas necesarias para construir el sitio web. Por favor, asegúrese de que usted tiene por lo menos textproc / docbook-xsl> = 1.68.1 y textproc / docbook-sitio web de> = 2.6.0nb1 (requiere

automáticamente meta-pkgs/netbsd-www 1,4, pero las versiones anteriores aceptado revisiones anteriores de la necesaria herramientas, que no puede apropiarse). Tenga en cuenta que cualquier LOCALBASE especial o PKG_SYSCONFBASE configuraciones en / etc / mk.conf no deben ser protegidos por BSD_PKG_MK como sus valores son utilizados por los makefileshtdocs. También instale meta-pkgs/netbsd-doc-print para regenerar la guía NetBSD y algunas otras páginas que dependen de la guía. Establezca su CVSROOT como se indica y ejecutar cvscheckouthtdocs