У меня есть двоичное поле, которое я храню в монго. Значение представляет собой хеш MD5 на данный момент, но есть шанс, что это может измениться в будущем. Я пытаюсь решить, какой двоичный подтип bson использовать. В частности, я не уверен, следует ли использовать BSON.BSON_BINARY_SUBTYPE_DEFAULT или BSON.BSON_BINARY_SUBTYPE_MD5. Способно ли монго использовать этот подтип для выполнения каких-либо оптимизаций? Например, может ли он построить более интеллектуальные индексы, если он знает, что это MD5?Для двоичных полей bson mongo использует подтип по любой причине
ответ
MongoDB может хранить хешированный индекс, используя «скрытые» ключи привязки.
https://docs.mongodb.com/manual/core/index-hashed/
Если вы не хотите, чтобы выполнить запрос подстановочного выставлял этот конкретным индекс, индекс хэша может «сжиматься» или «расширение» Индексируемо полем вниз/до известного размера. Это означает, что вы можете индексировать очень длинную строку (длиной 4 МБ) с помощью указательного ключа длины, заданного функцией хэширования (возможно, длиной 32 байта).
Приложение не нуждается ни в чем знать о функции хеширования или внутри, вы увидите только более быстрые результаты запроса за счет потенциальных, но чрезвычайно маловероятных хеш-коллизий.
Тогда есть также побитовые операторы привязки, доступные для приложения, включая тип привязки, который вы хотите сохранить. Наиболее очевидным случаем является веб-приложение, хранящее журналы, включая IP-адрес пользователя в виде двоичных данных и подтип, определенный пользователем.
Ваш запрос может использовать $ bitsAllSet для использования стандартных сетевых масок для запроса того, какие соединения были сделаны из определенного сетевого диапазона. MongoDB вполне способен проверить, что
- ключ документа содержит правильный подтип (определяется пользователем и не UUID/MD5)
- если первый матч проходит, он будет выполнять несколько более дорогостоящую операцию побитового ,
https://docs.mongodb.com/v3.2/reference/operator/query-bitwise/
- 1. BSON для двоичных данных
- 2. BSON :: ObjectId vs Mongo :: ObjectID
- 3. Mongo BSON Типы в Mongoose
- 4. Документ Mongo JSON -> JSON -> BSON
- 5. приоритету метода, который использует подтип
- 6. Mongo дает ошибку ключа dup для полей с уникальным: false
- 7. mongo bson insert/read child records
- 8. rmongodb: преобразование значений mongo bson в dataframe
- 9. как перейти от JAXB к BSON для Mongo DB
- 10. Понимание двоичных подтипов в BSON: что такое «функция» (\ x01) и какие возможные пользовательские подтипы существуют?
- 11. Не можете заменить «\ п» с «\\» по любой причине
- 12. Почему Play Framework использует JSON, почему MongoDb использует BSON
- 13. Предотвращение mgo/bson Unmarshal для очистки нераспределенных полей
- 14. Mongo индексы для обновлений/вставок полей
- 15. mongo C++ Bsonbuilder, BSONObj to final c BSON
- 16. Подтип подписи Bytebuddy по имени
- 17. mongo-cxx-driver -New C++ 11 driver - Как создать документ из двоичных данных
- 18. Любой, кто использует Moonlight?
- 19. StringIndexOutOfBoundException по неизвестной причине
- 20. APP отвергнут по причине 2,16
- 21. Mongo использует индексы с сортировкой
- 22. NaN по неизвестной причине
- 23. ArrayIndexOutOfBoundsException по неизвестной причине
- 24. Любой, кто использует Python для встроенных проектов?
- 25. C++ Глобальное сопоставление для полей базы данных mongo
- 26. Mongo + проверить несколько существующих полей
- 27. Как создать метод с возвращаемым типом как любой подтип суперкласса
- 28. неинициализированной постоянная BSON :: Документ
- 29. Как преобразовать BSON типа Rust Mongo в ObjectId?
- 30. Лак умер по неизвестной причине для меня
Но эти подтипы являются только частью спецификации BSON, он не должен увидеть что-то с сервером MongoDB сами по себе, в базе данных все сохраняется как BSON, подтипы являются перечисляемые типы, вы используете в своем приложении. – Euclides
@Euclides Я думаю, это мой вопрос. Являются ли подтипы только для прикладной логики, или Монго использует эти подтипы для каких-либо оптимизаций? – herbrandson
Да, это только для логики приложения. Есть что-то названное хешированным индексом, но согласно документации MongoDB поддерживает хешированные индексы любого отдельного поля, но даже в этом случае речь идет не о подтипах, на которые вы смотрите. – Euclides