Хранение реляционных данных на основе документов

Должен ли я хранить свои реляционные данные в MongoDB?

Любое понимание моей уникальной ситуации (обрисовано в общих чертах ниже) будет с благодарностью! Как и в любом проекте, мои ресурсы чрезвычайно ограничены. Я стремлюсь улучшить производительность при минимальных затратах.:)

Фон

  1. Я работаю над проектом с обширной и сложной моделью данных.
    1. 84 первичных стола
    2. 44 просмотра во вторичные таблицы
    3. 600 тыс. Экземпляров основного типа
    4. 500000000+ кортежей, поддерживающих 600000 основных предметов
  2. Модель хорошо нормализована и хорошо продумана.
  3. Многие предметы были денормализованы для производительности.
  4. Наш уровень доступа к данным использует Hibernate для ORM.

Постановка задачи

Hibernate объединяет 84 таблицы + 44 представления вместе для сопоставления первичного элемента данных (я буду называть первичный элемент данных THEObject). Эта конструкция чрезвычайно дорогая (один узел Oracle db). Сборка THEObject и его детей может занять несколько минут.

Между экземплярами THEObject очень мало данных. Данные, которые являются общими, в основном доступны только для чтения (наподобие пользовательских данных, ссылки на общую конфигурацию...)

Сохранение THEObject также чрезвычайно дорого.

В качестве побочного проекта я создал набор bean-компонентов для представления данных THEObject, скопировал данные из дорогого экземпляра THEObject в bean-компоненты, а затем сериализовал bean-компонент в XML с использованием xstream. Преобразование из THEObject в бин, сериализация бина и хранение XML, представляющего бин, заняли всего 26 мс. (Нигде около 6 минут, необходимых для сохранения THEObject обратно, используя спящий режим поверх нашего реляционного представления). Оо

Я думаю, что мое приложение будет лучше обслуживаться базой данных на основе документов, потому что данные, с которыми я работаю, делятся на 3 основных типа чанков (интеллектуальные коллекции), а чанк, представляющий THEObject, разделяет данные от 2 других основных чанков, но не разделяет любые свои собственные данные среди других экземпляров THEObject. Это позволило бы мне прочитать THEObject как единое целое без каких-либо объединений или снижения производительности, связанного с нормализованным хранением.

Разумно ли хранить мои данные в базе данных на основе документов, несмотря на то, что это действительно реляционные данные?!

Релевантное чтение

Почему я должен использовать базу данных на основе документов вместо реляционной базы данных?

Нереляционный дизайн базы данных

MongoDB против Кассандры

Что такое NoSQL, как он работает и какие преимущества он дает?

0 ответов

Другие вопросы по тегам