[pyar] DB Blob or not Blob, thats the question

MAbeeTT mabeett en gmail.com
Dom Dic 6 17:10:42 ART 2015


2015-12-04 16:35 GMT-03:00 Facundo Batista <facundobatista en gmail.com>:
> 2015-12-04 16:23 GMT-03:00 MAbeeTT <mabeett en gmail.com>:
>
>> Estoy trabajando con web2py y configuré al DAL de web2py  para que
>> aloje los archivos en un directorio y en la base de datos (que hoy es
>> mysql, pero podría usar otra también) se aloja una referencia al
>> sistema de archivos.
>
> Y si los ponés vos a mano en el filesystem?
>
> Si hacés un hash de algo del archivo, y tenés tres niveles de
> directorios, tenés 4096 "directorios" hojas.
>
> O sea,
>
>>>> hex(hash("filename.jpeg"))
> '0x31b7105b'
>
> y guardás eso en ROOT/3/1/b/filename.jpeg
>
> (el hash lo hacés para distribuir los archivos en forma balanceada).
>
> ¿Cuantos archivos tenés en total? Un millón? Usá 4 niveles, y te
> quedan ~15 o 16 archivos por directorio...

Bien, para eso se me ocurre, en vez de parchar el framework y llorar
para que me acepten el parche (que seguramente admitirá varias
observaciones por newbe) usar el argumento uploadfs

uploadfs=None        # a pyfilesystem where to store upload [0]

Tendría que implementar lo que me sugerís para un pyfilesystem y así
me puedo seguir uniendo a las actualizaciones del framework con
consistencia.

Hay un millón y creciendo: (no puse el valor en el primer mensaje, por
cuestiones de tiempo, en verdad!)
wc -l /tmp/files_cam_img
970726 /tmp/files_cam_img

>
>
>> Mi preguntas son, ¿Si corro todo a blob, no estaré corriendo también
>> el problema a la base de datos? ¿es un tamaño demasiado grande el
>> máximo de 110K por archivo para hacer db blob?
>> ¿Alguna consideración particular sobre el uso de la base de datos?
>
> Ojo, que 120k es bastante, pero al encodearlo va a ser más grande:
>
>>>> len(base64.b64encode(os.urandom(120000)))
> 160000

Claro, 33% más grande.
Mi problema de criterio está en poner en peso relativo esos 120K+33%,
¿es demasiado para un registro en una db relacional? No sé responder
esa pregunta.
Si fuera poco o normal como peso, lo corro a Blob y me ahorro el
ingenio y programar.


[0]: http://pydal.readthedocs.org/en/latest/index.html#pydal.objects.Field
-- 
             .::MAbeeTT::.

 mabeett [at] gmail [ dot] com


More information about the pyar mailing list