I am new to cassandra
and I am using it for analytics tasks (good indexing needed ).
I read in this post (and others): cassandra, select via a non primary key that I can't query my DB with a non-primary key columns with WHERE clause
.
To do so, it seems that there is 3 possibilities (ALL with major disadvantages):
IN
or =
.Is there an other way to to what I am trying to do (WHERE clause
with non-primary key column) without having the 3 constraints above?
The primary key is a column that is used to uniquely identify a row. Therefore,defining a primary key is mandatory while creating a table.
Apache Cassandra does not have the concept of foreign keys or relational integrity. Apache Cassandra's data model is based around designing efficient queries; queries that don't involve multiple tables. Relational databases normalize data to avoid duplication.
CQL does not support OR queries. CQL does not support wildcard queries. CQL does not support Union, Intersection queries. Table columns cannot be filtered without creating the index.
((startdate,enddate,(id)) - keeping the start and end as partition and id as clustering - if your requirement is only the above query but again it will depend on how much data you will have in each range of dates - or else can you explain more about the requirement and nature of data ?
From within Cassandra itself you are limited to the options that you have specified above. If you want to know why take a look here:
A Deep Look to the CQL Where Clause
However if you are trying to run analytics on information stored within Cassandra then have you looked at using Spark. Spark is built for large scale data processing on distributed systems. In fact if you are looking at using Datastax (see here) which has some nice integration features between Spark and Cassandra specifically for loading and saving data. It has both a free (Community) and paid (Enterprise) editions.
Please, try to use IF
in your query:
UPDATE [keyspace_name.] table_name
[USING TTL time_value | USING TIMESTAMP timestamp_value]
SET assignment [, assignment] . . .
WHERE row_specification
[IF EXISTS | IF condition [AND condition] . . .] ;
see https://docs.datastax.com/en/archived/cql/3.3/cql/cql_reference/cqlUpdate.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With