2015-04-08 5 views
0

Я использую morphia для подключения к mongoDB. Я собираю ежедневный пробег для автомобилей. Прямо сейчас, каждый ежедневный пробег для всех автомобилей хранится в 1 коллекции со следующим атрибутом: plateNumber, дата, пробегМножество масштабируемых коллекций MongoDB

Мы хотим хранить ежедневные пробеги со всех сторон в 1990 году и далее. Сейчас мы уже поддерживаем около 4500 автомобилей (это примерно 1,3 миллиона записей в год). Мы пытаемся использовать данные за один год, и производительность уже сильно изнашивается. Я думал о разделении хранилища на несколько коллекций на основе номера пластины. поэтому каждый номер пластины будет иметь свою собственную коллекцию, названную после номера пластины. Мне нужны идеи. Есть ли другой способ решить эту проблему?

Дополнительная информация: Как мы будем использовать данные: мы хотим запросить мильяды нескольких автомобилей (иногда на один отдел или на географическую область, на марку/модель и т. Д.) В любой заданный диапазон дат. Итак, давайте просто скажем, что хотим контролировать мильяжи в пригороде, мы проведем миксы с номерами пластин, работающие в этом пригороде с 01 января 2014 года по 23 июня 2014 года, и выполните расчет по данным.

спасибо.

+0

Возможно, вы захотите использовать объемную вставку для старых данных, что значительно быстрее, чем последовательные вставки. –

+0

нормально, но как часто вы хотите запускать эти запросы? Я имею в виду, что отдельные владельцы автомобилей смогут запускать их или в любой момент времени, или вы сделаете это в одночасье, чтобы сделать статистику в течение недели или около того. Также 1,3 миллиона записей не кажутся слишком большими, поэтому я удивлен, что ваша производительность плохая. Какие индексы у вас есть в коллекции? – Pio

+0

указатель на табличке Номер и дата (составной индекс). Вставка не будет проблемой, поскольку она будет проводиться только один раз в год в конце года. Извлечение будет довольно интенсивным. Запросы будут часто выполняться для целей мониторинга. и это всего лишь один год. когда ему будет 10 лет, это будет 13 mil + и так далее. –

ответ

1

В зависимости от того, что ваша конфигурация вы можете попробовать Sharding или вы можете попытаться Partition ваш дб - хотя этот подход hybrid, что означает, что вы бы имитировать разделение с SQL систем управления базами данных (Oracle, SQL Server и т.д.).

отметить также, что если вы insert (в основном добавить) много записей в один файл будет постепенно медленно, поскольку Монго необходимо обновить primary key (mongoID), который должен быть уникальным +, если вы определили другие индексы на collection также необходимо обновить.

Если вы можете предоставить более подробную информацию о том, как вы собираетесь использовать собранные данные и в какие промежутки времени + выполняете эти операции онлайн или в автономном режиме, я обновляю свой ответ.