Быстрое дисковое хранилище с ключом-значением для Python - PullRequest
0 голосов
/ 02 апреля 2020

Мне интересно, существует ли на диске быстрое хранилище значений ключей с привязками Python, которое поддерживает миллионы вызовов чтения / записи для отдельных ключей. Моя проблема заключается в подсчете совпадений слов в очень большой корпорации (Википедия) и постоянном обновлении количества совпадений. Это включает чтение и запись ~ 300 миллионов значений 70 раз с 64-битными ключами и 64-битными значениями.

Я также могу представить мои данные как разреженную матрицу angular верхнего размера с размерами ~ 2M x 2M.

До сих пор я пробовал:

  • Redis (64 ГБ ОЗУ недостаточно велико)
  • TileDB SparseArray (нет способа добавить к значениям)
  • Sqlite (слишком медленно)
  • LMDB (пакетирование 300 миллионов операций чтения / записи в транзакциях занимает несколько часов)
  • Zarr (обновление на основе координат выполняется СУПЕР медленно)
  • Scipy .npz (не может хранить матрицы в памяти для части сложения)
  • разреженный COO с записанными в памяти координатами и данными (использование ОЗУ огромно при добавлении матриц)

Right теперь единственное решение, которое работает достаточно хорошо, - это LMDB, но время выполнения составляет ~ 12 дней, что кажется неразумным, поскольку не похоже, что я обрабатываю столько данных. Сохранение субматрицы (со значениями ~ 300M) на диск с использованием .npz происходит практически мгновенно.

Есть идеи?

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