Мне нужно хранить массивный квадратный массив фиксированного размера в MySQL. Значения массива - это просто INT, но к ним нужно обращаться и изменять их довольно быстро.
Итак, вот что я думаю:
- Просто используйте 1 столбец для первичных ключей и переведите индексы двухмерных массивов в одномерные индексы. Итак, если массив 2d равен n на n => 2dArray[i][j] = 1dArray[n*(i-1)+j]
Это переводит проблему в хранение массивного одномерного массива в базе данных.
Затем используйте другой столбец для значений.
Сделайте каждую запись в массиве строкой.
Однако я не очень хорошо знаком с внутренней работой MySQL.
100 КБ * 100 КБ дает 10 миллиардов точек данных, что больше, чем могут дать 32 бита, поэтому я не могу использовать INT в качестве первичного ключа. И исследуя stackoverflow, некоторые люди столкнулись с проблемами производительности при использовании BIGINT в качестве первичного ключа.
В этом случае, когда я храню только INT, упадет ли производительность MySQL по мере увеличения количества строк?
Или, если бы я разбросал данные по нескольким таблицам на одном сервере, могло бы это улучшить производительность? Сейчас похоже, что у меня не будет доступа к нескольким машинам, поэтому я не могу кластеризовать данные.
Я абсолютно гибко отношусь к каждой идее, которую я перечислил выше, и открыт для предложений (кроме того, что я не использую MySQL, потому что я как бы привержен этому!)