Мне интересно, существует ли на диске быстрое хранилище значений ключей с привязками 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 происходит практически мгновенно.
Есть идеи?