Foros del Web » Programando para Internet » PHP »

Escalabilidad cantidd de datos PHP y MySQL

Estas en el tema de Escalabilidad cantidd de datos PHP y MySQL en el foro de PHP en Foros del Web. Hola a todos! Tengo una consulta mas bien para expertos en PHP Estoy archivando datos de compras de un sitio en una base de datos ...
  #1 (permalink)  
Antiguo 19/06/2014, 07:23
 
Fecha de Ingreso: noviembre-2010
Mensajes: 63
Antigüedad: 14 años
Puntos: 3
Escalabilidad cantidd de datos PHP y MySQL

Hola a todos!

Tengo una consulta mas bien para expertos en PHP

Estoy archivando datos de compras de un sitio en una base de datos MySql para ser recuperados en un futuro por los usuarios.

Como se trata de un carrito de compras lo guardo en serializado y en base 64 para evitar problemas con caracteres especiales.

Cuando lo recupero hago el proceso inverso y todo de maravilla.

Para guardar los datos uso un campo Mysql LONGTEXT que, según lei en el foro, soporta hasta 4.294.967.295 catacteres

Esa cantidad es mas que suficiente para mi proyecto

La consulta es:
Cuando la cantidad de caracteres a manipular por PHP en el recuperado/guardado asicienda a 1.000.000, 10.000.000 o mas. ¿Va a presentar alguna limitación?

Por ejemplo, cuando le pida des serializar una cadena de 10.000.000 de caracteres, ¿Lo v a hacer sin problemas?

Muchas Gracias a todos!!!
  #2 (permalink)  
Antiguo 19/06/2014, 08:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Escalabilidad cantidd de datos PHP y MySQL

Bueno... especificamente sobre "escalabilidad cantidd de datos PHP y MySQL" te respondo:


- MySQL es bastante escalable ... pero para sitios medianamente grandes es mejor PosgreeSQL

- Para sitios gigantes y cuando los datos no son crititicos (no es tu caso quizas) es mejor usar noSQL (Cassandra, MongoDB, CouchDB, Redis, Riak ... etc)

- PHP esta bien para sitios incluso grandes pero Facebook salio con un fork llamado Hack para poder compilarlo ... y otros sitios usan Java (aunque tambien Ruby que es mas lento) pero tambien Node.Js que ademas se la lleva muy bien con noSQL
__________________
Salu2!
  #3 (permalink)  
Antiguo 19/06/2014, 10:27
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Escalabilidad cantidd de datos PHP y MySQL

Tengo una duda, pretendes guardar mas de un carro de compra en un solo LONGTEXT o lo estas guardando en una relación de 1 a 1 (un carrito por LONGTEXT) ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 19/06/2014, 11:30
 
Fecha de Ingreso: noviembre-2010
Mensajes: 63
Antigüedad: 14 años
Puntos: 3
Respuesta: Escalabilidad cantidd de datos PHP y MySQL

Cita:
Iniciado por hhs Ver Mensaje
Tengo una duda, pretendes guardar mas de un carro de compra en un solo LONGTEXT o lo estas guardando en una relación de 1 a 1 (un carrito por LONGTEXT) ?
Gracias por sus respuestas!

Voy a guardar un carro por cada LONGTEXT, es decir, voy a generar un registro para cada carro que guardo.

Lo que más me preocupa es esto:
Cuando la cantidad de caracteres a manipular por PHP en el recuperado/guardado ascienda a 1.000.000, 10.000.000 o mas. ¿Va a presentar alguna limitación?

Por ejemplo, cuando le pida des serializar una cadena de 10.000.000 de caracteres, ¿Lo v a hacer sin problemas?

Gracias!
  #5 (permalink)  
Antiguo 19/06/2014, 12:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Escalabilidad cantidd de datos PHP y MySQL

Y un carrito de compras por que deberia contener 10 millones de caracteres ?
__________________
Salu2!
  #6 (permalink)  
Antiguo 19/06/2014, 12:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Escalabilidad cantidd de datos PHP y MySQL

Cita:
Cuando la cantidad de caracteres a manipular por PHP en el recuperado/guardado ascienda a 1.000.000, 10.000.000 o mas. ¿Va a presentar alguna limitación?
Manual de Referencia de MySQL:

Cita:
LONGTEXT
Una columna TEXT con longitud máxima de 4.294.967.295 o 4GB (2^32 - 1) caracteres. La longitud máxima efectiva (permitida) de columnas LONGTEXT depende del tamaño máximo de paquete configurado en el protocolo cliente/servidor y la memoria disponible.
¿Te alcanza?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 19/06/2014, 12:16
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Escalabilidad cantidd de datos PHP y MySQL

La pregunta es @gnzsoloyo .. si un carrito de compras necesita esa cantidad (?)

O sea... si compran "La Biblia de SQL" ...el compañero piensa serializar el texto del libro o que ?
__________________
Salu2!

Última edición por Triby; 19/06/2014 a las 12:20 Razón: Enlace y referencia no permitidos.
  #8 (permalink)  
Antiguo 19/06/2014, 12:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Escalabilidad cantidd de datos PHP y MySQL


La verdad es que conozco muy pocos casos donde justifique usar LONGTEXT. Incluso para poner la muestra de varias páginas, tamaños mucho menores son suficientes, si teienes en cuenta que un texto de 4000 palabras puede entrar en una carilla A4, lo que implciaría una media de 25.000 caracteres.
Salvo que quiera poner un libro entero, y de los largos... No le veo mucho sentido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 19/06/2014, 14:49
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Escalabilidad cantidd de datos PHP y MySQL

Cita:
uando la cantidad de caracteres a manipular por PHP en el recuperado/guardado ascienda a 1.000.000, 10.000.000 o mas. ¿Va a presentar alguna limitación?
Con menos vas a tener problemas, la serialización se justifica en pocas ocasiones ya que es costosa y aparte estas haciendo una codificación adicional: vas a tener un cuello de botella cuando tengas que recuperar mas de un carrito. Te sugiero que pienses en otra opción si todavía tienes tiempo para corregir.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #10 (permalink)  
Antiguo 19/06/2014, 17:43
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Escalabilidad cantidd de datos PHP y MySQL

Cita:
La consulta es:
Cuando la cantidad de caracteres a manipular por PHP en el recuperado/guardado asicienda a 1.000.000, 10.000.000 o mas. ¿Va a presentar alguna limitación?
Podrias realizar el experimento...

Código PHP:
Ver original
  1. <?php
  2.     // Aumento la memoria pero igual no me alcanza.
  3.     ini_set('memory_limit', '9999999999M');
  4.     // Factorizo, porque php no admite enteros tan grandes con mi configuracion actual.
  5.     $bigString = "t".str_repeat(str_repeat(str_repeat(str_repeat(str_repeat(str_repeat("t", 3), 5), 17), 257), 256), 256);
  6.     // Serializado y b64.
  7.     $bigString = base64_encode(serialize($bigString));

En mi servidor eso arroja este error:
Cita:
Fatal error: Allowed memory size of -1048576 bytes exhausted (tried to allocate 4294901761 bytes)
Eso es porque se me llena la ram de la notebook y no alcanza a definir el string, podrias probarlo en un servidor y guardarlo en mysql a ver que sale, solo que vas a precisar un vps con mas de 4gb de ram.

Por otra parte, dudo que la escalabilidad de php/mysql sea un problema si hay hardware que la respalde, pero considero un error de diseño importante guardar datos serializados en una base de datos.

La base de datos debe poder leer los datos, filtrarlos, organizarlos, etc. Deberias crear las entidades correspondientes y guardar alli los datos del carrito, de esta forma no hay problema con la cantidad de registros que tenga la compra, puedes leerlos 1 a 1 donde haga falta o obtener datos de interes sin problemas, con un consumo de ram minimo.

En volumenes de datos grandes, tu sistema no sera escalable, sera lento y puede que hasta incosistente por un monton de factores, y el problema sera de diseño, no de php o mysql.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 19/06/2014 a las 18:09
  #11 (permalink)  
Antiguo 19/06/2014, 18:26
 
Fecha de Ingreso: noviembre-2010
Mensajes: 63
Antigüedad: 14 años
Puntos: 3
Respuesta: Escalabilidad cantidd de datos PHP y MySQL

Muy buenos sus aportes.

Realmente se los agradezco.

En base a sus comentarios tengo bastante trabajo por delante.

Gracias nuevamente y saludos!

Etiquetas: caracteres, limite, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:33.