Foro de Xeoweb Foro de Posicionamiento y Buscadores
Aprendiendo a Promocionar Páginas Web.
Xeoweb :: Sindicar
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entre para ver sus mensajes privadosEntre para ver sus mensajes privados   LoginLogin 
[php+MySQL] Muchos campos cortos o uno solo grande? o caché?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Lenguajes de Programación Web
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Jorgens
Soy de Yahoo!


Registrado: 07 Mar 2004
Mensajes: 954
Ubicación: Cartagena, España

MensajePublicado: Dom Feb 28, 2010 1:32 am    Asunto: [php+MySQL] Muchos campos cortos o uno solo grande? o caché? Responder citando

Saludos compañeros.

Sigo haciendo experimentos con php y mysql. Sinceramente, estoy apasionado con la cantidad de cosas que se pueden hacer y aplicar en nuestras páginas. El límite prácticamente está en tu imaginación, sin duda alguna.

Tengo una duda (ojalá fuera una, je je je). Imaginaos que tengo una tabla de una base de datos en la que guardo un montón de datos que uso en una plantilla de página web (título, palabras clave, description, elementos del menú, estilos, texto del contenido, títulos, enlaces de adelante y atrás, colores de fondo.....).

Cuando el visitante llega a una página realmente va a una plantilla en el servidor llena de campos. El servidor lee esos campos de la base de datos y devuelve al visitante una página web u otra.

La pregunta es... qué es más eficiente, hacerlo así o crear otra tabla en la que se guarde la totalidad del contenido de la web a mostrar?

En el primer caso digamos que el servidor ha de leer de la tabla unos 30 campos, insertarlos en la plantilla de php y devolver el código html al usuario.

Del segundo modo cada vez que actualizo la base de datos insertando o modificando datos, el servidor recogería todos y los colocaría uno seguido de otro en un solo campo de otra tabla. Cuando el visitante intenta acceder a una página el servidor solo le ha de entregar un campo, muy largo si, pero solo uno.

Cómo lo veis? Qué cargaría menos al servidor?

No se si he conseguido explicaroslo bien.... si es así me avisais, oki?

Un abrazo!!
_________________
Jorgens
Como Crear Una Pagina Web :: El Papeleo tras un bebe


Ultima edición por Jorgens el Dom Feb 28, 2010 1:40 am, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Jorgens
Soy de Yahoo!


Registrado: 07 Mar 2004
Mensajes: 954
Ubicación: Cartagena, España

MensajePublicado: Dom Feb 28, 2010 1:37 am    Asunto: Responder citando

mmm.....

Otra opción que ando cabilando es que cada vez que yo actualice o cree nuevos campos, cree mediante código php una secuencia que me pase todo ese conjunto de campos a un archivo html, no? De ese modo solo uso php y mysql cuando estoy trabajando en la base de datos, mientras que las visitas no tiran de la base de datos sino de esos archivos creados. Luego si creo o retoco una página (que como digo consta de varios campos de la base de datos) le doy a un botoncito y el servidor me crea (gracias a alguna función que tendría que programar) el archivo html y... listo.... no?

Sería algo así como una caché de la web... (creo)

Gracias de nuevo. Espero ansioso vuestro punto de vista.

Abrazos!
_________________
Jorgens
Como Crear Una Pagina Web :: El Papeleo tras un bebe
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
xaviclave
Me gusta MSN!


Registrado: 03 Jul 2007
Mensajes: 427
Ubicación: Barcelona

MensajePublicado: Dom Feb 28, 2010 6:44 am    Asunto: Responder citando

No tengo mucha experiencia en bases de datos per entiendo que ir a buscar la información de una zona de la base de datos sería lo mejor que ir a o 3.
Sobre si crear un archivo para cada página de los usuarios, al contrario que lo que yo hago, creo que si sería mejor utilizar una plantilla y tirar de la base de datos.
Siempre puedes modificar la plantilla que seguro que necesitarás hacerlo. El tenerlo en varios archivos se te puede convertir en un problema cuando la cosa se haga muy grande aunque de cara al rendimiento siempre conseguirás un consumo de recursos mucho mas bajo.
_________________
Crear pagina web Blogs BTT
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Jorgens
Soy de Yahoo!


Registrado: 07 Mar 2004
Mensajes: 954
Ubicación: Cartagena, España

MensajePublicado: Dom Feb 28, 2010 11:39 pm    Asunto: Responder citando

Gracias Xavi, me alegra leerte tras tanto tiempo.

No no, siempre trabajaría sobre una sola plantilla php así que cualquier modificación solo tengo que hacerla en ese archivo.

Con esa plantilla y la base de datos genero todas las páginas de la web. La pregunta es qué es mejor para no sobrecargar mucho al servidor,

A - si dejar que la plantilla lea digamos 60 datos de una base de datos, para cada página y visita, claro. Creo que es la opción más común en cualquier cms.

B - si tener una función que recoja esos 60 datos y los una en un solo campo de otra tabla. La plantilla en este caso solo llamaría a un solo campo de esa tabla, y contendría todo el código hmtl, claro. Yo como webmaster trabajaría sobre la de los 60 campos y la plantilla leería de la de un solo campo.

C - Si independientemente de las dos opciones anteriores, es mejor aún crear una función que cree los archivos html correspondientes a cada una de las páginas (estáticas, claro, sin login de usuarios ni nada de eso) de la web, que sería lo que verían los visitantes.
La sobrecarga a la hora de añadir información a la base de datos, modificarla, etc, no me preocupa, pues eso es esporádico y liviano (cada vez que añado contenido o modifico el aspecto, por ejemplo) Lo que me preocupa es solo la carga del servidor que ocasionan las visitas (pongamosle para... 20.ooo visitas al dia, por ejemplo).

La opción C, que repito, es independiente de las otras dos (podría tomar A y C o B y C) me parece más segura ante ataques, no?

Disculpad, pero son cosas que no termino de descifrar con lo que leo en foros o leo en libros,

Un saludo!!
_________________
Jorgens
Como Crear Una Pagina Web :: El Papeleo tras un bebe
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
xaviclave
Me gusta MSN!


Registrado: 03 Jul 2007
Mensajes: 427
Ubicación: Barcelona

MensajePublicado: Lun Mar 01, 2010 7:20 am    Asunto: Responder citando

No sabria decirte que es lo mejor. Creo que todo pasa por optimizar.
"Yo tengo el caso C" Aunque si te puedo decir que habia tenido un dedicado de un solo núcleo a 1.2Ghz con 1Giga de ram y en condiciones normales no sobrepasaba el 60% de consumo de procesador con 20.000 visitas/100.000 paginas vistas. También piensa en las limitaciones que puedes tener de cara al futuro ya que normalmente los sistemas de archivos tradicionales tienen limitaciones en el número de carpetas y archivos.
_________________
Crear pagina web Blogs BTT
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
JustMe
Vivo en Xeoweb


Registrado: 27 Sep 2005
Mensajes: 3063
Ubicación: Por ahí....

MensajePublicado: Lun Mar 01, 2010 3:15 pm    Asunto: Responder citando

En mi opinión, las bases de datos son muy poderosas pero también frágiles, para que ellas no "sufran", se corrompan o se caigan llevandose de paso al server, es importante que los índices estén bien pensados y establecidos y que las consultas sean optimizadas.
Piensa si realmente necesitas una tabla para guardar datos de configuración, si sólo necesitas una línea de esa tabla muy probablemente no necesites ni una tabla, ni una base de datos para guardar esa información, aun cuando siempre definas un índice y hagas las consultas sobre ese índice, si cada vez que construyes una página vas a necesitar abrir una conexión, hacer una consulta y cerrar una conexión, no me parece muy eficiente, personalmente uso archivos .ini para datos de configuración y de esta manera no tengo que forzar mi base de datos, pero para gustos los colores.
_________________
PHP Data uri fier
Blog Gratis
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Jorgens
Soy de Yahoo!


Registrado: 07 Mar 2004
Mensajes: 954
Ubicación: Cartagena, España

MensajePublicado: Lun Mar 01, 2010 3:47 pm    Asunto: Responder citando

Cuando quiero crear una página web desde cero compro el dominio, organizo el hosting, creo una base de datos y subo al servidor una plantilla y un formulario básicamente. A partir de ahí, accedo al formulario y desde él creo todas las páginas de la web. Los campos que uso son, todos los necesarios, title, description, contenido, posición en el menú..... Me facilita mucho la vida pues puedo crear una página de la web en 2 minutos con solo entrar en el panel, cumplimentar esos campos y pulsar un botón de Aceptar. Automáticamente aparece en la web y en el sitemap. Los menús se actualizan automáticamente, los botones de adelante y atras... y todas esas tonterias.

No se si sabría hacerlo igual de facil (sin necesidad de ftp ni nada) sin usar bases de datos... Antes creaba las webs "a mano", pero tras esto la verdad que he descubierto otro universo y... es comodísimo. Lo que ya no se es cuánto sufre mi servidor, pues solo lo tengo aplicado en un par de webs muy nuevas y con pocas visitas aún.

Hay alguna manera de medir cuanto de cargado está el servidor por una base de datos concreta? Tienen los servidores algún "termometro" para medir y poder ver realmente si lo que hago sudar al servidor merece la pena o no? Tengo un VPS.

Qué es eso de los archivos .ini JustMe? Me puedes iniciar en ese tema lo justo para seguir investigando, plis?

Tras leerte entiendo que la opción C puede estar bien, pues solo usaría la base de datos yo como webmaster y luego los visitantes tirarían de archivos html creados a partir de esa base de datos, no?

Muchas gracias por los comentarios, de veras.
_________________
Jorgens
Como Crear Una Pagina Web :: El Papeleo tras un bebe
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
xaviclave
Me gusta MSN!


Registrado: 03 Jul 2007
Mensajes: 427
Ubicación: Barcelona

MensajePublicado: Lun Mar 01, 2010 4:51 pm    Asunto: Responder citando

JustMe escribió:
En mi opinión, las bases de datos son muy poderosas pero también frágiles, para que ellas no "sufran", se corrompan o se caigan llevandose de paso al server, es importante que los índices estén bien pensados y establecidos y que las consultas sean optimizadas.
Piensa si realmente necesitas una tabla para guardar datos de configuración, si sólo necesitas una línea de esa tabla muy probablemente no necesites ni una tabla, ni una base de datos para guardar esa información, aun cuando siempre definas un índice y hagas las consultas sobre ese índice, si cada vez que construyes una página vas a necesitar abrir una conexión, hacer una consulta y cerrar una conexión, no me parece muy eficiente, personalmente uso archivos .ini para datos de configuración y de esta manera no tengo que forzar mi base de datos, pero para gustos los colores.


Vaya pues no iba yo muy desencaminado. Es decir. No utilizar bases de datos puede ser bueno en algunos casos.
Creo que hace falta una definición de para que sirven las bases de datos. Cierto? Son para buscar algo que no sabemos donde está exactamente.
En cambio que tenemos que usar cuando sabemos que es lo que vamos a buscar y donde está? En nuestro caso un simple archivo con el nombre del usuario.ini o.txt o . lo que sea que contenga toda la información del usuario y su contenido. Seguro que la carga del servidor bajaria bastante.

Jorgens escribió:


Hay alguna manera de medir cuanto de cargado está el servidor por una base de datos concreta? Tienen los servidores algún "termometro" para medir y poder ver realmente si lo que hago sudar al servidor merece la pena o no? Tengo un VPS.

Qué es eso de los archivos .ini JustMe? Me puedes iniciar en ese tema lo justo para seguir investigando, plis?

Tras leerte entiendo que la opción C puede estar bien, pues solo usaría la base de datos yo como webmaster y luego los visitantes tirarían de archivos html creados a partir de esa base de datos, no?

Muchas gracias por los comentarios, de veras.


En tu caso para medir lo cargado del servidor solamente has de ver que porcentaje de memoria está consumiendo y de cpu. No se si phpsysinfo podria ser una buena opción, seguramente hay mas.

Los archivos ini creo que quiere decir archivos de cualquier tipo, es decir en lugar de almacenar la informacion en la base de datos almacenarla en un archivo de forma ordenada que luego lo abras y lo leas también en el mismo orden. Cada usuario tendria un archivo.
_________________
Crear pagina web Blogs BTT
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Jorgens
Soy de Yahoo!


Registrado: 07 Mar 2004
Mensajes: 954
Ubicación: Cartagena, España

MensajePublicado: Lun Mar 01, 2010 5:30 pm    Asunto: Responder citando

Cita:
No utilizar bases de datos puede ser bueno en algunos casos.

Por supuesto, o mejor dicho, usarla, puede ser bueno en algunos casos, es decir, no deja de usarse si no hace falta, sino que se usa si es necesario.
Cita:
Creo que hace falta una definición de para que sirven las bases de datos. Cierto? Son para buscar algo que no sabemos donde está exactamente.

No creo que la wikipedia acepte esa definición Xavi, je je. En principio incluso en una base de datos "necesaria" y compleja, imagino que se DEBE saber exáctamente dónde está cada información. Yo más bien pienso que se debe usar cuando conviene organizarla de modo que podamos rescatarla fácilmente y cuando es tanta o tan diversa que no es fácil conservarla en otro medio y rescatarla rápidamente (como por ejemplo en un fichero de papel dentro de un armario).
Cita:
un simple archivo con el nombre del usuario.ini o.txt o . lo que sea que contenga toda la información del usuario y su contenido. Seguro que la carga del servidor bajaria bastante.

Soy primerizo aún en eso del php y mysql, pero me da la impresión de que esto es más lento y hacetrabajar mucho más al servidor. Si la información que guardamos en un fichero se usa tal cuál nos hace falta luego quizás tengas/tengais razón, pero si en lugar de usar toda la información del fichero solo necesitamos un dato del principio, luego otro dato del final, luego otro de en medio.... habría que crear una función que abra el fichero (mientras está abierto quizás el navegador de otro visitante también quiera leer y no creo que pueda), que recorra la información hasta encontrar lo buscado, que la rescate, y que cierre el fichero de nuevo. Sin contar con el tema de la seguridad, permisos a otorgar a esos ficheros, etc... yo creo que no es lo más viable.
Repito que lo que yo guardo es el nombre de usuario y contraseña de un visitante, sino toooooda la información de una página web.
Cita:
En tu caso para medir lo cargado del servidor solamente has de ver que porcentaje de memoria está consumiendo y de cpu.

Me refiero a la carga del servidor, del microprocesador. También claro el consumo de Ram, pero lo quisiera ver tan solo de esa base de datos en concreto, no del resto de las tablas que tengo para esas cosas. Se puede de algún modo?
Cita:
No se si phpsysinfo podria ser una buena opción, seguramente hay mas.

No conocía eso del phpsysinfo. Voy a mirarlo más a fondo, quizás pueda servirme, gracias.

Gracias a ambos dos!
_________________
Jorgens
Como Crear Una Pagina Web :: El Papeleo tras un bebe
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Afelix
Me gusta MSN!


Registrado: 03 Feb 2006
Mensajes: 445
Ubicación: Toledo

MensajePublicado: Lun Mar 01, 2010 6:09 pm    Asunto: Responder citando

En mi opinión, la forma que expone Jorgens en crear páginas de forma rápida utilizando plantillas es correcta,
utilizar MySQL con varios campos para los distintos elementos de una página Web es lo más acertado en vez de utilizar un solo campo,
el tener varios campos te permite crear o modificar más elementos de una página de forma cómoda y rápida.

Yo añadiría un sistema de caché para reducir la carga del servidor:
http://www.baluart.net/articulo/sistema-de-cache-con-php

Lo que es muy importante es el diseño de la base de datos, el crear INDICES te permite acceder a los datos más rápido,
pero cuidado… a más índices mayor el tamaño de la base de datos, los INSERT y UPDATE son más lentos con índices.
_________________
Directorio de enlaces BudiWeb
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Jorgens
Soy de Yahoo!


Registrado: 07 Mar 2004
Mensajes: 954
Ubicación: Cartagena, España

MensajePublicado: Lun Mar 01, 2010 7:28 pm    Asunto: Responder citando

Cita:
utilizar MySQL con varios campos para los distintos elementos de una página Web es lo más acertado en vez de utilizar un solo campo

En una tabla tengo esos datos, por separado. Luego con una función php los uno todos para formar el codigo html completo y los uniría (es una de las ideas) en un solo campo de una segunda tabla.
Cita:
el tener varios campos te permite crear o modificar más elementos de una página de forma cómoda y rápida.

Efectivamente, lo que guardo en la segunda tabla es todo el codigo que proviene de los distintos campos de la primera tabla. Si quiero retocar lo hago en la primera tabla y vuelvo a usar la función que me actualiza el codigo completo de esa página en la segunda tabla que es la que lee el servidor para mostrar al navegador del visitante. no se si me explico.
Cita:
Yo añadiría un sistema de caché para reducir la carga del servidor:
http://www.baluart.net/articulo/sistema-de-cache-con-php

Genial, gracias por el enlace. Esta noche me lo estudio.
Cita:
Lo que es muy importante es el diseño de la base de datos, el crear INDICES te permite acceder a los datos más rápido,
pero cuidado… a más índices mayor el tamaño de la base de datos, los INSERT y UPDATE son más lentos con índices.

Tomo nota. Ya he leido sobre diseño de bases de datos y sobre optimización y ando aplicándolo.

Gracias por los comentarios amigo.
_________________
Jorgens
Como Crear Una Pagina Web :: El Papeleo tras un bebe
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
JustMe
Vivo en Xeoweb


Registrado: 27 Sep 2005
Mensajes: 3063
Ubicación: Por ahí....

MensajePublicado: Lun Mar 01, 2010 9:39 pm    Asunto: Responder citando

Afelix escribió:

Yo añadiría un sistema de caché para reducir la carga del servidor:
http://www.baluart.net/articulo/sistema-de-cache-con-php


Es una traducción de mi script de caché a PHP orientado a objetos, aunque muy básico, desde que lo publiqué por primera vez en 2005, el mio ya cuenta con muchas mejoras e incluso permite hacer doble caché, es decir caché de sólo una parte de la página, lo que si es que el mío aun es procedural y no orientado a objetos, en principio porque no hace falta, así lo conservo más eficiente con respecto especialmente a memoria.

Respecto al tema original, insisto en mi opinión, a menos que se tenga una web muy simple y con pocas visitas nunca es buena idea usar una tabla en una base de datos a la cual se tenga que acceder cada vez que se carga la página y sólo para obtener siempre los mismos datos del mismo renglón (o renglones) de datos que no necesitan conectar y desconectar de una base de datos. De hecho el cacher original que escribí en 2005 fue por esa razón, para no forzar la base de datos porque es frágil y muy susceptible de hacer kaput en webs de alto tráfico.
En estos casos, el sistema de archivos es mucho más eficiente y es mejor guardar configuraciones en un archivo editable on u offline y simplemente incluirlo usando variables o constantes o parsearlo con una función como parse_ini_file() de php.
_________________
PHP Data uri fier
Blog Gratis
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
foley
Me gusta MSN!


Registrado: 08 Ene 2008
Mensajes: 368
Ubicación: Galicia

MensajePublicado: Mar Mar 02, 2010 12:49 am    Asunto: Responder citando

Gracias justme, tomo nota yo también Wink
_________________
Test de conducir
Quake Wars
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Publicar nuevo tema   Responder al tema    Foros de discusión -> Lenguajes de Programación Web Todas las horas son GMT
Respuesta Rápida y Acciones
 

 

Página 1 de 1


Cambiar a:  
Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro

 


Logo diseñado por iLevante
Powered by phpBB © 2001, 2009 phpBB Group