Эмуляция поведения соединения с Rails и Mongoid - PullRequest
2 голосов
/ 20 сентября 2011

Просто хотел спросить совета при создании базы данных с помощью mongodb, я много читал, что если у вас есть база данных с большим количеством объединений, лучше использовать, скажем, postgresql.

Итак, если мне нужна гибкость и мне нужно, чтобы мои данные объединялись несколько раз, я должен пойти с Postgresql? Я знаю, что у mongodb есть быстрое чтение / запись, но ему нужно многократно запрашивать, чтобы эмулировать соединения. Так когда же это станет хитом производительности? Ограничивает ли mongodb вашу способность создавать новые сложные отношения с вашими данными, которые ранее не существовали?

Полагаю, привлекательность mongodb заключается в его синтаксисе javascript и сходстве с json:)

Ответы [ 3 ]

4 голосов
/ 20 сентября 2011

Начну с конца:

Полагаю, привлекательность mongodb заключается в его синтаксисе javascript и сходство с json:)

Не только это, а стиль json - не главное преимущество. Основные преимущества mongodb - это возможность встраивания документов, высокая производительность и полная масштабируемость, полная поддержка индексов, отображение / уменьшение и т. Д.

Так что, если я хотел гибкости и нуждался в том, чтобы мои данные объединялись несколько раз, я должен пойти с Postgresql?

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

Я знаю, что у mongodb есть быстрое чтение / запись, но ему нужно запросить несколько раз подражать соединениям. Так когда же это станет хитом производительности?

Если вы будете использовать mongodb в качестве обычной реляционной базы данных (без внедрения и денормализации), вы никогда не достигнете наилучшей производительности.

Ограничивает ли mongodb вашу способность создавать новые сложные отношения на ваши данные, которых раньше не было?

Никакой mongodb не ограничивает вас, поскольку он не содержит никаких ограничений между коллекциями, такими как внешний ключ, в любой базе данных sql + он позволяет встраивать и легко денормализовать данные в соответствии с потребностями вашего бизнеса и достичь наилучшей производительности.

2 голосов
/ 30 июля 2012

Другой альтернативой может быть денормализация ваших данных.

Вы храните копии данных в нескольких таблицах / коллекциях. При этом вы избегаете необходимости объединений и поисков, необходимых для склеивания связанных частей данных.

Вы избегаете объединений и сохраняете больше данных, но ваше общее приложение может быть быстрее.

В mongoid есть два великих драгоценных камня, чтобы упростить это:

Mongoid_alize & Mongoid_denomalize

http://blog.joshdzielak.com/blog/2012/05/03/releasing-mongoid-alize-comprehensive-field-denormalization-for-mongoid/

1 голос
/ 20 сентября 2011
...