7

Con el anuncio del nuevo modelo de precios de Google App Engine, me he dado cuenta de que mi aplicación no podrá sostenerse por el precio extremadamente alto de las interacciones de Google Datastore. Debido a que es un juego social que depende de la entrada constante y constante del usuario, esta aplicación simplemente requiere demasiadas interacciones del almacén de datos por usuario para ser viable (incluso con Memcache mediando consultas y operaciones comunes).Cassandra Client API ¿Más similar a App Engine Datastore API?

Según la investigación que he realizado, parece que la mejor solución sería que mi equipo migrara a una solución de base de datos basada en Cassandra. He analizado varias API populares, como Hector y Pelops, pero desde mi inspección inicial parece que son un poco demasiado bajas para lo que estoy buscando. ¿Existe una API de cliente Cassandra en Java que emule la API Datstore de bajo nivel de App Engine y que utiliza el mismo modelo de "Grupo de entidades/propiedad"? Por lo menos, me gustaría que la API tenga los mismos conceptos de entidad "antepasado" y mantenga transacciones de grupos cruzados de la misma manera.

EDIT: Para aclarar, lo que realmente estoy buscando es una API de Cassandra que admita Transacciones. Por lo que puedo entender, las transacciones en un entorno NoSQL son difíciles, si no imposibles de implementar sin algunas agrupaciones jerárquicas de "objetos" (llámalos como quieras, entidades, tablas, etc.). Esta parece ser la razón por la que Héctor no los implementa.

Entonces, mi pregunta es, ¿cuál es la API de Cassandra más popular que implementa alguna forma de sistemas transaccionales, preferiblemente uno que utiliza una estructura de Entidad similar a GAE?

+0

No es una respuesta a su pregunta per se, pero parece que un enfoque beneficioso podría ser diseñar una abstracción de las necesidades de almacenamiento de datos de su aplicación. Piense en ello como una API interna, diseñada para ocultar las diferencias de GAE y Cassandra (y quizás algo más como AWS). Es posible que, luego, implementar una versión de Cassandra no sea tan malo y/o le dé flexibilidad para cambiar las tiendas de datos en el futuro. – RichW

+0

@RichW Sí, ese es exactamente el enfoque que estamos tomando en este momento. Estamos creando un conjunto de interfaces independientes de las llamadas de almacén de datos específicas de GAE y trasladando toda la interacción con el almacén de datos a una implementación de esa interfaz. Sin embargo, es una tarea inmensa que realmente no queríamos hacer en esta etapa, por lo que me gustaría saber qué API de Cassandra es la más similar para poder investigar y asegurar que la arquitectura que estamos rediseñando ahora no necesite mucho modificación una vez que hacemos el inevitable cambio. – depthfirstdesigner

+0

Habría investigado la GAE Channel API si tuviera ese tipo de aplicación. Mis aplicaciones son de tamaño pequeño a mediano y seguro que pagaré 20 veces más con el nuevo precio, pero sigue siendo solo una fracción de un servidor dedicado o un costo de alojamiento físico, ya que solo uso HTTP get y/o post muy estándar. Escuché sobre Channel API y creo que puede hacer este tipo de interacciones, lo siento si estoy equivocado, pero estoy adivinando en base a lo que leo. –

Respuesta

1

¿Has visto hector-object-mapper? https://github.com/rantav/hector/tree/master/object-mapper

Persistencia ligera y anotada para Apache Cassandra a través de Hector. Para más documentos sobre el uso de Héctor, ver: http://hector-client.org

+0

Hector parece ser la API de Cassandra más popular para Java, pero por lo que he leído no tiene soporte/planes para agrupar sus asignaciones de objetos en "Grupos de entidades". Por lo que yo entiendo, es difícil (si no imposible) implementar un sistema de transacción en una base de datos NoSQL sin agrupar objetos. Tal vez debería aclarar un poco mi pregunta para explicar que lo que realmente estoy buscando es una API de Cassandra que admita transacciones. – depthfirstdesigner

+3

https://issues.apache.org/jira/browse/CASSANDRA-1684 - Los respaldaremos tan pronto como estén disponibles :-) – zznate

+1

Además, para algunas de las investigaciones originales sobre "grupos de entidades" y transacciones en sistemas distribuidos, consulte: http://research.google.com/pubs/archive/36971.pdf (el documento "megastore" y las transacciones distribuidas de Pat Helland's Life): www.ics.uci.edu/~cs223/papers/cidr07p15 .pdf – zznate

0

Lo mejor que pude encontrar es AppScale que utiliza Cassandra aunque no está claro para mí cómo configurar y ejecutar el almacén de datos como un servicio independiente y sin los otros servicios GAE. Creé un issue para eso. Técnicamente, podría usar la misma biblioteca de cliente con ajustes menores (es decir, reemplazar la URL/punto final del almacén de datos con la suya propia)

Cuestiones relacionadas