MongoDB BasicDBObject против документа в Java

Я использую MongoDB v3.2.0 с версией Mongo Java Driver 3.0.4. Я использую BasicDBObject (устаревший) вместо использования Document в java, так как мне нужно внести много изменений для преобразования в документ в моем автономном проекте java. Может ли кто-нибудь сказать мне, перейдя в Document, будет ли какое-либо улучшение производительности в памяти и при вставке и чтении больших коллекций. Есть ли способ улучшить мои частые операции записи и чтения в MongoDB с помощью java.


person Soorya Prakash    schedule 03.07.2017    source источник
comment
На самом деле оба реализуют в своем ядре Map<K,V>, и в большинстве случаев ваше приложение должно просто использовать эти методы интерфейса. Кроме того, BasicDBObject фактически не помечен как устаревший. Хотя, вероятно, лучше всего использовать Document там, где это возможно. Различные уровни абстракции драйверов по-прежнему используют DBObject   -  person Neil Lunn    schedule 03.07.2017


Ответы (2)


Базовый объект DBobject не устарел. Единственная устаревшая часть в BasicDBobject — это класс DBPointer и несколько других методов, таких как toString() and getId().

Документ реализует Map<String, Object>, и для написания меньше кода по сравнению с базовым объектом БД.

DBObject Хотя это и не рекомендуется для новых приложений, те, кто обновляет серию драйверов 2.x, могут продолжать использовать интерфейс DBObject для представления документов BSON. DBObject похож на Document в том, что он представляет значения BSON как Object, но у него есть несколько недостатков, которые было невозможно устранить:

  1. это интерфейс, а не класс, поэтому его API нельзя расширить без нарушения бинарной совместимости.

  2. На самом деле он не реализует Map.

  3. Поскольку это интерфейс, требуется отдельный конкретный класс с именем BasicDBObject, который реализует этот интерфейс.

Bson Чтобы связать все это вместе, драйвер содержит небольшой, но мощный интерфейс под названием Bson. Любой класс, представляющий документ BSON, независимо от того, включен ли он в сам драйвер или получен от третьей стороны, может реализовать этот интерфейс, а затем может использоваться в любом месте высокоуровневого API, где требуется документ BSON.

person karthik006    schedule 03.07.2017

Драйверы MongoDB Java в диапазоне версий 3.0–3.12.2 имеют драйвер «Uber», который содержит как устаревшие клиентские реализации, так и более новый клиент. При рассмотрении org.bson.Document по сравнению с com.mongodb.BasicDBObject класс org.bson.Document используется с более новым стеком клиента, тогда как com.mongodb.DBobject или com.mongodb.BasicDBObject используются в устаревшем стеке клиента. Это может быть очень запутанным, если в одном драйвере есть как старые, так и новые вещи. Если вас интересует только новый клиент, см. драйвер под названием «mongodb-driver-sync» MVN-репозиторий по адресу https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-sync. Если вам нужны только старые версии, см. https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-legacy. Некоторые артефакты универсальны, например com.mongodb.WriteConcern. Таким образом, они будут существовать как в устаревшем, так и в синхронизированном виде. Насколько я понимаю, этого драйвера «Uber» не будет в версии 4.0 или более поздних. В устаревшем драйвере отсутствует поддержка сеансов, транзакций и потоков изменений. Выбирай с умом.

person barrypicker    schedule 19.03.2020