Ответ 1
Выбор между Cassandra и Aerospike действительно зависит от вашего варианта использования больше всего. Я лично использовал как систему производства для того же проекта, и для меня Aerospike был явным победителем, но это потому, что наш прецедент должен иметь очень параллельные, низкие задержки, транзакционные, небольшие обновления в миллиарды записей с ~ 10 раз больше, чем громкость записи. Это то, чем обладает Aerospike, имеет минимальную задержку, которую я когда-либо видел в базе данных такого рода, даже при использовании пространства имен SSD. По этим причинам Aerospike был для нас ясным выбором.
С другой стороны, Cassandra лучше подходит для большого объема записи и может обрабатывать большие записи. Все работает на основе страниц, поэтому он отлично работает на не SSD, но никогда не может дать вам крайне низкой задержки, которую может использовать Aerospike, если ваши записи не будут входить в кеш. Его также стоит отметить, что Cassandra гораздо сложнее поддерживать с точки зрения операций, чем Aerospike. Для нас лично это был кошмар с операциями, и я знаю, что Netflix должен использовать значительную команду инженеров-технологов исключительно для управления их кластерами Cassandra. Кроме того, в то время как система, возможно, уже созрела, когда мы ее использовали (около версии 1.0), мы ударяли бы странные случайные ошибки утверждения и исключения, которые останавливали бы внутренние действия db, и обычно приходилось стереть данные с этих узлов в чтобы исправить это каждый раз.
Другим фактором здесь является стоимость, которая может или не может повлиять на ваше решение в зависимости от вашего приложения. Чем больше пространство ключей, тем дороже ваш аэроспический кластер будет с аппаратной точки зрения. Все ключи должны храниться в памяти независимо от того, является ли это пространством имен в памяти или ssd. После того, как вы войдете в миллиарды ключей, вам понадобится терабайт ram в вашем кластере, чтобы поддержать это с коэффициентом репликации 2. Кассандра, очевидно, не имеет этой проблемы, поскольку ключи и значения являются как хранилищами на диске.
Чтобы ответить на ваши 2 вопроса, да, это так хорошо, как он утверждает, мы храним около 5B ключей и делаем ~ 1M TPS при максимальной нагрузке, и он делает это, не разбивая пота (хотя для кластера он занимает почти 20 узлов сделайте это с 120GB RAM каждый). И насколько это целесообразно, чтобы заменить Кассандру Aerospike, для нас это была определенная победа и правильное решение. Если ваше приложение соответствует дизайну Aerospike, и оно работает, чтобы быть экономически эффективным, то, безусловно, целесообразно сделать переключатель. Когда дело доходит до него, хотя это касается вашего прецедента. Если не понятно, какой из них лучше подходит для вас, попробуйте их обоих и посмотрите, как они играют. Удачи.
Edit:
Одна из причин выбора Cassandra для Aerospike заключается в том, когда приложения нуждаются в определенных гарантиях последовательности. Например, для приложений, таких как счетчики, Aerospike может стать несогласованным из-за сетевого раздела, тогда как Cassandra может использовать их с использованием несовместимых с реплицированными типами данных (CRDT). В хорошей сети, а также для многих случаев использования в целом это не проблема, но, как было сказано ранее, производительность Aerospike не может быть избита и, как правило, почему она выбрана.