Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Agenda
Presentacin. Base de Datos Actuales. Consideraciones de Diseo e Implementacin en la Web. Lenguajes y Acceso a Base de Datos. Ejemplos. Recomendaciones
Presentacin
Gabriel Vegas
Manapro Consultores
Lder de Proyectos
Consultores Micorp
Consultor
Open Source
Caractersticas
Se adapta a cualquier tipo de Site. SQL Server XML. Hasta 32 Procesadores, 64 GB de Memoria, Tamao Mximo de Bases de datos casi Ilimitado. De fcil instalacin, uso y administracin.
Caractersticas
Para sites Medianos (10 a 100 Millones de registros o 100Mb por tabla, aunque soporta tablas en TB). Multiplataforma Gratis. Requiere pocos recursos de Hardware.
Caractersticas
Es un Object-Relational database Objectmanagement systems (ORDBMS) Multiplataforma Gratis. Requiere pocos recursos de Hardware. Posee todas las funcionalidades de los RDBMS Comerciales
La finalidad de la Normalizacin es reducir las inconsistencias y redundancias de los datos, facilitar el mantenimiento y evitar las anomalas en las manipulaciones de datos. Realidad: Realidad: En sites donde hay grandes cantidades de datos y consultas, a veces duplicar informacin es la solucin a un join innecesario, complicado o costoso. Pero se necesitan procesos para mantener la consistencia de los datos.
La separacin del site en capas lgicas para la Interfaz, la lgica del negocio y los datos. (3 Capas)
Para obtener un buen diseo de una aplicacin de n-capas es necesario poder colocar los nmtodos de las clases correctas en las capas correctas. Como Resultado se obtiene:
Aplicaciones verstiles Escalabilidad Buen desempeo. Seguridad y Auditoria
Realidad: Realidad: Es totalmente cierto y 100% funcional. Lo importante es hacer estas capas de manera que se puedan fcilmente ser manipuladas y modificadas. Hay que apoyarse en la arquitectura que tenemos para poder sacar provecho a nuestro site.
HTML, DHTML, CSS, XML, XSL, Languages Scripts, Browsers, Mobiles. ActiveX, CORBA, Componentes JAVA, Web Services RDBMS
Ejemplo: Uso de Componentes COM+. Aunque suele ser una forma cmoda de programar y reutilizar cdigo, no es siempre fcil de administrar y mantener sin afectar el funcionamiento del site. (Registro de DLLs)
Ejemplo: Separacin de Cdigo en Lenguajes Scripts (ASP, PHP, JSP). Como resultado se obtienen libreras para ser usadas mediante Includes, asi se separa logicamente la capa de presentacin de la capa de negocios.
Para sites que estn basados en contenido, el cual no es alterado o modificado frecuentemente, la generacin de archivos Estticos o archivos de Datos (Ej.: XML) es una tendencia global usada para aliviar la carga a la Base de Datos y al Servidor Web. Los datos de igual forma son almacenados en la Base da datos, pero el acceso a los datos es mediante el uso de estos archivos generados.
Pregunta: Para que voy a guardar algo en Base de Datos que nunca mas voy a modificar?. Elimino la Base de datos? Respuesta: Si mi site necesita hacer bsquedas sobre el contenido, lo mejor es hacer la bsqueda sobre la Base de Datos. Si no es as, es bueno tener la Base de Datos para la edicin y respaldo de esta data.
Las Bsquedas en los sites generalmente se realizan sobre campos netamente de texto (Varchar o Text), los cuales no deberan ser indexados, debido a que los altos costos de indexacin para inserciones y modificaciones.
Estas bsquedas en campos texto se hace generalmente mediante el uso de comandos LIKE.
Ej.: Select * from Tabla Where Campo_Busqueda Like arte* Si el campo Campo_Busqueda estuviera indexado, se ejecutaria rapidamente debido a que la indexacion en ste caso seria mediante un arbol-B. El arbolresultado seria algo como "arte moderno", "arte culinario", "arte abstracto", etc.
Sin embargo, si la bsqueda es menos especfica, las cosas ya no son tan rpidas. Por ejemplo, para buscar "todo lo relacionado con arte", lo ms probable es que tengamos que escribir un query como.
Ej.: Select * from Tabla Where Campo_Busqueda Like *arte* Puesto que el ndice es mucho ms pequeo que la tabla, finalmente esto es mejor que buscar a travs de toda la tabla, pero definitivamente esto no es lo ms eficiente.
Por otra parte, al ejecutar la consulta anterior, probablemente se encontrarn cadenas como las siguientes "me gusta pegarte", "artefactos explosivos" y "deja de quejarte".
Soluciones:
SQL Server 2000 (desde la versin 7) desarrolla el Microsoft Search, un motor de indexacin y de bsqueda de texto que realizar consultas de texto mas eficaces y sofisticadas sobre columnas que almacenan datos basados en caracteres que con el operador LIKE y todos sus diferentes caracteres de comodn. Esto lo hace mediante un catlogo de texto, que reside fuera de la Base de Datos y que almacena todos los ndices de textos seleccionados.
Soluciones:
Sintaxis en SQL Server 2000 para consulta de textos:
Soluciones:
Ejemplo SQL Server 2000 para consulta de textos: Select * from Tabla Where CONTAINS(Campo_Busqueda,arte) CONTAINS(Campo_Busqueda,arte) Select * from Tabla Where CONTAINS(*,arte AND *cu) CONTAINS(*,arte
Soluciones:
Ejemplo SQL Server 2000 para consulta de textos: Select * from Tabla Where FREETEXT(Campo_Busqueda,todo lo FREETEXT(Campo_Busqueda, relacionado con arte) arte)
Soluciones:
Ejemplo SQL Server 2000 para consulta de textos:
Select Tabla.Id, Tabla.Nombre, KeyTabla.Valor from Tabla INNER JOIN CONTAINSTABLE (TablaIndex, Campo_Busqueda, arte") AS Campo_Busqueda, KEY_TABLA ON Tabla.id = KEY_TABLA.[KEY] Tabla.id WHERE KEY_TABLA.RANK > 10 ORDER BY KEY_TABLA.[KEY] DESC
Soluciones:
MySql implementa el tipo FULLTEXT, se usan en FULLTEXT, tablas del tipo MyISAM, y pueden contener uno o MyISAM, ms campos del tipo CHAR, VARCHAR y TEXT. Est diseado para facilitar y optimizar la bsqueda de palabras clave en tablas que tienen grandes cantidades de informacin en campos de texto.
Soluciones:
Creacin de FULLTEXT en MySql CREATE TABLE nombreTabla(
campo1 TIPO, campo2 TIPO, FULLTEXT [nombreIndice] (campo1 [campo2,...]) );
Soluciones:
Sintaxis en MySQL para consulta de textos:
MATCH y AGAINST
SELECT id, titulo, contenido FROM articulos WHERE MATCH(titulo,contenido) AGAINST('Java') se buscarn todos los artculos que hablen acerca de Java
Soluciones:
Relevancia en MySQL para consulta de textos:
Para cada fila de la tabla, la funcin MATCH() regresa un valor de relevancia, esto es una medida entre la cadena que se busca y el texto en las columnas que se nombran en MATCH().
SELECT id, titulo, MATCH(titulo,contenido) AGAINST('Java') AS relevancia FROM articulos WHERE MATCH(titulo,contenido) AGAINST('Java');
Soluciones:
Relevancia en MySQL para consulta de textos:
La relevancia es calculada basada en el nmero de palabras en una fila, el nmero de palabras nicas en esa fila, el nmero total de palabras en la coleccin, y el nmero de documentos (filas) que contienen una palabra en particular
Soluciones:
Modificador IN BOOLEAN MODE en MySQL Con esto, se tiene un mayor control acerca del tipo de bsquedas que se quieren hacer, por ejemplo, se pueden buscar palabras, combinaciones de palabras, porciones de palabras, etc. SELECT id, titulo, contenido FROM articulos WHERE MATCH(titulo,contenido) AGAINST('+Java -Visual' IN BOOLEAN MODE);
Esta consulta regresa todas las filas que tiene la palabra Java, pero que no contienen la palabra Visual.
Al realizar Inserciones, actualizaciones y eliminaciones, los RDBMS realizan bloqueos a nivel de tablas, registros o de columnas, para as poder garantizar integridad y consistencia en accesos concurrentes. Cuando se realiza una consulta sobre una o mas tablas, pueden o no realizar bloqueos sobre estas tablas, todo depende de el nivel de concurrencia sobre la tabla.
En una tabla, no suelen hacerse bloqueos en comandos tipo SELECT, pero en altos niveles de concurrencia, puede pasar que se bloqueen tablas y la hora de hacer actualizaciones de la tabla, existan bloqueos para ndices, haciendo difcil y lenta la actualizacin.
Se debe identificar que tablas son las mas concurridas y tratar de forzar a que los comandos SELECT no afecten el desenvolvimiento de site.
En SQL Server 2000 existen clusulas como: Select * From TABLA (NOLOCK) (NOLOCK) WHERE .
esto le indica explcitamente al query que no realice bloqueos para esta bsqueda.
hacen que querys del que solo se necesitan un pequeo grupo de columnas generen overhead al traer campos no necesarios.
Es la mejor y la forma mas comn de mejorar el performance de una Base de Datos. Ayuda a obtener registros de manera mas rpida a que si no la tuviera. Pero los ndices presentan un overhead, por lo que hay que manejarlos de manera consiente. La representacin mas comn de estos ndices es basado en un rbol-B rbol-
SQL Server 2000 recopila informacin estadstica sobre los ndices y los datos de columna almacenados en la base de datos. El optimizador de consultas de SQL Server utiliza estas estadsticas para seleccionar el plan ms eficaz de ejecucin de las consultas INSERT, SELECT, DELETE o UPDATE.
Postgres no posee de procesos de mantenimiento de ndices. Por lo general este mantenimiento debe venir de la carga diaria de la Base de Datos. Existen comandos como:
EXPLAIN : muestra el plan de ejecucin de un query ANALYZE : recolecta informacin estadstica del contenido de las tablas. Estas estadsticas son almacenadas para ayudar al planificador de Querys a determinar el mejor plan de ejecucin.
Estas utilidades dada por los sistemas se basan en muestreos en el caso de tablas grades. Es ideal usar este tipo de herramientas peridicamente para entonar Base da Datos, detectar problemas y optimizar querys.
Entre los lenguajes script mas comunes estn: ASP, PHP, JSP. Estos Lenguajes cuentan con herramientas para el acceso a Base da Datos ya sea de manera nativa o por uso de otros componenetes. ADO, RDO, ODBC y OLE-DB son los medios OLEmas comunes en ASP para realizar el acceso a datos.
PHP posee libreras propias incorporadas a su core para acceder casi todas las Base de Datos. Java Database Connectivity (JDBC) provee la manera estndar para la comunicacin con RDBMS.
Usando Lenguajes como VB, .NET, Java en la capa de Lgica de Negocios mediante COM+, Web Services o Componentes Java. Estos lenguajes tambin se basan en libreras y objetos propios como ADO, OLE-DB, JDBC y OLEODBC para la conexin de con la Base de Datos.
Ejemplos
TerraServer
(http://terraserver.microsoft.com)
Es una Base de Datos de 3.3 TB de imgenes areas y de topografa de alta resolucin. El ambiente esta conformado por 4 nodos basados en Windows 2000 Data Center Edition. Usa solo 3 nodos y cada nodo soporta una Base de Datos SQL Server 2000 de 2.0 TB que contiene las imgenes y meta-data. meta-
Ejemplos (TerraServer)
Ejemplos (TerraServer)
Ejemplos (TerraServer)
Ejemplos (TerraServer)
Ejemplos
Amazon.Com
(http://www.amazon.com)
Amazon funciona usando una herramienta llamada ObjectStore (http://www.objectstore.net). Es una Base de Datos de Objetos el cual se mantiene en un Cache Distribuido.
Ejemplos
Amazon.Com (cont.)
Su Arquitectura propaga cada cambio de pagina desde sus servidores principales a los servidores web de manera inmediata, en promedio, los archivos de data son actualizados cada 1 o 2 minutos.
Recomendaciones
De Diseo:
Realizar un Diseo Normalizado, pero flexible a cambios. Definir la plataforma y la arquitectura a usar, as como las capas y los elementos que la componen. Identificar que Entidades del diseo pueden ser candidatos a ser almacenados en disco.
Recomendaciones
Tcnicas:
Al momento de crear fsicamente una Base de Datos, definir los ndices a usar basado en las consultas mas frecuentes. Si el RDBMS seleccionado soporta Stored Procedures, pues adelante. Al hacer una consulta, evitar el overhead, traer solamente aquellos campos necesarios o que no sean costosos.
Ej. Evitar SELECT * FROM Tabla
Recomendaciones
Tcnicas: (cont.)
Usar clusulas en caso de ser necesario, para evitar Bloqueos de tablas en comandos SELECT Usar SQL y funciones estndar que permitan portabilidad entre manejadores (deseado). Hacer conexiones a Base de Datos utilizando la mejor herramienta a la mano.
Recomendaciones
Administrativas:
Backups Estudiar el performance de la Base de Datos (conexiones simultaneas, requests por segundo, etc.) Revisar el uso de ndices, y realizar tareas de reindexacin de tablas peridicamente. Definir los campos necesarios para la bsquedas FULLTEXT.