cassandra aerospike nosql

Comparación: Aerospike vs Cassandra



nosql (4)

Ambos productos dependen del caso de uso que esté utilizando, pero definitivamente no dudaría en decir que Aerospike puede escalar mejor que Cassandra y de manera rentable con SSD y tener menos nodos para mantener.

Además, con respecto al uso de memoria con gran cantidad de claves en Aerospike, puedes dividir tus registros en diferentes sets / bins en tu espacio de nombres; por ejemplo, si tienes 10 mil millones de registros, puedes dividirlo en 5 sets y 5 bins dentro del namespace tener valor hash para las teclas, que serviría como un valor de búsqueda. Por lo tanto, puede tener solo 2 mil millones de registros en el espacio de nombres y esto reduciría su número de claves en la memoria.

Tanto Aerospike como Cassandra dicen que son mejores que el otro en sus respectivos puntos de referencia.

Referencia: http://java.dzone.com/articles/benchmarking-cassandra-right y algunos otros.

Alguien los ha usado a ambos ?
¿Es Aerospike tan bueno como se afirma?
Finalmente, ¿es aconsejable reemplazar a Cassandra con Aerospike ?


Elegir entre Cassandra y Aerospike realmente depende de tu caso de uso más que nada. Personalmente, he usado ambos como sistema de producción para el mismo proyecto y para mí Aerospike fue el claro ganador, pero eso se debe a que nuestro caso de uso es tener pequeñas actualizaciones concurrentes, de baja latencia, transaccionales y pequeñas a miles de millones de entradas con ~ 10 veces más de lectura que escribir volumen En esto es en lo que sobresale Aerospike, tiene la latencia mínima que he visto en una base de datos de este tipo, incluso cuando se usa un espacio de nombres SSD. Por estas razones, Aerospike fue la opción más clara para nosotros.

Por otro lado, Cassandra es mejor para un alto volumen de escritura y puede manejar registros más grandes. Todo está basado en páginas, por lo que funciona bien en dispositivos que no son SSD, pero nunca puede brindarle la latencia extremadamente baja que puede tener Aerospike a menos que sus registros quepan en la memoria caché. También vale la pena señalar que Cassandra es mucho más difícil de mantener desde una perspectiva de operaciones que Aerospike. Para nosotros, personalmente, fue una pesadilla de operaciones y sé que Netflix tiene que emplear un equipo considerable de ingenieros de operaciones únicamente para administrar sus clústeres de Cassandra. Además, si bien el sistema puede haber madurado más ahora, cuando lo usamos (alrededor de la versión 1.0) golpeamos extraños errores y excepciones ocasionales que detienen las acciones internas de BD y normalmente tenían que borrar los datos de esos nodos en Para arreglarlo todo el tiempo.

Otro factor aquí es el costo que puede o no influir en su decisión dependiendo de su aplicación. Cuanto mayor sea el espacio de claves, más caro será el clúster de Aerospike desde la perspectiva del hardware. Todas las claves deben almacenarse en la memoria, independientemente de si se trata de un espacio de nombre en memoria o SSD. Una vez que ingresa en el rango de miles de millones de claves necesitará terabytes de ram en su clúster para admitir eso con un factor de duplicación de 2. Cassandra obviamente no tiene este problema ya que las claves y los valores son ambas tiendas en el disco.

Para responder a sus segundas 2 preguntas, sí, es tan bueno como dice, almacenamos aproximadamente 5B claves y hacemos ~ 1M de TPS en la carga máxima y lo hace sin dejar de sudar (aunque se necesitan casi 20 nodos por clúster para hacer esto con 120GB ram cada uno). Y en cuanto a si es aconsejable reemplazar a Cassandra con Aerospike, para nosotros fue una victoria definitiva y la decisión correcta. Si su aplicación se ajusta al diseño de Aerospike y resulta rentable, entonces definitivamente es recomendable realizar el cambio. Cuando se trata de eso, se trata de su caso de uso. Si no está claro cuál es el más adecuado para usted, pruébelos y vea cómo funcionan. Buena suerte.

Editar:

Una de las razones por las cuales elegir Cassandra sobre Aerospike es cuando las aplicaciones necesitan ciertas garantías de consistencia. Para aplicaciones como contadores, por ejemplo, Aerospike puede convertirse en un estado incoherente debido a una partición de red, mientras que Cassandra es capaz de estos mediante el uso de tipos de datos replicados libres de conflictos (CRDT). En una buena red y también para muchos casos de uso en general, esto no es un problema, pero como se dijo anteriormente, el rendimiento de Aerospike no puede ser superado, y esa es la razón por la cual se elige.

Editar 2:

Aerospike v4 ahora ha presentado su versión de un modo consistente (verificado por Jepsen: https://jepsen.io/analyses/aerospike-3-99-0-3 ). Además, Aerospike lo ha implementado a través de una fuerte coherencia, mientras que Cassandra solo tiene consistencia eventual mediante el uso de CRDT, por lo que aún es posible leer datos obsoletos. También a partir de pruebas personales, puedo decir que el rendimiento durante el funcionamiento normal no sufrió en nuestro caso de uso cuando se usa su modo fuertemente consistente.


Si bien muchas personas implementan Aerospike como una base de datos pura en memoria, también admite una configuración de memoria híbrida, extendiendo la base de datos a través de RAM, SSD / Flash y disco giratorio. Aquí hay algunos enlaces cortos y de respuesta más larga para abordar el problema. Ciertamente, la gente quiere lo mejor de ambos mundos: datos más persistentes almacenados en un disco más económico, y datos más rápidos y más efímeros almacenados en RAM o SSD más caros por GB.

http://www.aerospike.com/hybrid-memory/

http://www.aerospike.com/docs/architecture/storage.html

Estaría ansioso por escuchar comentarios sobre la experiencia de la gente en términos de tales implementaciones.


Si necesita un rendimiento predecible estable con baja latencia y sin problemas con el mantenimiento, vaya con Aerospike. Quieres jugar juegos, ve a Cassandra. He traído a Cassandra hace más de 4 años a mi compañía sin remordimientos, pero hoy por las razones anteriores elijo Aerospike, que es de código abierto y más disponible que hace un año y biult como un tanque ruso, con razón.

Solo debes conocer los límites de ambas plataformas. Juega con ambos, elige sabiamente.