Кто-нибудь работал с Aerospike? Как он сравнивается с MongoDB?
Может ли кто-нибудь сказать, насколько Aerospike так же хорош, как утверждают они? Я немного скептически настроен, так как это коммерческое предприятие. Насколько я понимаю, они только что выпустили версию с открытым исходным кодом, но претензии на их сайте все равно могут быть преувеличены.
Мне особенно интересно, как Aerospike сравнивается с MongoDB.
Ответы
Ответ 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. Это означает, что
ВЫ НЕ МОЖЕТЕ ОБЕСПЕЧИТЬ ЧТО-НИБУДЬ С ПАРОЛЬ И ПОЛЬЗОВАТЕЛЕМ!
Теперь, если вы не возражаете, вы можете использовать его при производстве, но не помните, что какой-либо из ваших клиентов может запросить аудит безопасности, а затем вам придется много заплатить.