Está en la página 1de 56

Base de Datos en Internet

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
 

Egresado de la UCV Loquesea.Com Inc. NYC


Senior DBA & Project Manager

Manapro Consultores
Lder de Proyectos

Consultores Micorp
Consultor

Base de Datos Actuales


Comerciales
  

Microsoft SQL Server 2000 Oracle 9i Informix

Open Source
 

MySQL versin 4.X PostgreSQL versin 7.4.X

Microsoft SQL Server 2000


http://www.microsoft.com/sql/

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.

MySql versin 4.X


http://www.mysql.com/

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.

PostgreSQL versin 7.4.X


http://www.postgresql.org/

Caractersticas


   

Es un Object-Relational database Objectmanagement systems (ORDBMS) Multiplataforma Gratis. Requiere pocos recursos de Hardware. Posee todas las funcionalidades de los RDBMS Comerciales

Consideraciones de Diseo e Implementacin en la Web


Normalizacin y Redundancia Diseo de Capas Generacin en Disco Bsquedas Bloqueos ndices

Consideraciones de Diseo e Implementacin en la Web


Estos aspectos estn relacionados entre si y definen parte del diseo de base de datos y del site, para obtener un alto site, rendimiento y performance.

Consideraciones de Diseo e Implementacin en la Web


Normalizacin y Redundancia


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.

Consideraciones de Diseo e Implementacin en la Web


Diseo de Capas


La separacin del site en capas lgicas para la Interfaz, la lgica del negocio y los datos. (3 Capas)

Consideraciones de Diseo e Implementacin en la Web


Diseo de Capas (cont.)


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

Consideraciones de Diseo e Implementacin en la Web


Diseo de Capas (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Diseo de Capas (cont.)


Algunos Elementos Involucrados:


Capa de Presentacin:


HTML, DHTML, CSS, XML, XSL, Languages Scripts, Browsers, Mobiles. ActiveX, CORBA, Componentes JAVA, Web Services RDBMS

Capa de Lgica de Negocio: Negocio:




Capa de Datos: Datos:




Consideraciones de Diseo e Implementacin en la Web


Diseo de Capas (cont.)


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)

Consideraciones de Diseo e Implementacin en la Web


Diseo de Capas (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Generacin en Disco


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.

Consideraciones de Diseo e Implementacin en la Web


Generacin en Disco (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Generacin en Disco (cont.)


Sites en que aplica:


Administradores de Contenido Site de Noticias Blogs o Bitcoras Personales. Site de Estadsticas, Indicadores, etc.

Formas en las que aplica:


Parcial: No toda la pagina servida es generada como esttica. Total: Toda la pagina es generada.

Consideraciones de Diseo e Implementacin en la Web


Bsquedas


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.

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


Por otra parte, al ejecutar la consulta anterior, probablemente se encontrarn cadenas como las siguientes "me gusta pegarte", "artefactos explosivos" y "deja de quejarte".

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


Soluciones:
Sintaxis en SQL Server 2000 para consulta de textos:
  

CONTAINS FREETEXT CONTAINSTABLE y FREETEXTTABLE

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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)

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


Soluciones:
Creacin de FULLTEXT en MySql CREATE TABLE nombreTabla(
campo1 TIPO, campo2 TIPO, FULLTEXT [nombreIndice] (campo1 [campo2,...]) );

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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');

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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

Consideraciones de Diseo e Implementacin en la Web


Bsquedas (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Bloqueos


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.

Consideraciones de Diseo e Implementacin en la Web


Bloqueos (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Bloqueos (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


Bloqueos (cont.)


Otro de los factores que afectan el desempeo y es el uso de *. Instruciones como : *


Select * From TABLA WHERE .

hacen que querys del que solo se necesitan un pequeo grupo de columnas generen overhead al traer campos no necesarios.

Consideraciones de Diseo e Implementacin en la Web


ndices


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-

Consideraciones de Diseo e Implementacin en la Web


ndices (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


ndices (cont.)


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.

Consideraciones de Diseo e Implementacin en la Web


ndices (cont.)


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.

Lenguajes y Acceso a Base de Datos


Leguajes Script


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.

Lenguajes y Acceso a Base de Datos


Leguajes Script (cont.)


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.

Lenguajes y Acceso a Base de Datos


Otros Leguajes


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.

También podría gustarte