>
> My goal is to reconstruct the CQL operation from the Mutation object.
> So that I can trigger the same action on another NoSQL target like MongoDB.
>
There are different way of keeping your 2 database in sync. Unfortunatly,
they all have some trade offs (as always ;-))
1. If you have controle on the client side, you could wrap the driver
and add some code that convert the query and write it to the other database
at the same time. The main problem with that approach is that a write can
succeed on one of the database but not on the other. Which means that you
will need a mechanism to resolve those problems.
2. On the Cassandra side you could, as Nate suggested, extends the
QueryProcessor in order to log the mutations to a log file. As the
QueryProcessor has access to the prepared statement cache and to the bind
parameter you should be able to extract the information you need. Some of
the problems of that approach are:
1. You cannot reprocess already inserted data
2. You will probably have to use a replication log to deal with the
cases where the other database is unreachable
3. It might slow down your query processing and take some of your
band width at critical time (heavy write)
3. Use a fake index as Jacques-Henri suggested. It will allow to
easily reprocess already inserted data so you will not need some
replication logs (at the same time having to rebuild the index might slow
down your database). The main issues for that solution are:
1. All the tables that you want to replicate will have to have that
index and you cannot automatically update the schemas on your
other database
2. It might slow down your query processing and take some of your
band width at critical time (heavy write)
4. Read the commitlogs to recreate the mutation statements (your initial
approach). The main problem is that it is simply not easy to do and might
break up with new major releases. You will also have to make sure that the
files do not disappear before you have processed them.
5. Try a Datawarehouse/ETL approach to synchronized your data.
CASSANDRA-8844 added support for CDC (Change Data Capture) which might help
you there. Unfortunatly, I have not really worked on it so I cannot help
you much there.
There might be some other approach that are worth considering but they did
not come to my mind.
Hope it helps
Benjamin
PS: MongoDB ... Seriously ??? ;-)