Подтвердить что ты не робот

Является ли MongoDB объектно-ориентированным?

На веб-сайте MongoDB они написали, что MonogDB является Document-ориентированной базой данных, поэтому, если MongoDB не является объектно-ориентированной базой данных, то что это? и каковы различия между документами и объектно-ориентированными базами данных?

4b9b3361

Ответ 1

Я думаю, что doc-ориентированные и объектно-ориентированные базы данных совершенно разные. Чрезвычайно подробное сообщение об этом здесь:

http://blog.10gen.com/post/437029788/json-db-vs-odbms

Ответ 2

Это может быть немного поздно в ответ, но просто подумал, что стоит отметить, есть большие различия между ODB и MongoDB.

В общем, фокус ODB - это прозрачные ссылки (отношения) между объектами в произвольно сложной модели домена, без необходимости использовать и управлять кодом для чего-то вроде DBRef. Даже если у вас есть несколько тысяч классов, вам не нужно беспокоиться об управлении любыми ключами, они предоставляются бесплатно, и когда вы создаете экземпляры этих 1000 классов во время выполнения, они автоматически создадут схему в базе данных.. даже для вещей, подобных объекту саморегуляции, с коллекциями коллекций.

Кроме того, ваши транзакции могут охватывать эти ссылки, поэтому вам не нужно использовать полностью внедренную модель.

Понятиями являются те, которые используются в решениях ORM, таких как JPA, управляемый непрерывный жизненный цикл объекта, берут из пространства ODB, но ОГРОМНАЯ разница заключается в том, что в ODB нет отображения AT ALL, а отношения сохраняются как часть базы данных, поэтому для решения отношений не существует runtime JOIN, все отношения разрешаются с той же скоростью, что и b-tree look-up. Для тех из вас, кто использовал Hibernate, представьте себе Hibernate без ЛЮБОГО файла сопоставления и на порядок быстрее, потому что нет никакой очереди в режиме реального времени за кулисами.

Кроме того, ODB позволяет запрашивать любые отношения в вашей модели, поэтому вы не ограничены запросами в определенной коллекции, так как вы находитесь в MongoDB. Конечно, индексы hash/b-tree/aggregate поддерживаются так, что запросы очень быстры, когда они используются.

Вы можете развернуть экземпляры любого класса в ODB на уровне класса и во время выполнения правильная версия класса будет разрешена. Совсем не так, как он работает в MongoDB, поддерживая код, чтобы решить, как обращаться с различными формами blob (или объекта ценности), которые возникают в результате разработки базы данных без схемы... или написания кода для посещения и изменения каждого объекта значения, потому что вы хотели изменить схему.

Что касается partioning, я думаю, что намного проще выбрать модель разделения для модели домена, которая может разговаривать через суровые объекты, тогда она должна определить стратегию внедрения be-all, end-all для в вашей коллекции содержатся документы в MongoDB. В качестве красноречивого примера у вас есть Контакт и адрес и ShoppingCart, и они связаны в документе JSON, и вы решили разделить на Contact by Contact_id. Абсолютно ничего не мешает вам относиться к этим 3 классам как к объектам, а не к документам JSON, и хранить их с разделом на Contact_id так же, как и с MongoDB. Однако, если у вас есть еще одна учетная запись объекта, и вы хотели бы управлять ею не вложенным способом из-за некоторых агрегированных операций выставления счетов, выполненных в учетных записях, вы можете получить это бесплатно (нет необходимости создавать код для типа DBRef) в ODB... и вы можете выбрать раздел справа вместе с контактом или выбрать для хранения учетных записей в полностью отдельном физическом node, но все это будет подключено во время выполнения в прикладном пространстве... точно так же, как магия.

Если вы хотите увидеть действительно крутое видео о том, как создать приложение с ODB, которое показывает распределение, перемещение объекта, отказоустойчивость, оптимизацию производительности.. см. это (если вы хотите перейти к крутой части, прыгать 21 минута, и вы избежите создания приложения и просто посмотрите, насколько легко добавить распространение и отказоустойчивость к любому существующему приложению):

http://www.blip.tv/file/3285543

Ответ 3

Документ-ориентированный

  • Документы (объекты) хорошо видны для типы данных языка программирования
  • Встроенные документы и массивы уменьшают потребность в соединениях
  • Динамически типизированная (схематическая) для легкая эволюция схемы.
  • Нет объединений и нет (многопользовательский) транзакции для высокой производительности и простота масштабирования

(Введение MongoDB)

В моем понимании MongoDB рассматривает каждую отдельную запись, такую ​​как Документ, независимо от того, что это 1 поле или n полей. Вы даже можете иметь встроенные документы внутри документа. Вам не нужно определять схему, которая очень строго контролируется в других реляционных системах баз данных (MySQL, PorgeSQL и т.д.). Я использовал MongoDB некоторое время, и мне очень нравится его философия.

Объектно-ориентированный - это модель базы данных, в которой информация представлена ​​в виде объектов, используемых в объектно-ориентированном программировании (Wikipedia).

Ответ 4

Документированная база данных - это другая концепция для объектных и реляционных баз данных. База данных документа может содержать или не содержать поле, тогда как реляционная или объектная база данных ожидает, что недостающие поля будут заполнены нулевой записью.

Представьте, что вы сохраняете строку XML или JSON в одном поле в таблице базы данных. Это похоже на то, как работает база данных документов. Он просто позволяет хранить полуструктурированные данные в базе данных без большого количества нулевых полей.