2011-09-19 21 views
12

Voy a almacenar una gran cantidad de datos de matriz en un mysqlDB ¿cuál es la forma más eficiente de almacenar y acceder a los datos?La forma más eficiente de almacenar y acceder a una gran matriz de datos en MySQL

La eficiencia es más importante cuando se obtienen los datos, la tabla no se actualizará regularmente.

La matriz es de aproximadamente 100.000 veces 1000 (probablemente mayor en el futuro)

 

id1 
value 
value_id1 
id1 
value 
value_id2 
id2 
value 
value_id1 
id2 
value 
value_id2 
. 
. 
. 
id 100.000 
value 
value_id1000 

vs 
    value_id1, value_id2, value_id3 ... id 1000 
id1 value  value  value 
id2 value  value  value 
id3 value  value  value 
. 
. 
. 
id 100.000 

Cuando los datos es enorme lo que es más eficiente, una llamada corta (consulta MySQL) o para tener los datos almacenados como una ¿matriz? Los datos se usan regularmente, por lo que debe ser eficiente buscar datos.

+0

¿Es una matriz dispersa? ¿Tiene sentido en la aplicación subdividirlo? – spraff

+0

¿La dimensión horizontal de la matriz seguirá siendo consistente? ¿O es probable que se encoja o crezca? – dmcnelis

+0

¡La dimensión horiontal probablemente sea consistente, podría cambiarse en una "actualización" pero no regularmente! – david

Respuesta

9

Dado que usted ha dicho que quiere eficiencia en ir a buscar, me gustaría utilizar formato siguiente tabla

Column Row Value 
     1 1 1.2 
     2 1 2.3 
     ... 

Usando el formato y la indexación de la columna y la fila de la matriz, se puede recuperar cualquier parte de datos tan rápido como usted quiere .

+0

¿me puede dar más información y hacérmelo saber? ¿Cómo funciona exactamente? –

4

Hay un par de preguntas relevantes aquí:

Las respuestas para las matrices densas parecen reducirse a una tabla normalizada con columnas para la columna, fila y valor, como sugiere Taesung arriba, o haciendo algo así como almacenar filas individuales de su matriz original como blobs.

HDF5 parece estar hecho para este tipo de cosas. Sería genial si alguien con experiencia pudiera comentar más.

Cuestiones relacionadas