2010-02-06 14 views
6

que pasaron por el tema y se enteraron de este enlace bastante útil y simple al mismo tiempo. Storing matrices in a relational database Pero puede usted por favor hágamelo saber si la manera como se mencionóMatrices y bases de datos

A B C D 
E F G H 
I J K L 

[A B C D E F G H I J K L] 

es la mejor manera sencilla y fiable o incluso de almacenar los elementos de matriz en la base de datos. Además, necesito multiplicar dos matrices y hacer que la operación sea dinámica. Entonces, ¿el almacenamiento de datos creará algún problema para la tarea?

Respuesta

0

es la forma mejor y más sencilla o incluso fiable de almacenar los elementos de matriz en la base de datos. Además, necesito multiplicar dos matrices y hacer que la operación sea dinámica. Entonces, ¿el almacenamiento de datos creará algún problema para la tarea?

Voy a empezar diciendo que ambos enfoques son válidos, pero el segundo no es suficiente según lo escrito por ti. Hay que tener alguna otra información, como la longitud de las filas o la (fila, col) índices de cada elemento para almacenar una matriz como una matriz de 1D. Esto se hace comúnmente para matrices dispersas, donde hay muchos ceros que rodean valores agrupados a cada lado de la diagonal.

La persistencia de la matriz en una base de datos y su funcionamiento en la memoria son dos cosas separadas.

Tareas como la multiplicación requiere (fila, col) índices. Almacenar la matriz como una matriz 2D significa que los tendrá, por lo que no se necesita ninguna otra información. La matriz 1D también necesita esta información, por lo que deberá proporcionarla.

La ventaja oscila en la matriz 1D para matrices dispersas. Usted no tiene que almacenar los valores cero fuera del ancho de banda en ese caso, pero sus operaciones como la suma y la multiplicación se hacen más complejos con el código.

0

Creo que depende de cómo quiera usar las matrices en su aplicación.

¿El DB es solo para la persistencia de la misma aplicación, la velocidad es importante y no se pueden conocer los tamaños por adelantado? Haga su propio esquema de serialización y guarde el blob binario.

¿La base de datos se comparte entre las aplicaciones, sin conocer el tamaño por adelantado? Use la lista delimitada por comas.

¿Le preocupa la integridad de los datos, el tipo de seguridad y desea consultar celdas individuales? Luego use el esquema (fila, col, valor de celda).

¿Sabía que sus matrices son de tamaño fijo y relativamente pequeñas, por ejemplo matrices de transformación 4X4, y tendrán una relación de 1 a 1 con cualquier elemento que tenga en la base de datos? Entonces podrías tener 16 filas en tu mesa, puestas en línea.

Piense en sus casos de uso, y el experimento!

1

En postgresql puede tener matrices multidimensionales, definir sus propios tipos y definir sus propias funciones en esos tipos. Por ejemplo, uno podría simplemente hacer:

CREATE TABLE tictactoe (
    squares integer[3][3] 
); 

Ver The PostgreSQL manual para obtener información sobre cómo crear sus propios tipos.

Cuestiones relacionadas