2013-08-28 3 views
1

Просто общий вопрос здесь. Я занимаюсь обучением на MongoDB, и, чтобы выйти на правую ногу, мне хотелось бы узнать, как организовать коллекции для примера бюджетного приложения.MongoDB - Как организовать коллекции

Как и в любом домашнем бюджете, у меня есть «категории», такие как «Дом», «Авто», и у меня также есть подкатегории в таких категориях, как Ипотека и Автомобильные платежи.

У каждого счета будет установленный срок, минимальная сумма, прогнозный платеж, прогноз даты платежа, фактический платеж и фактическая дата платежа.

Каждый счет должен быть «кем-то», например Главная, Ипотека может быть связана с Bank of America, а Bank of America может иметь контактную информацию (телефон, почтовый адрес).

Выполнение перехода от структуры таблиц к Mongo немного запутанно, поэтому я ценю любые мнения о том, как подойти к этому.

+0

Начните с чтения документов моделирования данных: http://docs.mongodb.org/manual/core/data-modeling/ Существует множество вариантов, и не все из них могут соответствовать вашим требованиям. – WiredPrairie

ответ

1

Вопрос очень общий. В общем :) следующие принципы применимы к конструкции схемы в MongoDB:

  • Компоновка ваших коллекций следует руководствоваться принципами звукового моделирования. С MongoDB вы можете иметь схему, которая более близко напоминает структуру объектов ваших данных, в отличие от реляционной «проекции» ее.

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

  • Вы часто можете и должны «денормализовать», чтобы достичь вышеуказанных двух. Совсем не плохо с MongoDB. Недостатком денормализации является то, что обновления становятся более дорогими, и вам необходимо следить за их согласованностью. Но эти недостатки часто перевешиваются более естественным моделированием и большей эффективностью чтения.

Из вашего описания выше, это звучит так, как будто у вас уже есть довольно «реляционная» модель. Попытайтесь избавиться от этого и обратиться к проблеме с новым умом. Думайте объекты, а не таблицы.

+0

Итак, мышление «объект» - это то, где моя проблема тогда лежит. Во всех этих полях я не уверен, что является корневым объектом. Я разрывается между самой транзакцией и получателем. – ChadM

+0

Мышление «объективно» означает мышление как можно более естественным :) Часто нет ни одного решения. Попробуйте несколько разных подходов и пройдите через типичные операции вашей системы, чтобы увидеть, как вы будете реализовывать их с данной моделью. Тот, который чувствует себя наиболее естественным (изящным, смею сказать), является правильным. Это тоже должно быть быстро :) – drmirror

Смежные вопросы