Title: Base de Datos en Internet
1Base de Datos en Internet
2Agenda
- Presentación.
- Base de Datos Actuales.
- Consideraciones de Diseño e Implementación en la
Web. - Lenguajes y Acceso a Base de Datos.
- Ejemplos.
- Recomendaciones
3Presentación
- Gabriel Vegas
- Egresado de la UCV
- Loquesea.Com Inc. NYC
- Senior DBA Project Manager
- Manapro Consultores
- Líder de Proyectos
- Consultores Micorp
- Consultor
4Base de Datos Actuales
- Comerciales
- Microsoft SQL Server 2000
- Oracle 9i
- Informix
- Open Source
- MySQL versión 4.X
- PostgreSQL versión 7.4.X
5Microsoft SQL Server 2000
- http//www.microsoft.com/sql/
- Características
- Se adapta a cualquier tipo de Site.
- SQL Server XML.
- Hasta 32 Procesadores, 64 GB de Memoria, Tamaño
Máximo de Bases de datos casi Ilimitado. - De fácil instalación, uso y administración.
6MySql versión 4.X
- http//www.mysql.com/
- Características
- 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.
7PostgreSQL versión 7.4.X
- http//www.postgresql.org/
- Características
- Es un Object-Relational database management
systems (ORDBMS) - Multiplataforma
- Gratis.
- Requiere pocos recursos de Hardware.
- Posee todas las funcionalidades de los RDBMS
Comerciales
8Consideraciones de Diseño e Implementación en la
Web
- Normalización y Redundancia
- Diseño de Capas
- Generación en Disco
- Búsquedas
- Bloqueos
- Índices
9Consideraciones de Diseño e Implementación en la
Web
- Estos aspectos están relacionados entre si y
definen parte del diseño de base de datos y del
site, para obtener un alto rendimiento y
performance.
10Consideraciones de Diseño e Implementación en la
Web
- Normalización y Redundancia
- La finalidad de la Normalización es reducir las
inconsistencias y redundancias de los datos,
facilitar el mantenimiento y evitar las anomalías
en las manipulaciones de datos. - Realidad En sites donde hay grandes cantidades
de datos y consultas, a veces duplicar
información es la solución a un join innecesario,
complicado o costoso. Pero se necesitan procesos
para mantener la consistencia de los datos.
11Consideraciones de Diseño e Implementación en la
Web
- Diseño de Capas
- La separación del site en capas lógicas para la
Interfaz, la lógica del negocio y los datos. (3
Capas)
12Consideraciones de Diseño e Implementación en la
Web
- Diseño de Capas (cont.)
- Para obtener un buen diseño de una aplicación de
n-capas es necesario poder colocar los métodos de
las clases correctas en las capas correctas. - Como Resultado se obtiene
- Aplicaciones versátiles
- Escalabilidad
- Buen desempeño.
- Seguridad y Auditoria
13Consideraciones de Diseño e Implementación en la
Web
- Diseño de Capas (cont.)
- Realidad Es totalmente cierto y 100 funcional.
- Lo importante es hacer estas capas de manera que
se puedan fácilmente ser manipuladas y
modificadas. Hay que apoyarse en la arquitectura
que tenemos para poder sacar provecho a nuestro
site.
14Consideraciones de Diseño e Implementación en la
Web
- Diseño de Capas (cont.)
- Algunos Elementos Involucrados
- Capa de Presentación
- HTML, DHTML, CSS, XML, XSL, Languages Scripts,
Browsers, Mobiles. - Capa de Lógica de Negocio
- ActiveX, CORBA, Componentes JAVA, Web Services
- Capa de Datos
- RDBMS
15Consideraciones de Diseño e Implementación en la
Web
- Diseño de Capas (cont.)
- Ejemplo Uso de Componentes COM.
- Aunque suele ser una forma cómoda de programar y
reutilizar código, no es siempre fácil de
administrar y mantener sin afectar el
funcionamiento del site. (Registro de DLLs)
16Consideraciones de Diseño e Implementación en la
Web
- Diseño de Capas (cont.)
- Ejemplo Separación de Código en Lenguajes
Scripts (ASP, PHP, JSP). - Como resultado se obtienen librerías para ser
usadas mediante Includes, asi se separa
logicamente la capa de presentación de la capa de
negocios.
17Consideraciones de Diseño e Implementación en la
Web
- Generación en Disco
- Para sites que están basados en contenido, el
cual no es alterado o modificado frecuentemente,
la generación de archivos Estáticos 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.
18Consideraciones de Diseño e Implementación en la
Web
- Generación 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 búsquedas
sobre el contenido, lo mejor es hacer la búsqueda
sobre la Base de Datos. Si no es así, es bueno
tener la Base de Datos para la edición y respaldo
de esta data.
19Consideraciones de Diseño e Implementación en la
Web
- Generación en Disco (cont.)
- Sites en que aplica
- Administradores de Contenido
- Site de Noticias
- Blogs o Bitácoras Personales.
- Site de Estadísticas, Indicadores, etc.
- Formas en las que aplica
- Parcial No toda la pagina servida es generada
como estática. - Total Toda la pagina es generada.
20Consideraciones de Diseño e Implementación en la
Web
- Búsquedas
- Las Búsquedas en los sites generalmente se
realizan sobre campos netamente de texto (Varchar
o Text), los cuales no deberían ser indexados,
debido a que los altos costos de indexación para
inserciones y modificaciones.
21Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Estas búsquedas 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 resultado seria algo como "arte
moderno", "arte culinario", "arte abstracto",
etc.
22Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Sin embargo, si la búsqueda es menos específica,
las cosas ya no son tan rápidas. Por ejemplo,
para buscar "todo lo relacionado con arte", lo
más probable es que tengamos que escribir un
query como. -
- Ej. Select from Tabla
- Where Campo_Busqueda Like arte
- Puesto que el índice es mucho más pequeño que la
tabla, finalmente esto es mejor que buscar a
través de toda la tabla, pero definitivamente
esto no es lo más eficiente.
23Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Por otra parte, al ejecutar la consulta anterior,
probablemente se encontrarán cadenas como las
siguientes "me gusta pegarte", "artefactos
explosivos" y "deja de quejarte".
24Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Soluciones
- SQL Server 2000 (desde la versión 7) desarrolla
el Microsoft Search, un motor de indexación y de
búsqueda 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 comodín. - Esto lo hace mediante un catálogo de texto, que
reside fuera de la Base de Datos y que almacena
todos los índices de textos seleccionados.
25Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Soluciones
- Sintaxis en SQL Server 2000 para consulta de
textos - CONTAINS
- FREETEXT
- CONTAINSTABLE y FREETEXTTABLE
26Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Soluciones
- Ejemplo SQL Server 2000 para consulta de
textos - Select from Tabla
- Where CONTAINS(Campo_Busqueda,arte)
- Select from Tabla
- Where CONTAINS(,arte AND cu)
27Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Soluciones
- Ejemplo SQL Server 2000 para consulta de
textos - Select from Tabla
- Where FREETEXT(Campo_Busqueda,todo lo
relacionado con arte)
28Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (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 KEY_TABLAON Tabla.id
KEY_TABLA.KEYWHERE KEY_TABLA.RANK gt 10ORDER
BY KEY_TABLA.KEY DESC
29Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Soluciones
- MySql implementa el tipo FULLTEXT, se usan en
tablas del tipo MyISAM, y pueden contener uno o
más campos del tipo CHAR, VARCHAR y TEXT. Está
diseñado para facilitar y optimizar la búsqueda
de palabras clave en tablas que tienen grandes
cantidades de información en campos de texto.
30Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Soluciones
- Creación de FULLTEXT en MySql
- CREATE TABLE nombreTabla(
- campo1 TIPO,
- campo2 TIPO,
- FULLTEXT nombreIndice (campo1 campo2,...)
- )
31Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (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 buscarán todos los artículos que hablen acerca
de Java
32Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Soluciones
- Relevancia en MySQL para consulta de textos
- Para cada fila de la tabla, la función 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')
33Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Soluciones
- Relevancia en MySQL para consulta de textos
- La relevancia es calculada basada en el número de
palabras en una fila, el número de palabras
únicas en esa fila, el número total de palabras
en la colección, y el número de documentos
(filas) que contienen una palabra en particular
34Consideraciones de Diseño e Implementación en la
Web
- Búsquedas (cont.)
- Soluciones
- Modificador IN BOOLEAN MODE en MySQL
- Con esto, se tiene un mayor control acerca del
tipo de búsquedas 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.
35Consideraciones de Diseño e Implementación 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.
36Consideraciones de Diseño e Implementación 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 difícil y
lenta la actualización.
37Consideraciones de Diseño e Implementación 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 cláusulas como
- Select
- From TABLA (NOLOCK)
- WHERE .
- esto le indica explícitamente al query que no
realice bloqueos para esta búsqueda.
38Consideraciones de Diseño e Implementación en la
Web
- Bloqueos (cont.)
- Otro de los factores que afectan el desempeño y
es el uso de . Instruciones como - Select
- From TABLA
- WHERE .
- hacen que querys del que solo se necesitan un
pequeño grupo de columnas generen overhead al
traer campos no necesarios.
39Consideraciones de Diseño e Implementación en la
Web
- Índices
- Es la mejor y la forma mas común de mejorar el
performance de una Base de Datos. Ayuda a obtener
registros de manera mas rápida a que si no la
tuviera. - Pero los índices presentan un overhead, por lo
que hay que manejarlos de manera consiente. - La representación mas común de estos índices es
basado en un Árbol-B
40Consideraciones de Diseño e Implementación en la
Web
- Índices (cont.)
- SQL Server 2000 recopila información estadística
sobre los índices y los datos de columna
almacenados en la base de datos. El optimizador
de consultas de SQL Server utiliza estas
estadísticas para seleccionar el plan más eficaz
de ejecución de las consultas INSERT, SELECT,
DELETE o UPDATE.
41Consideraciones de Diseño e Implementación 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 ejecución de un
query - ANALYZE recolecta información estadística del
contenido de las tablas. Estas estadísticas son
almacenadas para ayudar al planificador de Querys
a determinar el mejor plan de ejecución.
42Consideraciones de Diseño e Implementación 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
periódicamente para entonar Base da Datos,
detectar problemas y optimizar querys.
43Lenguajes y Acceso a Base de Datos
- Leguajes Script
- Entre los lenguajes script mas comunes están
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 mas
comunes en ASP para realizar el acceso a datos.
44Lenguajes y Acceso a Base de Datos
- Leguajes Script (cont.)
- PHP posee librerías propias incorporadas a su
core para acceder casi todas las Base de Datos. - Java Database Connectivity (JDBC) provee la
manera estándar para la comunicación con RDBMS.
45Lenguajes y Acceso a Base de Datos
- Otros Leguajes
- Usando Lenguajes como VB, .NET, Java en la capa
de Lógica de Negocios mediante COM, Web Services
o Componentes Java. - Estos lenguajes también se basan en librerías y
objetos propios como ADO, OLE-DB, JDBC y ODBC
para la conexión de con la Base de Datos.
46Ejemplos
- TerraServer (http//terraserver.microsoft.com)
- Es una Base de Datos de 3.3 TB de imágenes
aéreas y de topografía de alta resolución. - 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 imágenes y
meta-data.
47Ejemplos (TerraServer)
48Ejemplos (TerraServer)
49Ejemplos (TerraServer)
50Ejemplos (TerraServer)
51Ejemplos
- 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.
52Ejemplos
- 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.
53Recomendaciones
- De Diseño
- Realizar un Diseño 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 diseño pueden ser
candidatos a ser almacenados en disco.
54Recomendaciones
- Técnicas
- Al momento de crear físicamente 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
55Recomendaciones
- Técnicas (cont.)
- Usar cláusulas en caso de ser necesario, para
evitar Bloqueos de tablas en comandos SELECT - Usar SQL y funciones estándar que permitan
portabilidad entre manejadores (deseado). - Hacer conexiones a Base de Datos utilizando la
mejor herramienta a la mano.
56Recomendaciones
- 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
reindexación de tablas periódicamente. - Definir los campos necesarios para la búsquedas
FULLTEXT.