Сохранение битрейзов в MongoDB
Я строю фильтры Bloom в своей компании и нуждаюсь в сериализации и сохранении их в MongoDB. Структура документа, которую я сейчас использую, выглядит так:
{ '_id': unique ID, 'm': number of bits in Bloom filter, 'n': capacity of Bloom filter, 'k': number of hashes, 'bitarray': a string of the Bloom filter's bitarray, 'seeds': a list of seeds for the k hashes }
Как вы можете видеть, битаррей в настоящее время представлен как строка, а битрейты фильтра Bloom могут стать огромными для большей емкости. Один документ в моей базе данных сейчас составляет около 5 мегабайт, что ужасно.
Если это так или иначе, я программирую на Python и использую PyMongo в качестве адаптера.
Я, конечно, считаю, что это неправильный способ сохранить bitarrays, и я не могу найти помощь в другом месте в Интернете. Помогите мне, пожалуйста.
- Python: недопустимый буквенный индекс для базы данных Int () 10
- Как обновить Mongo-документ после его вставки?
- Ошибка с OMP_NUM_THREADS при использовании распределенного пакета
- Есть ли ограничение на количество таблиц, которые может иметь база данных PostgreSQL?
- Что вызывает «неспособность подключиться к источнику данных» для pyodbc?
Я понял, что могу использовать двоичный тип данных BSON для выполнения моей работы. Чтобы сериализовать объекты моего фильтра Bloom, я сделал следующее:
from bson.binary import Binary obj = BloomFilter() serialized = obj.__dict__.copy() serialized['bitarray'] = Binary(obj.bitarray.tobytes())
Обратите внимание, что bitarray – это библиотека bitarray Python, а не BitString
. Заключительный словарь, serialized
легко вставлялся в MongoDB.
Надеюсь, это поможет любому, кто ищет это. Приветствия 🙂
- Flask – API, созданные с помощью API-интерфейсов Flask-restful vs Class Based Views
- используя пакет sitemap с django on heroku
- Django и разработка приложения с занятиями в тренажерном зале
- Вставка MongoDB повышает повторяемость ключа
- Удаление частичных данных в mongoDB
- Монго связи / ссылки: наиболее эффективный способ? Примеры?
- MongoDB Оптимизация FindAndModify или Найти + Сортировать
- Обновление Pymongo: возможно ли вставить поле с '$ currentDate' только один раз?
- Почему я получаю эту ошибку в монгольском запросе?
- Django / SQL: отслеживание того, кто читает что на форуме
- SQLAlchemy – самореляционное отношение Many-to-many с дополнительным столбцом