 
                        
                    Scylladb против Mongodb: как число оптимизирует NOSQL для производительности и гибкости
31 июля 2025 г.Числовы используют как SCYLLADB, так и MongoDB в течение 5+ лет. Узнайте, на какую базу данных NOSQL они полагаются на различные варианты использования и почему.
В домене NOSQL SCYLLADB и MongoDB находятся два совершенно разных животных. MongoDB не нуждается в введении. Его простое принятие и обширное сообщество/экосистема сделали его фактическим стандартом для начала работы сNosqlи питание бесчисленных веб -приложений. Архитектура Scylladb, близкая к металлу, обеспечивает предсказуемую низкую задержку при высокой пропускной способности. Это приводит к всплеску усыновления в таких командах, какРаздорВТрактянини многие другие, которые масштабируютсяДанные приложенияи ударить по стене своими существующими базами данных.
Но миграции базы данных здесь не являются фокусом. Вместо этого давайте посмотрим, как эти две явно разные базы данных могут сосуществовать в одном и том же техническом стеке - как они принципиально различаются, и лучшие варианты использования для каждого. Подобно тому, как разные ботинки работают лучше для управления марафоном против масштабирования Mount Everest против посещения вашей свадьбы, разные базы данных работают лучше для различных вариантов использования с различными рабочими нагрузками и задержкой/ожиданиями пропускной способности.
Итак, когда вы должны использовать Scylladb против Mongodb и почему? Вместо того, чтобы предоставлять точку зрения поставщика, мы будем поделиться пониманием энтузиаста с открытым исходным кодом, который имеет большой опыт использования как Scylladb, так и в Mongodb в производстве: Алексис Джейкоб, технический директор. Алексис поделился своей точки зрения на Scylladb Summit 2019, и с тех пор видео стало тенденцией.
Вот три ключевых вывода из его подробного технического разговора:
Масштабирование пишет более сложный на MongoDB
Базовая единица топологии MongoDB называется набором реплик, который состоит из одного первичного узла и обычно нескольких вторичных узлов (придумайте о горячих репликах). Только основной узел разрешено записывать данные. После того, как вы получите максимум вертикального масштабирования записи на MongoDB, ваш единственный вариант для масштабирования становится тем, что называется оскорбленным кластером. Это требует добавления новых наборов реплик, потому что у вас не может быть нескольких первичных, в одном наборе реплик.
Данные о шарнинге в наборах реплик MongoDB требуют использования специального ключа, чтобы указать, за какие данные отвечает каждый набор реплик, а также создание набора реплики метаданных, которое отслеживает, какой срез данных живет на каждой копии (синий треугольник на диаграмме ниже). Кроме того, клиенты, подходящие к кластеру MongoDB, нуждаются в помощи в определении того, какой узел обратиться. Вот почему вам также нужно развернуть и поддерживать экземпляры Smart Router MongoDB (представленные прямоугольниками в верхней части диаграммы), подключенные к наборам реплик.

Сложность масштабирования пишет в MongoDB
Наличие всех этих узлов приводит к более высоким затратам на эксплуатацию и технического обслуживания, а также впустую ресурсы, поскольку вы не можете использовать IO реплики узлов для записей, что делает Sharded Mongodb кластеры худшим врагом вашей общей стоимости владения, как отметил Алексис.
Для Scylladb, Scaling пишет намного проще. Он объяснил: «На стороне Scylladb, если вы хотите добавить больше пропускной способности, вы просто добавляете узлы. Конец истории».

Алексис связала эту нить масштабирования:
«Избегайте создания кластеров MongoDB, пожалуйста! Я мог бы написать книгу с военными историями по этой самой теме. Основная причина заключается в том, что MongoDB не связывает рабочую нагрузку с процессорами. И шарнинг, распределение данных между наборами реплик в кластере выполняется на фоновой работе (балансировщик). Этот балансировщик всегда работает, всегда смотрит на то, что всегда и в том, что иначе и есть. Это не естественно, потому что он не основан на последовательном хешировании.
MongoDB способствует гибкости по сравнению с производительностью, в то время как SCYLLADB способствует постоянной производительности по сравнению с универсальностью
SCYLLADB и MongoDB имеют явно разные приоритеты, когда речь идет о гибкости и производительности.
На фронте моделирования данных MongoDB изначально поддерживает геопространственные запросы, поиск текста, трубопроводы агрегации, графические запросы и изменения потоков. Хотя SCYLLADB-широкий магазин столбцов (a.k.a. Value Key-Key)-поддерживает определенные пользовательские типы, счетчики и легкие транзакции, параметры моделирования данных более ограничены, чем на MongoDB. Алексис отметил: «С точки зрения развития, взаимодействие с объектом JSON просто чувствует себя более естественным, чем взаимодействие с ряд». Более того, в то время как MongoDB предлагаетвариантобозначения схемы применения перед внедрением данных, ScylladbтребуетЭти данные придерживаются определенной схемы.
Запрос также проще с MongoDB, так как вы просто фильтруете и взаимодействуете с JSON. Это также более гибко, к лучшему или к худшему. MongoDB позволяет вам выдавать любой тип запроса, включая запросы, которые вызывают неоптимальную производительность с вашей рабочей нагрузкой. Scylladb не допустит этого. Если вы попробуете, Scylladb будет предупреждать вас. Если вы решите продолжить свой собственный риск, вы можете ввести квалификатор, указывающий, что вы действительно понимаете, во что вы сами.


Алексис суммировала ключевые отличия с точки зрения развития:
«MongoDB способствует гибкости из -за производительности. С ним легко взаимодействовать, и это не будет на вашем пути. Но это окажет влияние на производительность - воздействия, которые хороши для некоторых рабочих нагрузок, но неприемлемым для других. С другой Хорошо с системой.
Важно отметить, что даже запросы, которые следуют перед лучшими практиками производительности, будут вести себя иначе на MongoDB, чем на scylladb. Независимо от того, насколько вы осторожны, вы не будете преодолеть штраф за эффективность, связанное с фундаментальными архитектурными различиями.
Вместе scylladb и mongodb - отличная комбо nosql
«Это не смертельный матч; мы счастливы пользователи Mongodb и Scylladb», - продолжила Алексис.
Число выбирает лучшую базу данных для технических требований каждого варианта использования.
По численности, MongoDB используется для двух типов вариантов использования:
- Веб -бэкдинги с API REST и, возможно, гибкими схемами.
- Запросы в реальном времени по непредсказуемым поведенческим данным.
Например, некоторые из приложений numberly заводят данные веб-отслеживания, которые их клиенты собирают и отправляют (каждый клиент со своими собственными внутренними разработанными приложениями). В числе нет способа навязать строгую схему на эти данные, но она должна иметь возможность запросить и обрабатывать ее. По словам Алексис, «MongoDB здесь в порядке; его гибкость выгодна, потому что он позволяет нам просто хранить данные где -то где -то и легко запрашивать их».
SCYLLADB используется для трех типов вариантов использования по численности:
- Чувствительные к задержке в режиме реального времени трубопроводы данных.Это включает в себя много обогащения данных, где существует несколько источников данных, которые необходимо коррелировать в режиме реального времени на трубопроводах данных. По словам Алексиса, «это сложно сделать… и вам нужны гарантия с сильной задержкой, чтобы не сломать соглашения об уровне обслуживания] приложений и процессов данных, которые ваши клиенты полагаются на трубу».
- Смешанная партия и рабочие нагрузки в реальном времени.Число также смешивает много рабочих нагрузок партии и в реальном времени в Scylladb, потому что он обеспечивает лучшее из обоих миров (как числоРанее обменивался) «У нас был улей на одном пути и Mongodb на другом. Мы поместили все на Scylladb и его устойчивые рабочие нагрузки, похожие на Hadoop, и рабочие нагрузки в реальном времени».
- Веб -бэкэнды с использованием GraphQL, которая налагает строгую схему.Некоторые из веб -бэкэнов Numberly реализованы в GraphQL. При работе с API на основе схемы имеет смысл иметь базу данных на основе схемы с низкой задержкой и высокой доступностью.
Алексис пришел к выводу: «Многие из наших бэкэнд -инженеров, а также инженеров -фронтаж также принимают Scylladb. Мы видим тенденцию к принятию людей, все больше и больше технических людей, спрашивающих:« У меня есть этот вариант использования, будет ли Scylladb подходит? Есть несколько действительно интересных функций.
Бонус: больше пониманий от Алексиса Джейкоба
Алексис является чрезвычайно щедрым участником сообществ с открытым исходным кодом в отношении переговоров как кода, так и на конференции. Увидеть больше его вклада вhttps://ultrabug.fr/
ОСинтия Данлоп
Синтия - старший директор по контент -стратегии в Scylladb. Она писала о разработке программного обеспечения и качественной инженерии в течение 20+ лет.
Оригинал
