¿Cómo almaceno datos binarios en MySQL ?
mysql
database
binary-data
data-storage
Geoff Dalgas
fuente
fuente
Respuestas:
La respuesta de phpguy es correcta, pero creo que hay mucha confusión en los detalles adicionales allí.
La respuesta básica está en un
BLOB
dominio de tipo de datos / atributo. BLOB es la abreviatura de Binary Large Object y ese tipo de datos de columna es específico para manejar datos binarios.Consulte la página del manual correspondiente para MySQL .
fuente
Para una mesa como esta:
Aquí hay un ejemplo de PHP:
fuente
Recomiendo no almacenar datos binarios en una base de datos relacional. Las bases de datos relacionales están diseñadas para trabajar con datos de tamaño fijo; ahí es donde está su fortaleza de rendimiento: recuerde el antiguo artículo de Joel sobre por qué las bases de datos son tan rápidas. porque se necesita exactamente un incremento de 1 puntero para moverse de un registro a otro registro. Si agrega datos BLOB de tamaño indefinido y muy variable, arruinará el rendimiento.
En su lugar, almacene archivos en el sistema de archivos y almacene los nombres de los archivos en su base de datos.
fuente
Si bien no ha dicho lo que está almacenando, y puede tener una buena razón para hacerlo, a menudo la respuesta es 'como referencia del sistema de archivos' y los datos reales están en algún lugar del sistema de archivos.
http://www.onlamp.com/pub/a/onlamp/2002/07/11/MySQLtips.html
fuente
Depende de los datos que desea almacenar. El ejemplo anterior utiliza el
LONGBLOB
tipo de datos, pero debe tener en cuenta que existen otros formatos de datos binarios:TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB
VARBINARY
BINARY
Cada uno tiene sus casos de uso. Si es una longitud conocida (corta) (p. Ej., Datos empaquetados), muchas veces
BINARY
oVARBINARY
funcionará. Tienen el beneficio adicional de poder indexarlos.fuente
Si bien no debería ser necesario, podría intentar
base64
codificar datos y decodificarlos. Eso significa que el db solo tendrá caracteres ascii. Tomará un poco más de espacio y tiempo, pero se eliminará cualquier problema relacionado con los datos binarios.fuente
Si existe el campo - no recomendado - BLOB, puede guardar los datos de esta manera:
Idea tomada de aquí .
fuente
También surge la pregunta de cómo llevar los datos al BLOB. Puede poner los datos en una instrucción INSERT, como muestra el ejemplo de PHP (aunque debería usar mysql_real_escape_string en lugar de addlashes). Si el archivo existe en el servidor de la base de datos, también puede usar LOAD_FILE de MySQL
fuente
Cuando necesito almacenar datos binarios, siempre uso el
VARBINARY
formato, como se presentóbyd0nut
.Puede encontrar documentación en el sitio web de MySQL bajo el tema documentado 12.4.2 Los tipos BINARIO y VARBINARIO
Si está preguntando cuáles son las ventajas, consulte la pregunta por qué-varbinary-en lugar de-varchar
fuente