Хранение многомерного массива (таблицы) в Redis - PullRequest
0 голосов
/ 14 апреля 2019

Я планирую использовать Redis для хранения данных следующего характера:

data =[
    ['first_name', 'last_name', '', 'x', '', '', 'e'], 
    ['x', '', '', 'x', '', '', 'x'], 
    ['', '', '', 'x']
]

Это соответствует сетке, которая выглядит примерно так:

first_name    last_name           x                 e
x                                 x                 x
                                  x

Как показано выше, сетка может иметь произвольные размеры, и нет ограничений по типу.

Вот четыре операции, которые мне нужно поддерживать, приведя в качестве примера эквивалент Python:

# insert data at a specific cell, A2
data[0][2] = "new value"

# insert a new blank row, at 2
data.insert(1,[])

# insert a new blank column at B
for i in range(len(data)):
    data[i].insert(1,'')

# retrieve all data
print(data)

Был бы ли Redis хорошим вариантом для хранения вышеуказанных данных? Если да, то как его можно сохранить для выполнения вышеуказанных операций? В качестве другого варианта я думал просто сохранить его в виде структуры json со всеми имеющимися там данными и просто извлекать данные по требованию каждый раз, когда мне нужно выполнить операцию (хотя данные могут занимать до 50 МБ и загружать такое количество файлов). данные занимают около 2с локально). Еще одним вариантом было бы сохранить его в нечто вроде БД как (row,col,value).

1 Ответ

1 голос
/ 14 апреля 2019

Вопрос относительно использования Redis или любой другой БД зависит от многих системных требований. например:

  1. Какая польза от БД.
  2. Как быстро вы должны получить данные.
  3. какая пропускная способность, ввод / вывод.
  4. Это дБ должны быть кластеризованы / ограждены?

Чтобы ответить на ваш вопрос, если вам нужно перейти с Redis, для того, что вы описали, я бы сказал:

  1. структурировать данные как json / csv.
  2. Используя списки redis для добавления дополнительного объекта к клавише, вы можете прочитать здесь
  3. каждый раз, когда вам нужно прочитать данные, хранящиеся в Redis, вы можете повторять их с пакетами (вам нужно понять, какой пакет лучше всего подходит для вашего использования / инфра).

Другой альтернативой является использование Mongodb. Я уточню, если этот вариант находится на столе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...