Самый эффективный способ хранения и доступа к огромной матрице данных в MySQL - PullRequest
14 голосов
/ 19 сентября 2011

Я собираюсь хранить огромное количество матричных данных в mysqlDB. Какой самый эффективный способ хранения данных и доступа к ним?

Эффективность наиболее важна при получении данных, таблица не будетрегулярно обновляться.

Матрица примерно в 100.000 раз превышает 1000 (возможно, будет больше в будущем)


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

Когда данные огромны, что наиболее эффективно, короткий вызов (запрос mysql)или хранить данные в виде матрицы?Данные используются регулярно, поэтому их выборка должна быть эффективной.

Ответы [ 2 ]

11 голосов
/ 28 сентября 2011

Так как вы сказали, что хотите повысить эффективность извлечения, я бы использовал следующий формат таблицы

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

Используя формат и индексирование по столбцам и строкам матрицы, вы можете извлекать любую часть данных так быстро, как захотите.

4 голосов
/ 05 октября 2011

Здесь есть пара важных вопросов:

Ответы для плотных матриц, по-видимому, сводятся к нормализованной таблице со столбцами для столбца, строки и значения, как было предложено выше Taesung, или для чего-то вроде сохранения отдельных строк из исходной матрицы в виде BLOB-объектов.

HDF5 выглядит для такого рода вещей. Было бы здорово, если бы кто-то с опытом мог прокомментировать дальше.

...