Стоит ли пробовать MonetDB?

У кого-нибудь был опыт работы с MonetDB? В настоящее время у меня слишком большая база данных MySQL, а запросы становятся слишком медленными. Согласно парадигме, ориентированной на столбцы, вставки будут выполняться медленнее (что мне совсем не важно), но поиск данных становится очень быстрым. Есть ли у меня шанс повысить производительность поиска данных, просто переключившись на MonetDB? Это MonetDB достаточно зрелый?

2 ответа

Решение

У вас есть шанс улучшить производительность вашего приложения. Однако выигрыш в значительной степени зависит от вашей рабочей нагрузки, размера вашей базы данных и вашего оборудования. MonetDB разработан / настроен в соответствии с двумя основными предположениями:

  1. Ваша рабочая нагрузка является аналитической, т. Е. У вас много (сгруппированных) агрегатов и тому подобное.
  2. Еще более важно: ваш горячий набор данных (данные, с которыми вы на самом деле работаете) помещается в основную память вашей системы. MonetDB не имеет своего собственного Buffer Manager, но использует ОС для обработки дискового ввода-вывода. Поскольку операционная система (особенно Windows, но и Linux) иногда очень глупа в отношении замены диска, что может стать проблемой (особенно для объединений, для которых не хватает памяти).

Что касается зрелости, то здесь, вероятно, больше мнений, чем людей, населяющих эту планету. Лично я нахожу это достаточно зрелым, но я являюсь членом команды разработчиков и, таким образом, предвзятым. Но MonetDB - это исследовательский проект, поэтому, если у вас есть интересное приложение, мы хотели бы услышать об этом и посмотреть, сможем ли мы помочь.

Ответ, конечно, зависит от вашей полезной нагрузки, но мой опыт покажет, что в MonetDB все происходит быстрее, чем в MySQL. Исключением являются соединения, которые не только кажутся медленными, но и совершенно неуместны при конвейерной обработке, поэтому вам в конечном итоге понадобятся большие объемы памяти для обработки больших. Тем не менее, мой опыт работы с объединениями в MySQL тоже не был звездным, поэтому я предполагаю, что ваши ожидания могут быть низкими. Если вам действительно нужна хорошая производительность соединения, я бы порекомендовал SQL Server и т. П.; для тех других запросов, которые вы упоминаете в последующих комментариях, MonetDB должен быть великолепным.

Например, учитывая таблицу с примерно 2 миллионами строк, я смог выбрать диапазон для одного столбца (где в диапазоне было около 800 тыс. Строк) и упорядочить по другому столбцу, а ограниченный результат был обработан и возвращен за 25 мс. Производительность запросов такого типа, по-видимому, снижается в зависимости от масштаба, но это должно дать вам представление о том, что вы можете ожидать в этом масштабе.

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

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