Подтвердить что ты не робот

Кто-нибудь работал с Aerospike? Как он сравнивается с MongoDB?

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

Мне особенно интересно, как Aerospike сравнивается с MongoDB.

4b9b3361

Ответ 1

Я использовал Aerospike, MongoDB и Redis и проверил множество других баз данных NoSQL. Я бы сказал, что Aerospike очень хорош в том, что он делает, но отличается от MongoDB. Все зависит от того, на что вы планируете использовать базу данных. Я могу привести пример того, для чего я использую разные базы данных. Я также могу разобраться в различиях между ними и обсудить преимущества Aerospike.

MongoDB

Я использую MongoDB как альтернативу SQL. В моей базе данных MongoDB у меня много разных полей. Часто меняются поля, и я буду случайным образом запрашивать различные поля. Это очень неструктурированная база данных, и MongoDB поражает этим. Я также использовал MongoDB в качестве стандартного хранилища ключей. Он работает хорошо, но у меня MongoDB выполнял суб-оптимально как по шкале транзакций, так и по шкале базы данных. Разумеется, база данных могла быть оптимизирована немного лучше, но мне очень сложно найти документацию по правильной настройке MongoDB в разных ситуациях.

Redis

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

Aerospike

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

Лучшей особенностью Aerospike является ее способность масштабироваться. Самая большая проблема, которую мне пришлось решить при изучении Aerospike, - это масштабирование моей системы для обработки больших наборов данных, оставаясь чрезвычайно быстрыми. Проект, который я использую Aerospike for, имеет очень строгие требования к скорости. Я обычно делаю 3-4 поиска по базам данных и другой обработке и должен иметь время транзакции суб-50 мс. Несколько поисковых запросов находятся на наборах данных, которые составляют 300 ГБ+. Я не мог найти решение для хранения этих данных и сделать его доступным в разумные сроки. Redis, очевидно, не сработает, если у меня не было машины с 300 ГБ + ОЗУ. MongoDB начал работать крайне плохо с размером намного ниже 300 ГБ. Поэтому я дал Aerospike выстрел, и он смог справиться со всем очень хорошо. Лучшее в Aerospike: по мере того как мой набор данных вырос, мне не пришлось делать больше, чем при необходимости вставать в новую коробку. Скорость оставалась непротиворечивой.

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

Заключение

Итак, Aerospike так же хорош, как они утверждают? Лично я видел не что иное, как то, что было заявлено. Мне не пришлось масштабировать до 1 млн. TPS, но я верю, что хватит оборудования, которое было бы возможно. Я также считаю, что цифры показывают разницу в скорости между Aerospike и MongoDB. Aerospike - это гораздо более "настроенная" и "запланированная" база данных, чем MongoDB. Из-за этого Aerospike будет намного быстрее в масштабе, чем MongoDB. Остается только беспокоиться о единичных (или в случае вторичных индексов, нескольких сотен) индексах, в отличие от MongoDB, которые могут динамически меняться. Вопрос, который вам действительно нужно задать, - это то, что вы пытаетесь выполнить с помощью своей базы данных. Затем посмотрите, какая база данных будет лучше соответствовать вашим потребностям. Если вам нужна масштабируемая, быстрая база данных для хранения ключей, я бы сказал, что Aerospike, вероятно, лучше всего там.

Сообщите мне, есть ли у вас какие-либо конкретные вопросы или что-то необходимо разъяснить. Я, вероятно, смогу помочь вам.

Ответ 2

Скорость

Аэроспайк быстрее. Практически любая система будет работать быстро при низкой нагрузке или простом доступе к данным, но Aerospike остается стабильно быстрым, оптимизируя параметры хранения в оперативной памяти и на основе SSD. Mongo работает быстро, когда используется с большим количеством оперативной памяти для кэширования, но в остальном работает медленно и имеет низкую производительность записи.

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

Установка/настройка

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

В MongoDB есть два основных способа кластеризации: наборы реплик (для доступности) и шардинг (для масштабируемости). У нас было 5 осколков, и у каждого был набор реплик из 3 серверов. Это 15 серверов для хранения данных. Затем у нас было 3 сервера конфигурации, которые поддерживали конфигурацию кластера, и нам пришлось добавить 2 процесса арбитра после нашего первого серьезного сбоя, чтобы иметь дело с должным расширением подчиненного устройства к ведущему. Это много движущихся частей, а также делает невероятно трудно изменить макет в будущем.

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

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

Доступ к данным

MongoDB имеет базу данных/коллекцию/документ, где каждый документ просто JSON. Aerospike имеет пространство имен/набор/запись, где каждая запись представляет собой набор "корзин" значения ключа, которые затем могут иметь вложенные структуры ключ/значение. Пространства имен предварительно настроены и не являются динамическими, а имена свойств ограничены 14 символами, с которыми неудобно работать.

Оба имеют вторичные индексы, хотя MongoDB позволяет вам делать запросы сразу по чему угодно, в то время как Aerospike требует настройки индекса или пользовательских сценариев. Оба имеют встроенные структуры агрегации. Клиенты Aerospike поддерживают сценарии LUA, но MongoDB поддерживает функции map-Reduce и пользовательские функции JavaScript.

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

Стоимость

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

В целом

Для большинства сценариев я бы порекомендовал Aerospike. Семантика и гибкость хранилища документов в MongoDB великолепны, но масштабировать и поддерживать его как распределенную базу данных очень сложно. Aerospike быстр и надежен и может работать с меньшим количеством узлов, которые легче масштабировать.


Январь 2016 года: MongoDB выпустила MongoDB Cloud Manager, который является платной услугой SaaS, которая может предоставлять и управлять вашими кластерами. Это решает много проблем с настройкой Mongo.

Март 2017 года: Обе базы данных прошли долгий путь. Aerospike теперь имеет более быструю репликацию и более гибкие настройки конфигурации без перезапуска всего кластера. MongoDB имеет новую схему реализации, лучшую производительность и даже поддерживает соединения вместе с MongoDB Atlas управляемым сервисом, чтобы устранить все проблемы масштабирования.


Теперь я настоятельно рекомендую ScyllaDB, которая является Cassandra-совместимой базой данных с открытым исходным кодом, с невероятной производительностью, репликацией нескольких центров данных и без ограничений по использованию.

Ответ 3

Я использовал MongoDB (2.4) и Aerospike 3 в наших производственных системах. Вот несколько замечаний, найденных нашей командой: -

1) Пропускная способность чтения/записи Aerospike является непревзойденной. Обычно Mongo db работает до определенного уровня, если запросы на чтение находятся на более высокой стороне. Если вам требуется параллельное чтение/запись в соотношении 95/5 процентов, Монго деградирует как угодно. С Aerospike мы увидели очень мало влияния, даже если это соотношение составляет 90/10. На AWS мы достигли 200 тыс. TPS с помощью Aerospike.

2) В Aerospike латентность очень низкая. Задержка чтения была субмиллисекундной для 99 процентов на стороне сервера. Задержка записи была субмиллисекундной для 80 процентов и в пределах 8 мс для 100 процентов. Наилучшим было то, что мы получили почти одинаковое количество в разных POC, поэтому стабильная производительность.

3) Очень мало узлов достаточно в Aerospike cluster по сравнению с другими решениями. Кроме того, хранилище данных на базе SSD дает довольно внушительные номера, поэтому очень экономически выгодно и мало затрат на обслуживание.

4) Теперь Aerospike является открытым исходным кодом, поэтому надеемся на более широкую поддержку сообщества:-)

Итак, мы используем Aerospike для всех новых систем и пытаемся мигрировать из MongoDB.

Ответ 4

MongoDB и Aerospike не выполняются для одного и того же управления данными, так как SQL тоже не мертв.

Мы сделали кеш-системы с осколочными кластерами на Mongodb с версией TokuMX (2.0.0 на основе Mongodb 2.4.10), система все еще работает хорошо, и только 0,1% запросов занимают более 100 мс на 65 миллионов запросов за день и около 10 миллионов обновлений в день. Теперь мы пытаемся использовать Aerospike, который кажется отличным и теперь открытым исходным кодом. Существует только одна проблема с этой версией с открытым исходным кодом,

НЕ ИСПОЛЬЗУЙТЕ ЭТО В ПРОИЗВОДСТВЕННЫХ СЕРВЕРАХ!

Управление безопасностью доступно только в дистрибутиве Enterprise. Это означает, что

ВЫ НЕ МОЖЕТЕ ОБЕСПЕЧИТЬ ЧТО-НИБУДЬ С ПАРОЛЬ И ПОЛЬЗОВАТЕЛЕМ!

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