Я использую MongoDB v3.2.0 с версией Mongo Java Driver 3.0.4. Я использую BasicDBObject
(устаревший) вместо использования Document
в java, так как мне нужно внести много изменений для преобразования в документ в моем автономном проекте java. Может ли кто-нибудь сказать мне, перейдя в Document, будет ли какое-либо улучшение производительности в памяти и при вставке и чтении больших коллекций. Есть ли способ улучшить мои частые операции записи и чтения в MongoDB с помощью java.
MongoDB BasicDBObject против документа в Java
Ответы (2)
Базовый объект DBobject не устарел. Единственная устаревшая часть в BasicDBobject — это класс DBPointer
и несколько других методов, таких как toString() and getId()
.
Документ реализует Map<String, Object>
, и для написания меньше кода по сравнению с базовым объектом БД.
DBObject Хотя это и не рекомендуется для новых приложений, те, кто обновляет серию драйверов 2.x, могут продолжать использовать интерфейс DBObject для представления документов BSON. DBObject похож на Document в том, что он представляет значения BSON как Object, но у него есть несколько недостатков, которые было невозможно устранить:
это интерфейс, а не класс, поэтому его API нельзя расширить без нарушения бинарной совместимости.
На самом деле он не реализует Map.
Поскольку это интерфейс, требуется отдельный конкретный класс с именем BasicDBObject, который реализует этот интерфейс.
Bson Чтобы связать все это вместе, драйвер содержит небольшой, но мощный интерфейс под названием Bson. Любой класс, представляющий документ BSON, независимо от того, включен ли он в сам драйвер или получен от третьей стороны, может реализовать этот интерфейс, а затем может использоваться в любом месте высокоуровневого API, где требуется документ BSON.
Драйверы 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 или более поздних. В устаревшем драйвере отсутствует поддержка сеансов, транзакций и потоков изменений. Выбирай с умом.
Map<K,V>
, и в большинстве случаев ваше приложение должно просто использовать эти методы интерфейса. Кроме того,BasicDBObject
фактически не помечен как устаревший. Хотя, вероятно, лучше всего использоватьDocument
там, где это возможно. Различные уровни абстракции драйверов по-прежнему используютDBObject
- person Neil Lunn   schedule 03.07.2017