SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
A deep look at the CQL WHERE clause
CQL WHERE clause
2© 2015. All Rights Reserved.
Driver
The WHERE clause restrictions are dependent on:
• The type of statement: SELECT, UPDATE or DELETE
• The type of column: partition key, clustering or regular column
• If a secondary index is used or not
3© 2015. All Rights Reserved.
Driver
SELECT statements
Partition key restrictions
4© 2015. All Rights Reserved.
Driver
Cluster Date Time Count
‘cluster 1’ ‘2015-09-21’ ‘12:00’ 251
‘cluster 1’ ‘2015-09-22’ ‘12:00’ 342
‘cluster 2’ ‘2015-09-21’ ‘12:00’ 403
‘cluster 2’ ‘2015-09-22’ ‘12:00’ 451
CREATE TABLE numberOfRequests (
cluster text,
date text,
time text,
count int,
PRIMARY KEY ((cluster, date))
)
Partition Key
Partition key restrictions
5© 2015. All Rights Reserved.
Driver
Cluster Date Murmur3 hash
‘cluster 1’ ‘2015-09-21’ -4782752162231423249
‘cluster 1’ ‘2015-09-22’ 4936127188075462704
‘cluster 2’ ‘2015-09-21’ 5822105674898716412
‘cluster 2’ ‘2015-09-22’ 2698159220916609751
A
C
D B
4611686018427387904
to
9223372036854775807
-9223372036854775808
to
-4611686018427387903
-1
to
4611686018427387903
-4611686018427387904
to
-1
Partition key restrictions
6© 2015. All Rights Reserved.
Driver
Cluster Date Node
‘cluster 1’ ‘2015-09-21’ A
‘cluster 1’ ‘2015-09-22’ D
‘cluster 2’ ‘2015-09-21’ D
‘cluster 2’ ‘2015-09-22’ C
A
C
D B
Partition key restrictions
7© 2015. All Rights Reserved.
Driver
A
C
D B
SELECT * FROM numberOfRequests;
Driver
Partition key restrictions
8© 2015. All Rights Reserved.
Driver
SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’;
InvalidRequest: code=2200 [Invalid query]
message="Partition key parts: date must be restricted as other parts are"
Partition key restrictions
9© 2015. All Rights Reserved.
Driver
A
C
D B
SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’
AND date = ‘2015-09-21’;
Driver
Partition key restrictions
10© 2015. All Rights Reserved.
Driver
A
C
D B
SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’
AND date = ‘2015-09-21’;
Driver
…with TokenAwarePolicy
Partition key restrictions
11© 2015. All Rights Reserved.
Driver
A
C
D B
SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 2’
AND date IN (‘2015-09-21’, ‘2015-09-22’);
Driver
Partition key restrictions
12© 2015. All Rights Reserved.
Driver
A
C
D B
SELECT * FROM numberOfRequests WHERE cluster = ‘cluster 2’
AND date = ‘2015-09-21’;
Driver
…with TokenAwarePolicy
and asynchronous calls
SELECT * FROM numberOfRequests WHERE cluster = ‘cluster 2’
AND date = ‘2015-09-22’;
Partition key restrictions
13© 2015. All Rights Reserved.
Driver
SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’
AND date >= ‘2015-09-21’;
InvalidRequest: code=2200 [Invalid query]
message="Only EQ and IN relation are supported on the partition key (unless
you use the token() function)"
Partition key restrictions
14© 2015. All Rights Reserved.
Driver
Cluster Date Node
‘cluster 1’ ‘2015-09-21’ A
‘cluster 1’ ‘2015-09-22’ D
‘cluster 2’ ‘2015-09-21’ D
‘cluster 2’ ‘2015-09-22’ C
A
C
D B
SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’
AND date >= ‘2015-09-21’;
Partition key restrictions
15© 2015. All Rights Reserved.
Driver
• Murmur3Partitioner (default): uniformly distributes data across
the cluster based on MurmurHash hash values.
• RandomPartitioner: uniformly distributes data across the
cluster based on MD5 hash values.
• ByteOrderedPartitioner: keeps an ordered distribution of data
lexically by key bytes
Partition key restrictions
16© 2015. All Rights Reserved.
Driver
SELECT * FROM numberOfRequests
WHERE token(cluster, date) > token(‘cluster 1’, ‘2015-09-21’)
AND token(cluster, date) < token(‘cluster 1’, ‘2015-09-23’);
Partition key restrictions (SELECT)
17© 2015. All Rights Reserved.
• Without secondary index, either all partition key components must be
restricted or none of them
• = restrictions are allowed on any partition key component
• IN restrictions are allowed on any partition key component since 2.2
• Prior to 2.2, IN restrictions were only allowed on the last partition key
component
• =, >, >=, <= and < restrictions are allowed with the token function
Clustering column restrictions
18© 2015. All Rights Reserved.
CREATE TABLE numberOfRequests (
cluster text,
date text,
datacenter text,
server inet,
time text,
count int,
PRIMARY KEY((cluster, date), datacenter, server, time))
…
Clustering column restrictions
19© 2015. All Rights Reserved.
…
Datacenter Server Time Count
Iowa 196.8.7.134 00:00 130
Iowa 196.8.7.134 00:01 125
Iowa 196.8.7.134 00:02 97
Iowa 196.8.7.135 00:00 178
Iowa 196.8.7.135 00:01 201
[Iowa, 196.8.7.134, 00:02, count] :
97
In the Memtables:
[Iowa, 196.8.7.134, 00:00, count] :
130
[Iowa, 196.8.7.134, 00:01, count] :
125
[Iowa, 196.8.7.135, 00:00, count] :
178
[Iowa, 196.8.7.135, 00:01, count] :
201
[Iowa, 196.8.7.134, 00:00, count] :
130
Cell name
Cell
Column name
Clustering column restrictions
20© 2015. All Rights Reserved.
…
Datacenter Server Time Count
Iowa 196.8.7.134 00:00 130
Iowa 196.8.7.134 00:01 125
Iowa 196.8.7.134 00:02 97
Iowa 196.8.7.135 00:00 178
Iowa 196.8.7.135 00:01 201
[Iowa, 196.8.7.134, 00:02, count] :
97
In the SSTables:
[Iowa, 196.8.7.134, 00:00, count] :
130
[Iowa, 196.8.7.134, 00:01, count] :
125
[Iowa, 196.8.7.135, 00:00, count] :
178
[Iowa, 196.8.7.135, 00:0
201
[Iowa, 196.8.7.134, 00:00, count] :
130
Cell name
Cell
Column name
Clustering column restrictions
21© 2015. All Rights Reserved.
…
[Iowa, 196.8.7.134, 00:02, count] :
97
In the Memtables:
[Iowa, 196.8.7.134, 00:00, count] :
130
[Iowa, 196.8.7.134, 00:01, count] :
125
[Iowa, 196.8.7.135, 00:00, count] :
178
[Iowa, 196.8.7.135, 00:01, count] :
201
SELECT * FROM numberOfRequests
WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’
AND datacenter = ‘Iowa’ AND server = ‘196.8.7.135’ AND time = ‘00:00’;
[Iowa,196.8.7.135,00:00]
Clustering column restrictions
22© 2015. All Rights Reserved.
…
SELECT * FROM numberOfRequests
WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’
AND datacenter = ‘Iowa’ AND server = ‘196.8.7.135’ AND time = ‘00:00’;
[Iowa,196.8.7.135,00:00]
…
[Iowa, 196.8.7.134, 00:02, count] :
97
In the SSTables:
[Iowa, 196.8.7.134, 00:00, count] :
130
[Iowa, 196.8.7.134, 00:01, count] :
125
[Iowa, 196.8.7.135, 00:00, count] :
178
[Iowa, 196.8.7.135, 00:0
201
Clustering column restrictions
23© 2015. All Rights Reserved.
[Iowa, 196.8.7.134, 00:02, count] :
97
In the Memtables:
[Iowa, 196.8.7.134, 00:00, count] :
130
[Iowa, 196.8.7.134, 00:01, count] :
125
[Iowa, 196.8.7.135, 00:00, count] :
178
[Iowa, 196.8.7.135, 00:01, count] :
201
SELECT * FROM numberOfRequests
WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’
AND datacenter = ‘Iowa’ AND server = ‘196.8.7.135’;
[Iowa,196.8.7.135]
Clustering column restrictions
24© 2015. All Rights Reserved.
…
SELECT * FROM numberOfRequests
WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’
AND datacenter = ‘Iowa’ AND server = ‘196.8.7.135’;
[Iowa,196.8.7.135]
…[Iowa, 196.8.7.134, 00:02, count] :
97
In the SSTables:
[Iowa, 196.8.7.134, 00:00, count] :
130
[Iowa, 196.8.7.134, 00:01, count] :
125
[Iowa, 196.8.7.135, 00:00, count] :
178
[Iowa, 196.8.7.135, 00:0
201
Clustering column restrictions
SELECT * FROM numberOfRequests
WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’
AND time = ‘00:00’;
[?,?,00:00]
InvalidRequest: code=2200 [Invalid query]
message="PRIMARY KEY column "time" cannot be restricted as preceding
column "datacenter" is not restricted"
Clustering column restrictions
26© 2015. All Rights Reserved.
…
AND datacenter = ‘Iowa’
AND server IN (‘196.8.7.134’, ‘196.8.7.135’)
AND time = ‘00:00’;
In 2.2:
[Iowa,196.8.7.134,00:00]
[Iowa,196.8.7.135,00:00]
…[Iowa, 196.8.7.134, 00:02, count] :
97
In the SSTables:
[Iowa, 196.8.7.134, 00:00, count] :
130
[Iowa, 196.8.7.134, 00:01, count] :
125
[Iowa, 196.8.7.135, 00:00, count] :
178
[Iowa, 196.8.7.135, 00:0
201
Clustering column restrictions
27© 2015. All Rights Reserved.
…
AND datacenter = ‘Iowa’
AND server IN (‘196.8.7.134’, ‘196.8.7.135’)
AND time = ‘00:00’;
In 2.1:
InvalidRequest: code=2200 [Invalid query]
message="Clustering column "server" cannot be restricted by an IN relation"
Clustering column restrictions
28© 2015. All Rights Reserved.
= multi-column restriction:
(clustering1, clustering2, clustering3) = (?, ?, ?)
IN multi-column restriction:
(clustering1, clustering2, clustering3) IN ((?, ?, ?), (?, ?, ?))
Slice multi-column restriction:
(clustering1, clustering2, clustering3) > (?, ?, ?)
(clustering1, clustering2, clustering3) >= (?, ?, ?)
(clustering1, clustering2, clustering3) <= (?, ?, ?)
(clustering1, clustering2, clustering3) < (?, ?, ?)
Clustering column restrictions
29© 2015. All Rights Reserved.
…
AND datacenter = ‘Iowa’
AND (server, time) IN ((‘196.8.7.134’, ‘00:00’),
(‘196.8.7.135’, ‘00:00’));
In 2.1:
[Iowa,196.8.7.134,00:00]
[Iowa,196.8.7.135,00:00]
…[Iowa, 196.8.7.134, 00:02, count] :
97
In the SSTables:
[Iowa, 196.8.7.134, 00:00, count] :
130
[Iowa, 196.8.7.134, 00:01, count] :
125
[Iowa, 196.8.7.135, 00:00, count] :
178
[Iowa, 196.8.7.135, 00:0
201
Clustering column restrictions
30© 2015. All Rights Reserved.
…
AND datacenter = ‘Iowa’
AND server = ‘196.8.7.134’
AND time > ’00:00’;
from after [Iowa,196.8.7.134,00:00]
to end of [Iowa,196.8.7.134]
…[Iowa, 196.8.7.134, 00:02, count] :
97
In the SSTables:
[Iowa, 196.8.7.134, 00:00, count] :
130
[Iowa, 196.8.7.134, 00:01, count] :
125
[Iowa, 196.8.7.135, 00:00, count] :
178
[Iowa, 196.8.7.135, 00:0
201
Clustering column restrictions (SELECT)
31© 2015. All Rights Reserved.
• Without secondary index, a clustering column cannot be restricted if
one of the previous ones was not
• = restrictions (single and multi) are allowed on any clustering column
• IN restrictions (single and multi) are allowed on any clustering column
since 2.2
• Prior to 2.2, IN restrictions (single and multi) were only allowed on the
last clustering column or set of clustering columns
• >, >=, <=, < restrictions (single and multi) are only allowed on the last
restricted clustering column or set of clustering columns
• CONTAINS and CONTAINS KEY restrictions are only allowed on
indexed collections
Secondary index queries
32© 2015. All Rights Reserved.
CREATE TABLE numberOfRequests (
cluster text,
date text,
datacenter text,
server inet,
time text,
count int,
PRIMARY KEY((cluster, date), datacenter, server, time));
CREATE INDEX ON numberOfRequests (time);
…
Secondary index queries
33© 2015. All Rights Reserved.
CREATE INDEX ON numberOfRequests (time);
CREATE LOCAL TABLE numberOfRequests_time_idx (
time text,
cluster text,
date text,
datacenter text,
server inet,
PRIMARY KEY(time, cluster, date, datacenter, server);
…
Table Partition Key
Table remaining clustering columns
IDX-BIDX-D
IDX-C
IDX-A
Secondary index queries
34© 2015. All Rights Reserved.
Driver
A
C
D B
SELECT * FROM numberOfRequests WHERE time = ‘12:00’;
Driver
Secondary index queries
35© 2015. All Rights Reserved.
Driver
SELECT * FROM numberOfRequests WHERE time = ‘12:00’;
idx
SELECT * FROM numberOfRequests_time_idx
WHERE time = ‘12:00’;
Results (Primary Keys)
table
SELECT with full PK;
[For each]
Add to rows
Secondary index queries
36© 2015. All Rights Reserved.
Driver
SELECT * FROM numberOfRequests WHERE time >= ‘12:00’;
InvalidRequest: code=2200 [Invalid query]
message="PRIMARY KEY column "time" cannot be restricted as preceding
column "datacenter" is not restricted"
Direct queries on secondary index support only =, CONTAINS or CONTAINS
KEY restrictions.
Secondary index queries
37© 2015. All Rights Reserved.
Driver
SELECT * FROM numberOfRequests WHERE time = ‘12:00’
AND count >= 500 ALLOW FILTERING;
idx
SELECT * FROM numberOfRequests_time_idx
WHERE time = ‘12:00’;
Results (Primary Keys)
table
SELECT with full PK;
[For each]
Add to rows
[if count >= 500]
IDX-BIDX-D
IDX-C
IDX-A
Secondary index queries
38© 2015. All Rights Reserved.
Driver
A
C
D B
SELECT * FROM numberOfRequests
WHERE cluster = ‘cluster 1’ AND date = ‘2015-09-21’AND time = ‘12:00’;
Driver
Secondary index queries
39© 2015. All Rights Reserved.
Driver
SELECT * FROM numberOfRequests
WHERE cluster = ‘cluster 1’ AND date = ‘2015-09-21’ AND time = ‘12:00’;
idx
SELECT * FROM numberOfRequests_time_idx
WHERE time = ‘12:00’ AND cluster = ‘1’ AND
date = ‘2015-09-21’;
Results (Primary Keys)
table
SELECT with full PK
[For each]
Add to rows
40© 2015. All Rights Reserved.
Driver
UPDATE/DELETE statements
UPDATE statements
41© 2015. All Rights Reserved.
Driver
In the UPDATE statements all the primary key columns must be restricted and
the only allowed restrictions are:
• Prior to 3.0:
• Single column = restriction on any partition key or clustering column
• Single column IN restriction on the last partition key column
• In 3.0:
• = and IN single column restrictions on any partition key column
• = and IN single or multi column restrictions on any clustering column
DELETE statements
42© 2015. All Rights Reserved.
Driver
Before 3.0, in the DELETE statements all the primary key columns must be
restricted and the only allowed restrictions were:
• Single column = restriction on any partition key or clustering column
• Single column IN restriction on the last partition key column
DELETE statements
43© 2015. All Rights Reserved.
Driver
Since 3.0:
• The partition key columns must be restricted by = or IN restrictions
• A clustering column might not be restricted if none of the following is
• Clustering columns can be restricted by:
• Single or multi column = restriction
• Single or multi column IN restriction
• Single or multi column >, >=, <=, < restriction
© 2015. All Rights Reserved. 44
Design your tables for the queries
you want to perform.
Thank you

Weitere ähnliche Inhalte

Was ist angesagt?

Netflix: From Clouds to Roots
Netflix: From Clouds to RootsNetflix: From Clouds to Roots
Netflix: From Clouds to RootsBrendan Gregg
 
Chasing the optimizer
Chasing the optimizerChasing the optimizer
Chasing the optimizerMauro Pagano
 
Lessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting ReplicationLessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting ReplicationSveta Smirnova
 
Protecting browsers’ secrets in a domain environment
Protecting browsers’ secrets in a domain environmentProtecting browsers’ secrets in a domain environment
Protecting browsers’ secrets in a domain environmentItai Grady
 
How a Developer can Troubleshoot a SQL performing poorly on a Production DB
How a Developer can Troubleshoot a SQL performing poorly on a Production DBHow a Developer can Troubleshoot a SQL performing poorly on a Production DB
How a Developer can Troubleshoot a SQL performing poorly on a Production DBCarlos Sierra
 
Eventually, Scylla Chooses Consistency
Eventually, Scylla Chooses ConsistencyEventually, Scylla Chooses Consistency
Eventually, Scylla Chooses ConsistencyScyllaDB
 
Tanel Poder - Scripts and Tools short
Tanel Poder - Scripts and Tools shortTanel Poder - Scripts and Tools short
Tanel Poder - Scripts and Tools shortTanel Poder
 
How to Use Oracle RAC in a Cloud? - A Support Question
How to Use Oracle RAC in a Cloud? - A Support QuestionHow to Use Oracle RAC in a Cloud? - A Support Question
How to Use Oracle RAC in a Cloud? - A Support QuestionMarkus Michalewicz
 
Deep Dive into Cassandra
Deep Dive into CassandraDeep Dive into Cassandra
Deep Dive into CassandraBrent Theisen
 
Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...
Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...
Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...Aaron Shilo
 
Low Level CPU Performance Profiling Examples
Low Level CPU Performance Profiling ExamplesLow Level CPU Performance Profiling Examples
Low Level CPU Performance Profiling ExamplesTanel Poder
 
Oracle db performance tuning
Oracle db performance tuningOracle db performance tuning
Oracle db performance tuningSimon Huang
 
Oracle Performance Tools of the Trade
Oracle Performance Tools of the TradeOracle Performance Tools of the Trade
Oracle Performance Tools of the TradeCarlos Sierra
 
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015PostgreSQL-Consulting
 
Linux SMEP bypass techniques
Linux SMEP bypass techniquesLinux SMEP bypass techniques
Linux SMEP bypass techniquesVitaly Nikolenko
 
Jvm tuning for low latency application & Cassandra
Jvm tuning for low latency application & CassandraJvm tuning for low latency application & Cassandra
Jvm tuning for low latency application & CassandraQuentin Ambard
 
Understanding PostgreSQL LW Locks
Understanding PostgreSQL LW LocksUnderstanding PostgreSQL LW Locks
Understanding PostgreSQL LW LocksJignesh Shah
 
Tanel Poder Oracle Scripts and Tools (2010)
Tanel Poder Oracle Scripts and Tools (2010)Tanel Poder Oracle Scripts and Tools (2010)
Tanel Poder Oracle Scripts and Tools (2010)Tanel Poder
 
Improve PostgreSQL replication with Oracle GoldenGate
Improve PostgreSQL replication with Oracle GoldenGateImprove PostgreSQL replication with Oracle GoldenGate
Improve PostgreSQL replication with Oracle GoldenGateBobby Curtis
 

Was ist angesagt? (20)

Netflix: From Clouds to Roots
Netflix: From Clouds to RootsNetflix: From Clouds to Roots
Netflix: From Clouds to Roots
 
Chasing the optimizer
Chasing the optimizerChasing the optimizer
Chasing the optimizer
 
Lessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting ReplicationLessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting Replication
 
Protecting browsers’ secrets in a domain environment
Protecting browsers’ secrets in a domain environmentProtecting browsers’ secrets in a domain environment
Protecting browsers’ secrets in a domain environment
 
How a Developer can Troubleshoot a SQL performing poorly on a Production DB
How a Developer can Troubleshoot a SQL performing poorly on a Production DBHow a Developer can Troubleshoot a SQL performing poorly on a Production DB
How a Developer can Troubleshoot a SQL performing poorly on a Production DB
 
Eventually, Scylla Chooses Consistency
Eventually, Scylla Chooses ConsistencyEventually, Scylla Chooses Consistency
Eventually, Scylla Chooses Consistency
 
Sql Antipatterns Strike Back
Sql Antipatterns Strike BackSql Antipatterns Strike Back
Sql Antipatterns Strike Back
 
Tanel Poder - Scripts and Tools short
Tanel Poder - Scripts and Tools shortTanel Poder - Scripts and Tools short
Tanel Poder - Scripts and Tools short
 
How to Use Oracle RAC in a Cloud? - A Support Question
How to Use Oracle RAC in a Cloud? - A Support QuestionHow to Use Oracle RAC in a Cloud? - A Support Question
How to Use Oracle RAC in a Cloud? - A Support Question
 
Deep Dive into Cassandra
Deep Dive into CassandraDeep Dive into Cassandra
Deep Dive into Cassandra
 
Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...
Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...
Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...
 
Low Level CPU Performance Profiling Examples
Low Level CPU Performance Profiling ExamplesLow Level CPU Performance Profiling Examples
Low Level CPU Performance Profiling Examples
 
Oracle db performance tuning
Oracle db performance tuningOracle db performance tuning
Oracle db performance tuning
 
Oracle Performance Tools of the Trade
Oracle Performance Tools of the TradeOracle Performance Tools of the Trade
Oracle Performance Tools of the Trade
 
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
 
Linux SMEP bypass techniques
Linux SMEP bypass techniquesLinux SMEP bypass techniques
Linux SMEP bypass techniques
 
Jvm tuning for low latency application & Cassandra
Jvm tuning for low latency application & CassandraJvm tuning for low latency application & Cassandra
Jvm tuning for low latency application & Cassandra
 
Understanding PostgreSQL LW Locks
Understanding PostgreSQL LW LocksUnderstanding PostgreSQL LW Locks
Understanding PostgreSQL LW Locks
 
Tanel Poder Oracle Scripts and Tools (2010)
Tanel Poder Oracle Scripts and Tools (2010)Tanel Poder Oracle Scripts and Tools (2010)
Tanel Poder Oracle Scripts and Tools (2010)
 
Improve PostgreSQL replication with Oracle GoldenGate
Improve PostgreSQL replication with Oracle GoldenGateImprove PostgreSQL replication with Oracle GoldenGate
Improve PostgreSQL replication with Oracle GoldenGate
 

Andere mochten auch

Cassandra Summit 2014: CQL Under the Hood
Cassandra Summit 2014: CQL Under the HoodCassandra Summit 2014: CQL Under the Hood
Cassandra Summit 2014: CQL Under the HoodDataStax Academy
 
A deep look at the cql where clause
A deep look at the cql where clauseA deep look at the cql where clause
A deep look at the cql where clauseBenjamin Lerer
 
Indexing in Cassandra
Indexing in CassandraIndexing in Cassandra
Indexing in CassandraEd Anuff
 
NoSQL Database- cassandra column Base DB
NoSQL Database- cassandra column Base DBNoSQL Database- cassandra column Base DB
NoSQL Database- cassandra column Base DBsadegh salehi
 
Cassandra internals
Cassandra internalsCassandra internals
Cassandra internalsnarsiman
 
Capital One: Using Cassandra In Building A Reporting Platform
Capital One: Using Cassandra In Building A Reporting PlatformCapital One: Using Cassandra In Building A Reporting Platform
Capital One: Using Cassandra In Building A Reporting PlatformDataStax Academy
 
AdStage: Monacella: An Relational Object Database using Cassandra as the Data...
AdStage: Monacella: An Relational Object Database using Cassandra as the Data...AdStage: Monacella: An Relational Object Database using Cassandra as the Data...
AdStage: Monacella: An Relational Object Database using Cassandra as the Data...DataStax Academy
 
DataStax: Testing Cassandra Guarantees Under Diverse Failure Modes With Jepsen
DataStax: Testing Cassandra Guarantees Under Diverse Failure Modes With JepsenDataStax: Testing Cassandra Guarantees Under Diverse Failure Modes With Jepsen
DataStax: Testing Cassandra Guarantees Under Diverse Failure Modes With JepsenDataStax Academy
 
MyDrive Solutions: Case Study: Troubleshooting Production Issues as a Developer.
MyDrive Solutions: Case Study: Troubleshooting Production Issues as a Developer.MyDrive Solutions: Case Study: Troubleshooting Production Issues as a Developer.
MyDrive Solutions: Case Study: Troubleshooting Production Issues as a Developer.DataStax Academy
 
DataStax: The Cassandra Validation Harness: Achieving More Stable Releases
DataStax: The Cassandra Validation Harness: Achieving More Stable ReleasesDataStax: The Cassandra Validation Harness: Achieving More Stable Releases
DataStax: The Cassandra Validation Harness: Achieving More Stable ReleasesDataStax Academy
 
The Last Pickle: Repeatable, Scalable, Reliable, Observable: Cassandra
The Last Pickle: Repeatable, Scalable, Reliable, Observable: CassandraThe Last Pickle: Repeatable, Scalable, Reliable, Observable: Cassandra
The Last Pickle: Repeatable, Scalable, Reliable, Observable: CassandraDataStax Academy
 
Silicon Valley Data Science: From Oracle to Cassandra with Spark
Silicon Valley Data Science: From Oracle to Cassandra with SparkSilicon Valley Data Science: From Oracle to Cassandra with Spark
Silicon Valley Data Science: From Oracle to Cassandra with SparkDataStax Academy
 
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...DataStax
 
AddThis: Scaling Cassandra up and down into containers with ZFS
AddThis: Scaling Cassandra up and down into containers with ZFSAddThis: Scaling Cassandra up and down into containers with ZFS
AddThis: Scaling Cassandra up and down into containers with ZFSDataStax Academy
 
Hardening cassandra q2_2016
Hardening cassandra q2_2016Hardening cassandra q2_2016
Hardening cassandra q2_2016zznate
 
Hadoop 2.0 - The Next Level
Hadoop 2.0 - The Next LevelHadoop 2.0 - The Next Level
Hadoop 2.0 - The Next LevelSascha Dittmann
 
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...DataStax Academy
 
Cassandra presentation at NoSQL
Cassandra presentation at NoSQLCassandra presentation at NoSQL
Cassandra presentation at NoSQLEvan Weaver
 

Andere mochten auch (20)

Cassandra Summit 2014: CQL Under the Hood
Cassandra Summit 2014: CQL Under the HoodCassandra Summit 2014: CQL Under the Hood
Cassandra Summit 2014: CQL Under the Hood
 
A deep look at the cql where clause
A deep look at the cql where clauseA deep look at the cql where clause
A deep look at the cql where clause
 
Indexing in Cassandra
Indexing in CassandraIndexing in Cassandra
Indexing in Cassandra
 
NoSQL Database- cassandra column Base DB
NoSQL Database- cassandra column Base DBNoSQL Database- cassandra column Base DB
NoSQL Database- cassandra column Base DB
 
Cassandra internals
Cassandra internalsCassandra internals
Cassandra internals
 
Capital One: Using Cassandra In Building A Reporting Platform
Capital One: Using Cassandra In Building A Reporting PlatformCapital One: Using Cassandra In Building A Reporting Platform
Capital One: Using Cassandra In Building A Reporting Platform
 
AdStage: Monacella: An Relational Object Database using Cassandra as the Data...
AdStage: Monacella: An Relational Object Database using Cassandra as the Data...AdStage: Monacella: An Relational Object Database using Cassandra as the Data...
AdStage: Monacella: An Relational Object Database using Cassandra as the Data...
 
DataStax: Testing Cassandra Guarantees Under Diverse Failure Modes With Jepsen
DataStax: Testing Cassandra Guarantees Under Diverse Failure Modes With JepsenDataStax: Testing Cassandra Guarantees Under Diverse Failure Modes With Jepsen
DataStax: Testing Cassandra Guarantees Under Diverse Failure Modes With Jepsen
 
MyDrive Solutions: Case Study: Troubleshooting Production Issues as a Developer.
MyDrive Solutions: Case Study: Troubleshooting Production Issues as a Developer.MyDrive Solutions: Case Study: Troubleshooting Production Issues as a Developer.
MyDrive Solutions: Case Study: Troubleshooting Production Issues as a Developer.
 
DataStax: The Cassandra Validation Harness: Achieving More Stable Releases
DataStax: The Cassandra Validation Harness: Achieving More Stable ReleasesDataStax: The Cassandra Validation Harness: Achieving More Stable Releases
DataStax: The Cassandra Validation Harness: Achieving More Stable Releases
 
The Last Pickle: Repeatable, Scalable, Reliable, Observable: Cassandra
The Last Pickle: Repeatable, Scalable, Reliable, Observable: CassandraThe Last Pickle: Repeatable, Scalable, Reliable, Observable: Cassandra
The Last Pickle: Repeatable, Scalable, Reliable, Observable: Cassandra
 
CQL Under the Hood
CQL Under the HoodCQL Under the Hood
CQL Under the Hood
 
Silicon Valley Data Science: From Oracle to Cassandra with Spark
Silicon Valley Data Science: From Oracle to Cassandra with SparkSilicon Valley Data Science: From Oracle to Cassandra with Spark
Silicon Valley Data Science: From Oracle to Cassandra with Spark
 
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
 
Intro to Cassandra
Intro to CassandraIntro to Cassandra
Intro to Cassandra
 
AddThis: Scaling Cassandra up and down into containers with ZFS
AddThis: Scaling Cassandra up and down into containers with ZFSAddThis: Scaling Cassandra up and down into containers with ZFS
AddThis: Scaling Cassandra up and down into containers with ZFS
 
Hardening cassandra q2_2016
Hardening cassandra q2_2016Hardening cassandra q2_2016
Hardening cassandra q2_2016
 
Hadoop 2.0 - The Next Level
Hadoop 2.0 - The Next LevelHadoop 2.0 - The Next Level
Hadoop 2.0 - The Next Level
 
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
 
Cassandra presentation at NoSQL
Cassandra presentation at NoSQLCassandra presentation at NoSQL
Cassandra presentation at NoSQL
 

Ähnlich wie CQL WHERE Deep Dive: Restrictions on Partition and Clustering Keys

OSMC 2008 | Monitoring MySQL by Geert Vanderkelen
OSMC 2008 | Monitoring MySQL by Geert VanderkelenOSMC 2008 | Monitoring MySQL by Geert Vanderkelen
OSMC 2008 | Monitoring MySQL by Geert VanderkelenNETWAYS
 
Hailey_Database_Performance_Made_Easy_through_Graphics.pdf
Hailey_Database_Performance_Made_Easy_through_Graphics.pdfHailey_Database_Performance_Made_Easy_through_Graphics.pdf
Hailey_Database_Performance_Made_Easy_through_Graphics.pdfcookie1969
 
Everything you always wanted to know about datetime types but didn’t have tim...
Everything you always wanted to know about datetime types but didn’t have tim...Everything you always wanted to know about datetime types but didn’t have tim...
Everything you always wanted to know about datetime types but didn’t have tim...MartinHanssonOracle
 
Macy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-FlightMacy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-FlightDataStax Academy
 
Execution plans for mere mortals
Execution plans for mere mortalsExecution plans for mere mortals
Execution plans for mere mortalsMike Lawell
 
INFLUXQL & TICKSCRIPT
INFLUXQL & TICKSCRIPTINFLUXQL & TICKSCRIPT
INFLUXQL & TICKSCRIPTInfluxData
 
Hash join use memory optimization
Hash join use memory optimizationHash join use memory optimization
Hash join use memory optimizationICTeam S.p.A.
 
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch TablesGUSS
 
201809 DB tech showcase
201809 DB tech showcase201809 DB tech showcase
201809 DB tech showcaseKeisuke Suzuki
 
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)Dave Stokes
 
Jboss World 2011 Infinispan
Jboss World 2011 InfinispanJboss World 2011 Infinispan
Jboss World 2011 Infinispancbo_
 
Performance schema and sys schema
Performance schema and sys schemaPerformance schema and sys schema
Performance schema and sys schemaMark Leith
 
Connor McDonald Partitioning
Connor McDonald PartitioningConnor McDonald Partitioning
Connor McDonald PartitioningInSync Conference
 
Metadata Matters
Metadata MattersMetadata Matters
Metadata Mattersafa reg
 
Modeling the IoT with TitanDB and Cassandra
Modeling the IoT with TitanDB and CassandraModeling the IoT with TitanDB and Cassandra
Modeling the IoT with TitanDB and Cassandratwilmes
 

Ähnlich wie CQL WHERE Deep Dive: Restrictions on Partition and Clustering Keys (20)

OSMC 2008 | Monitoring MySQL by Geert Vanderkelen
OSMC 2008 | Monitoring MySQL by Geert VanderkelenOSMC 2008 | Monitoring MySQL by Geert Vanderkelen
OSMC 2008 | Monitoring MySQL by Geert Vanderkelen
 
Hailey_Database_Performance_Made_Easy_through_Graphics.pdf
Hailey_Database_Performance_Made_Easy_through_Graphics.pdfHailey_Database_Performance_Made_Easy_through_Graphics.pdf
Hailey_Database_Performance_Made_Easy_through_Graphics.pdf
 
Everything you always wanted to know about datetime types but didn’t have tim...
Everything you always wanted to know about datetime types but didn’t have tim...Everything you always wanted to know about datetime types but didn’t have tim...
Everything you always wanted to know about datetime types but didn’t have tim...
 
Macy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-FlightMacy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-Flight
 
Execution plans for mere mortals
Execution plans for mere mortalsExecution plans for mere mortals
Execution plans for mere mortals
 
Perf Tuning Short
Perf Tuning ShortPerf Tuning Short
Perf Tuning Short
 
INFLUXQL & TICKSCRIPT
INFLUXQL & TICKSCRIPTINFLUXQL & TICKSCRIPT
INFLUXQL & TICKSCRIPT
 
Hash join use memory optimization
Hash join use memory optimizationHash join use memory optimization
Hash join use memory optimization
 
Php forum2015 tomas_final
Php forum2015 tomas_finalPhp forum2015 tomas_final
Php forum2015 tomas_final
 
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
 
201809 DB tech showcase
201809 DB tech showcase201809 DB tech showcase
201809 DB tech showcase
 
Rmoug ashmaster
Rmoug ashmasterRmoug ashmaster
Rmoug ashmaster
 
Dun ddd
Dun dddDun ddd
Dun ddd
 
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
 
Partitioning 101
Partitioning 101Partitioning 101
Partitioning 101
 
Jboss World 2011 Infinispan
Jboss World 2011 InfinispanJboss World 2011 Infinispan
Jboss World 2011 Infinispan
 
Performance schema and sys schema
Performance schema and sys schemaPerformance schema and sys schema
Performance schema and sys schema
 
Connor McDonald Partitioning
Connor McDonald PartitioningConnor McDonald Partitioning
Connor McDonald Partitioning
 
Metadata Matters
Metadata MattersMetadata Matters
Metadata Matters
 
Modeling the IoT with TitanDB and Cassandra
Modeling the IoT with TitanDB and CassandraModeling the IoT with TitanDB and Cassandra
Modeling the IoT with TitanDB and Cassandra
 

Mehr von DataStax Academy

Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
Forrester CXNYC 2017 - Delivering great real-time cx is a true craftForrester CXNYC 2017 - Delivering great real-time cx is a true craft
Forrester CXNYC 2017 - Delivering great real-time cx is a true craftDataStax Academy
 
Introduction to DataStax Enterprise Graph Database
Introduction to DataStax Enterprise Graph DatabaseIntroduction to DataStax Enterprise Graph Database
Introduction to DataStax Enterprise Graph DatabaseDataStax Academy
 
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
Introduction to DataStax Enterprise Advanced Replication with Apache CassandraIntroduction to DataStax Enterprise Advanced Replication with Apache Cassandra
Introduction to DataStax Enterprise Advanced Replication with Apache CassandraDataStax Academy
 
Cassandra on Docker @ Walmart Labs
Cassandra on Docker @ Walmart LabsCassandra on Docker @ Walmart Labs
Cassandra on Docker @ Walmart LabsDataStax Academy
 
Cassandra 3.0 Data Modeling
Cassandra 3.0 Data ModelingCassandra 3.0 Data Modeling
Cassandra 3.0 Data ModelingDataStax Academy
 
Cassandra Adoption on Cisco UCS & Open stack
Cassandra Adoption on Cisco UCS & Open stackCassandra Adoption on Cisco UCS & Open stack
Cassandra Adoption on Cisco UCS & Open stackDataStax Academy
 
Data Modeling for Apache Cassandra
Data Modeling for Apache CassandraData Modeling for Apache Cassandra
Data Modeling for Apache CassandraDataStax Academy
 
Production Ready Cassandra
Production Ready CassandraProduction Ready Cassandra
Production Ready CassandraDataStax Academy
 
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & PythonCassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & PythonDataStax Academy
 
Cassandra @ Sony: The good, the bad, and the ugly part 1
Cassandra @ Sony: The good, the bad, and the ugly part 1Cassandra @ Sony: The good, the bad, and the ugly part 1
Cassandra @ Sony: The good, the bad, and the ugly part 1DataStax Academy
 
Cassandra @ Sony: The good, the bad, and the ugly part 2
Cassandra @ Sony: The good, the bad, and the ugly part 2Cassandra @ Sony: The good, the bad, and the ugly part 2
Cassandra @ Sony: The good, the bad, and the ugly part 2DataStax Academy
 
Standing Up Your First Cluster
Standing Up Your First ClusterStanding Up Your First Cluster
Standing Up Your First ClusterDataStax Academy
 
Real Time Analytics with Dse
Real Time Analytics with DseReal Time Analytics with Dse
Real Time Analytics with DseDataStax Academy
 
Introduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache CassandraIntroduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache CassandraDataStax Academy
 
Enabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseEnabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseDataStax Academy
 
Advanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraAdvanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraDataStax Academy
 

Mehr von DataStax Academy (20)

Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
Forrester CXNYC 2017 - Delivering great real-time cx is a true craftForrester CXNYC 2017 - Delivering great real-time cx is a true craft
Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
 
Introduction to DataStax Enterprise Graph Database
Introduction to DataStax Enterprise Graph DatabaseIntroduction to DataStax Enterprise Graph Database
Introduction to DataStax Enterprise Graph Database
 
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
Introduction to DataStax Enterprise Advanced Replication with Apache CassandraIntroduction to DataStax Enterprise Advanced Replication with Apache Cassandra
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
 
Cassandra on Docker @ Walmart Labs
Cassandra on Docker @ Walmart LabsCassandra on Docker @ Walmart Labs
Cassandra on Docker @ Walmart Labs
 
Cassandra 3.0 Data Modeling
Cassandra 3.0 Data ModelingCassandra 3.0 Data Modeling
Cassandra 3.0 Data Modeling
 
Cassandra Adoption on Cisco UCS & Open stack
Cassandra Adoption on Cisco UCS & Open stackCassandra Adoption on Cisco UCS & Open stack
Cassandra Adoption on Cisco UCS & Open stack
 
Data Modeling for Apache Cassandra
Data Modeling for Apache CassandraData Modeling for Apache Cassandra
Data Modeling for Apache Cassandra
 
Coursera Cassandra Driver
Coursera Cassandra DriverCoursera Cassandra Driver
Coursera Cassandra Driver
 
Production Ready Cassandra
Production Ready CassandraProduction Ready Cassandra
Production Ready Cassandra
 
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & PythonCassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
 
Cassandra @ Sony: The good, the bad, and the ugly part 1
Cassandra @ Sony: The good, the bad, and the ugly part 1Cassandra @ Sony: The good, the bad, and the ugly part 1
Cassandra @ Sony: The good, the bad, and the ugly part 1
 
Cassandra @ Sony: The good, the bad, and the ugly part 2
Cassandra @ Sony: The good, the bad, and the ugly part 2Cassandra @ Sony: The good, the bad, and the ugly part 2
Cassandra @ Sony: The good, the bad, and the ugly part 2
 
Standing Up Your First Cluster
Standing Up Your First ClusterStanding Up Your First Cluster
Standing Up Your First Cluster
 
Real Time Analytics with Dse
Real Time Analytics with DseReal Time Analytics with Dse
Real Time Analytics with Dse
 
Introduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache CassandraIntroduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache Cassandra
 
Cassandra Core Concepts
Cassandra Core ConceptsCassandra Core Concepts
Cassandra Core Concepts
 
Enabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseEnabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax Enterprise
 
Bad Habits Die Hard
Bad Habits Die Hard Bad Habits Die Hard
Bad Habits Die Hard
 
Advanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraAdvanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache Cassandra
 
Advanced Cassandra
Advanced CassandraAdvanced Cassandra
Advanced Cassandra
 

Kürzlich hochgeladen

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Kürzlich hochgeladen (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

CQL WHERE Deep Dive: Restrictions on Partition and Clustering Keys

  • 1. A deep look at the CQL WHERE clause
  • 2. CQL WHERE clause 2© 2015. All Rights Reserved. Driver The WHERE clause restrictions are dependent on: • The type of statement: SELECT, UPDATE or DELETE • The type of column: partition key, clustering or regular column • If a secondary index is used or not
  • 3. 3© 2015. All Rights Reserved. Driver SELECT statements
  • 4. Partition key restrictions 4© 2015. All Rights Reserved. Driver Cluster Date Time Count ‘cluster 1’ ‘2015-09-21’ ‘12:00’ 251 ‘cluster 1’ ‘2015-09-22’ ‘12:00’ 342 ‘cluster 2’ ‘2015-09-21’ ‘12:00’ 403 ‘cluster 2’ ‘2015-09-22’ ‘12:00’ 451 CREATE TABLE numberOfRequests ( cluster text, date text, time text, count int, PRIMARY KEY ((cluster, date)) ) Partition Key
  • 5. Partition key restrictions 5© 2015. All Rights Reserved. Driver Cluster Date Murmur3 hash ‘cluster 1’ ‘2015-09-21’ -4782752162231423249 ‘cluster 1’ ‘2015-09-22’ 4936127188075462704 ‘cluster 2’ ‘2015-09-21’ 5822105674898716412 ‘cluster 2’ ‘2015-09-22’ 2698159220916609751 A C D B 4611686018427387904 to 9223372036854775807 -9223372036854775808 to -4611686018427387903 -1 to 4611686018427387903 -4611686018427387904 to -1
  • 6. Partition key restrictions 6© 2015. All Rights Reserved. Driver Cluster Date Node ‘cluster 1’ ‘2015-09-21’ A ‘cluster 1’ ‘2015-09-22’ D ‘cluster 2’ ‘2015-09-21’ D ‘cluster 2’ ‘2015-09-22’ C A C D B
  • 7. Partition key restrictions 7© 2015. All Rights Reserved. Driver A C D B SELECT * FROM numberOfRequests; Driver
  • 8. Partition key restrictions 8© 2015. All Rights Reserved. Driver SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’; InvalidRequest: code=2200 [Invalid query] message="Partition key parts: date must be restricted as other parts are"
  • 9. Partition key restrictions 9© 2015. All Rights Reserved. Driver A C D B SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’ AND date = ‘2015-09-21’; Driver
  • 10. Partition key restrictions 10© 2015. All Rights Reserved. Driver A C D B SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’ AND date = ‘2015-09-21’; Driver …with TokenAwarePolicy
  • 11. Partition key restrictions 11© 2015. All Rights Reserved. Driver A C D B SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 2’ AND date IN (‘2015-09-21’, ‘2015-09-22’); Driver
  • 12. Partition key restrictions 12© 2015. All Rights Reserved. Driver A C D B SELECT * FROM numberOfRequests WHERE cluster = ‘cluster 2’ AND date = ‘2015-09-21’; Driver …with TokenAwarePolicy and asynchronous calls SELECT * FROM numberOfRequests WHERE cluster = ‘cluster 2’ AND date = ‘2015-09-22’;
  • 13. Partition key restrictions 13© 2015. All Rights Reserved. Driver SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’ AND date >= ‘2015-09-21’; InvalidRequest: code=2200 [Invalid query] message="Only EQ and IN relation are supported on the partition key (unless you use the token() function)"
  • 14. Partition key restrictions 14© 2015. All Rights Reserved. Driver Cluster Date Node ‘cluster 1’ ‘2015-09-21’ A ‘cluster 1’ ‘2015-09-22’ D ‘cluster 2’ ‘2015-09-21’ D ‘cluster 2’ ‘2015-09-22’ C A C D B SELECT * FROM numberOfRequests WHERE cluster= ‘cluster 1’ AND date >= ‘2015-09-21’;
  • 15. Partition key restrictions 15© 2015. All Rights Reserved. Driver • Murmur3Partitioner (default): uniformly distributes data across the cluster based on MurmurHash hash values. • RandomPartitioner: uniformly distributes data across the cluster based on MD5 hash values. • ByteOrderedPartitioner: keeps an ordered distribution of data lexically by key bytes
  • 16. Partition key restrictions 16© 2015. All Rights Reserved. Driver SELECT * FROM numberOfRequests WHERE token(cluster, date) > token(‘cluster 1’, ‘2015-09-21’) AND token(cluster, date) < token(‘cluster 1’, ‘2015-09-23’);
  • 17. Partition key restrictions (SELECT) 17© 2015. All Rights Reserved. • Without secondary index, either all partition key components must be restricted or none of them • = restrictions are allowed on any partition key component • IN restrictions are allowed on any partition key component since 2.2 • Prior to 2.2, IN restrictions were only allowed on the last partition key component • =, >, >=, <= and < restrictions are allowed with the token function
  • 18. Clustering column restrictions 18© 2015. All Rights Reserved. CREATE TABLE numberOfRequests ( cluster text, date text, datacenter text, server inet, time text, count int, PRIMARY KEY((cluster, date), datacenter, server, time)) …
  • 19. Clustering column restrictions 19© 2015. All Rights Reserved. … Datacenter Server Time Count Iowa 196.8.7.134 00:00 130 Iowa 196.8.7.134 00:01 125 Iowa 196.8.7.134 00:02 97 Iowa 196.8.7.135 00:00 178 Iowa 196.8.7.135 00:01 201 [Iowa, 196.8.7.134, 00:02, count] : 97 In the Memtables: [Iowa, 196.8.7.134, 00:00, count] : 130 [Iowa, 196.8.7.134, 00:01, count] : 125 [Iowa, 196.8.7.135, 00:00, count] : 178 [Iowa, 196.8.7.135, 00:01, count] : 201 [Iowa, 196.8.7.134, 00:00, count] : 130 Cell name Cell Column name
  • 20. Clustering column restrictions 20© 2015. All Rights Reserved. … Datacenter Server Time Count Iowa 196.8.7.134 00:00 130 Iowa 196.8.7.134 00:01 125 Iowa 196.8.7.134 00:02 97 Iowa 196.8.7.135 00:00 178 Iowa 196.8.7.135 00:01 201 [Iowa, 196.8.7.134, 00:02, count] : 97 In the SSTables: [Iowa, 196.8.7.134, 00:00, count] : 130 [Iowa, 196.8.7.134, 00:01, count] : 125 [Iowa, 196.8.7.135, 00:00, count] : 178 [Iowa, 196.8.7.135, 00:0 201 [Iowa, 196.8.7.134, 00:00, count] : 130 Cell name Cell Column name
  • 21. Clustering column restrictions 21© 2015. All Rights Reserved. … [Iowa, 196.8.7.134, 00:02, count] : 97 In the Memtables: [Iowa, 196.8.7.134, 00:00, count] : 130 [Iowa, 196.8.7.134, 00:01, count] : 125 [Iowa, 196.8.7.135, 00:00, count] : 178 [Iowa, 196.8.7.135, 00:01, count] : 201 SELECT * FROM numberOfRequests WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’ AND datacenter = ‘Iowa’ AND server = ‘196.8.7.135’ AND time = ‘00:00’; [Iowa,196.8.7.135,00:00]
  • 22. Clustering column restrictions 22© 2015. All Rights Reserved. … SELECT * FROM numberOfRequests WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’ AND datacenter = ‘Iowa’ AND server = ‘196.8.7.135’ AND time = ‘00:00’; [Iowa,196.8.7.135,00:00] … [Iowa, 196.8.7.134, 00:02, count] : 97 In the SSTables: [Iowa, 196.8.7.134, 00:00, count] : 130 [Iowa, 196.8.7.134, 00:01, count] : 125 [Iowa, 196.8.7.135, 00:00, count] : 178 [Iowa, 196.8.7.135, 00:0 201
  • 23. Clustering column restrictions 23© 2015. All Rights Reserved. [Iowa, 196.8.7.134, 00:02, count] : 97 In the Memtables: [Iowa, 196.8.7.134, 00:00, count] : 130 [Iowa, 196.8.7.134, 00:01, count] : 125 [Iowa, 196.8.7.135, 00:00, count] : 178 [Iowa, 196.8.7.135, 00:01, count] : 201 SELECT * FROM numberOfRequests WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’ AND datacenter = ‘Iowa’ AND server = ‘196.8.7.135’; [Iowa,196.8.7.135]
  • 24. Clustering column restrictions 24© 2015. All Rights Reserved. … SELECT * FROM numberOfRequests WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’ AND datacenter = ‘Iowa’ AND server = ‘196.8.7.135’; [Iowa,196.8.7.135] …[Iowa, 196.8.7.134, 00:02, count] : 97 In the SSTables: [Iowa, 196.8.7.134, 00:00, count] : 130 [Iowa, 196.8.7.134, 00:01, count] : 125 [Iowa, 196.8.7.135, 00:00, count] : 178 [Iowa, 196.8.7.135, 00:0 201
  • 25. Clustering column restrictions SELECT * FROM numberOfRequests WHERE cluster = ‘cluster1’ AND date =‘2015-09-21’ AND time = ‘00:00’; [?,?,00:00] InvalidRequest: code=2200 [Invalid query] message="PRIMARY KEY column "time" cannot be restricted as preceding column "datacenter" is not restricted"
  • 26. Clustering column restrictions 26© 2015. All Rights Reserved. … AND datacenter = ‘Iowa’ AND server IN (‘196.8.7.134’, ‘196.8.7.135’) AND time = ‘00:00’; In 2.2: [Iowa,196.8.7.134,00:00] [Iowa,196.8.7.135,00:00] …[Iowa, 196.8.7.134, 00:02, count] : 97 In the SSTables: [Iowa, 196.8.7.134, 00:00, count] : 130 [Iowa, 196.8.7.134, 00:01, count] : 125 [Iowa, 196.8.7.135, 00:00, count] : 178 [Iowa, 196.8.7.135, 00:0 201
  • 27. Clustering column restrictions 27© 2015. All Rights Reserved. … AND datacenter = ‘Iowa’ AND server IN (‘196.8.7.134’, ‘196.8.7.135’) AND time = ‘00:00’; In 2.1: InvalidRequest: code=2200 [Invalid query] message="Clustering column "server" cannot be restricted by an IN relation"
  • 28. Clustering column restrictions 28© 2015. All Rights Reserved. = multi-column restriction: (clustering1, clustering2, clustering3) = (?, ?, ?) IN multi-column restriction: (clustering1, clustering2, clustering3) IN ((?, ?, ?), (?, ?, ?)) Slice multi-column restriction: (clustering1, clustering2, clustering3) > (?, ?, ?) (clustering1, clustering2, clustering3) >= (?, ?, ?) (clustering1, clustering2, clustering3) <= (?, ?, ?) (clustering1, clustering2, clustering3) < (?, ?, ?)
  • 29. Clustering column restrictions 29© 2015. All Rights Reserved. … AND datacenter = ‘Iowa’ AND (server, time) IN ((‘196.8.7.134’, ‘00:00’), (‘196.8.7.135’, ‘00:00’)); In 2.1: [Iowa,196.8.7.134,00:00] [Iowa,196.8.7.135,00:00] …[Iowa, 196.8.7.134, 00:02, count] : 97 In the SSTables: [Iowa, 196.8.7.134, 00:00, count] : 130 [Iowa, 196.8.7.134, 00:01, count] : 125 [Iowa, 196.8.7.135, 00:00, count] : 178 [Iowa, 196.8.7.135, 00:0 201
  • 30. Clustering column restrictions 30© 2015. All Rights Reserved. … AND datacenter = ‘Iowa’ AND server = ‘196.8.7.134’ AND time > ’00:00’; from after [Iowa,196.8.7.134,00:00] to end of [Iowa,196.8.7.134] …[Iowa, 196.8.7.134, 00:02, count] : 97 In the SSTables: [Iowa, 196.8.7.134, 00:00, count] : 130 [Iowa, 196.8.7.134, 00:01, count] : 125 [Iowa, 196.8.7.135, 00:00, count] : 178 [Iowa, 196.8.7.135, 00:0 201
  • 31. Clustering column restrictions (SELECT) 31© 2015. All Rights Reserved. • Without secondary index, a clustering column cannot be restricted if one of the previous ones was not • = restrictions (single and multi) are allowed on any clustering column • IN restrictions (single and multi) are allowed on any clustering column since 2.2 • Prior to 2.2, IN restrictions (single and multi) were only allowed on the last clustering column or set of clustering columns • >, >=, <=, < restrictions (single and multi) are only allowed on the last restricted clustering column or set of clustering columns • CONTAINS and CONTAINS KEY restrictions are only allowed on indexed collections
  • 32. Secondary index queries 32© 2015. All Rights Reserved. CREATE TABLE numberOfRequests ( cluster text, date text, datacenter text, server inet, time text, count int, PRIMARY KEY((cluster, date), datacenter, server, time)); CREATE INDEX ON numberOfRequests (time); …
  • 33. Secondary index queries 33© 2015. All Rights Reserved. CREATE INDEX ON numberOfRequests (time); CREATE LOCAL TABLE numberOfRequests_time_idx ( time text, cluster text, date text, datacenter text, server inet, PRIMARY KEY(time, cluster, date, datacenter, server); … Table Partition Key Table remaining clustering columns
  • 34. IDX-BIDX-D IDX-C IDX-A Secondary index queries 34© 2015. All Rights Reserved. Driver A C D B SELECT * FROM numberOfRequests WHERE time = ‘12:00’; Driver
  • 35. Secondary index queries 35© 2015. All Rights Reserved. Driver SELECT * FROM numberOfRequests WHERE time = ‘12:00’; idx SELECT * FROM numberOfRequests_time_idx WHERE time = ‘12:00’; Results (Primary Keys) table SELECT with full PK; [For each] Add to rows
  • 36. Secondary index queries 36© 2015. All Rights Reserved. Driver SELECT * FROM numberOfRequests WHERE time >= ‘12:00’; InvalidRequest: code=2200 [Invalid query] message="PRIMARY KEY column "time" cannot be restricted as preceding column "datacenter" is not restricted" Direct queries on secondary index support only =, CONTAINS or CONTAINS KEY restrictions.
  • 37. Secondary index queries 37© 2015. All Rights Reserved. Driver SELECT * FROM numberOfRequests WHERE time = ‘12:00’ AND count >= 500 ALLOW FILTERING; idx SELECT * FROM numberOfRequests_time_idx WHERE time = ‘12:00’; Results (Primary Keys) table SELECT with full PK; [For each] Add to rows [if count >= 500]
  • 38. IDX-BIDX-D IDX-C IDX-A Secondary index queries 38© 2015. All Rights Reserved. Driver A C D B SELECT * FROM numberOfRequests WHERE cluster = ‘cluster 1’ AND date = ‘2015-09-21’AND time = ‘12:00’; Driver
  • 39. Secondary index queries 39© 2015. All Rights Reserved. Driver SELECT * FROM numberOfRequests WHERE cluster = ‘cluster 1’ AND date = ‘2015-09-21’ AND time = ‘12:00’; idx SELECT * FROM numberOfRequests_time_idx WHERE time = ‘12:00’ AND cluster = ‘1’ AND date = ‘2015-09-21’; Results (Primary Keys) table SELECT with full PK [For each] Add to rows
  • 40. 40© 2015. All Rights Reserved. Driver UPDATE/DELETE statements
  • 41. UPDATE statements 41© 2015. All Rights Reserved. Driver In the UPDATE statements all the primary key columns must be restricted and the only allowed restrictions are: • Prior to 3.0: • Single column = restriction on any partition key or clustering column • Single column IN restriction on the last partition key column • In 3.0: • = and IN single column restrictions on any partition key column • = and IN single or multi column restrictions on any clustering column
  • 42. DELETE statements 42© 2015. All Rights Reserved. Driver Before 3.0, in the DELETE statements all the primary key columns must be restricted and the only allowed restrictions were: • Single column = restriction on any partition key or clustering column • Single column IN restriction on the last partition key column
  • 43. DELETE statements 43© 2015. All Rights Reserved. Driver Since 3.0: • The partition key columns must be restricted by = or IN restrictions • A clustering column might not be restricted if none of the following is • Clustering columns can be restricted by: • Single or multi column = restriction • Single or multi column IN restriction • Single or multi column >, >=, <=, < restriction
  • 44. © 2015. All Rights Reserved. 44 Design your tables for the queries you want to perform.