Сохранение битрейзов в 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, и я не могу найти помощь в другом месте в Интернете. Помогите мне, пожалуйста.

Я понял, что могу использовать двоичный тип данных 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.

Надеюсь, это поможет любому, кто ищет это. Приветствия 🙂