cassandra.metadata - Schema and Ring Topology
Module Data
cql_keywords
Set of keywords in CQL.
Derived from …/cassandra/src/java/org/apache/cassandra/cql3/Cql.g
cql_keywords_unreserved
Set of unreserved keywords in CQL.
Derived from …/cassandra/src/java/org/apache/cassandra/cql3/Cql.g
cql_keywords_reserved
Set of reserved keywords in CQL.
class Metadata
Holds a representation of the cluster schema and topology.
Attributes
cluster_name
= NoneThe string name of the cluster.
partitioner
= NoneThe string name of the partitioner for the cluster.
token_map
= NoneA TokenMap instance describing the ring topology.
keyspaces
= NoneA map from keyspace names to matching KeyspaceMetadata instances.
dbaas
= FalseA boolean indicating if connected to a DBaaS cluster
Methods
export_schema_as_string
()Returns a string that can be executed as a query in order to recreate the entire schema. The string is formatted to be human readable.
get_replicas
(keyspace, key)Returns a list of Host instances that are replicas for a given
partition key.
add_or_return_host
(host)Returns a tuple (host, new), where host is a Host
instance, and new is a bool indicating whether
the host was newly added.
get_host
(endpoint_or_address)Find a host in the metadata for a specific endpoint. If a string inet address is passed,
iterate all hosts to match the broadcast_rpc_address attribute.
all_hosts
()Returns a list of all known Host instances in the cluster.
Schemas
class KeyspaceMetadata
A representation of the schema for a single keyspace.
Attributes
virtual
= FalseA boolean indicating if this is a virtual keyspace or not. Always False
for clusters running Cassandra pre-4.0 and DSE pre-6.7 versions.
name
= NoneThe string name of the keyspace.
durable_writes
= TrueA boolean indicating whether durable writes are enabled for this keyspace or not.
replication_strategy
= NoneA ReplicationStrategy subclass object.
tables
= NoneA map from table names to instances of TableMetadata.
indexes
= NoneA dict mapping index names to IndexMetadata instances.
user_types
= NoneA map from user-defined type names to instances of UserType.
functions
= NoneA map from user-defined function signatures to instances of Function.
aggregates
= NoneA map from user-defined aggregate signatures to instances of Aggregate.
views
= NoneA dict mapping view names to MaterializedViewMetadata instances.
graph_engine
= NoneA string indicating whether a graph engine is enabled for this keyspace (Core/Classic).
Methods
export_as_string
()Returns a CQL query string that can be used to recreate the entire keyspace, including user-defined types and tables.
as_cql_query
()Returns a CQL query string that can be used to recreate just this keyspace, not including user-defined types and tables.
class UserType
A user defined type, as created by CREATE TYPE statements.
User-defined types were introduced in Cassandra 2.1.
New in version 2.1.0.Attributes
keyspace
= NoneThe string name of the keyspace in which this type is defined.
name
= NoneThe name of this type.
field_names
= NoneAn ordered list of the names for each field in this user-defined type.
field_types
= NoneAn ordered list of the types for each field in this user-defined type.
Methods
as_cql_query
(formatted=False)Returns a CQL query that can be used to recreate this type.
If formatted is set to True, extra whitespace will
be added to make the query more readable.
class Function
A user defined function, as created by CREATE FUNCTION statements.
User-defined functions were introduced in Cassandra 2.2
New in version 2.6.0.Attributes
keyspace
= NoneThe string name of the keyspace in which this function is defined
name
= NoneThe name of this function
argument_types
= NoneAn ordered list of the types for each argument to the function
argument_names
= NoneAn ordered list of the names of each argument to the function
return_type
= NoneReturn type of the function
language
= NoneLanguage of the function body
body
= NoneFunction body string
called_on_null_input
= NoneFlag indicating whether this function should be called for rows with null values (convenience function to avoid handling nulls explicitly if the result will just be null)
deterministic
= NoneFlag indicating if this function is guaranteed to produce the same result for a particular input. This is available only for DSE >=6.0.
monotonic
= NoneFlag indicating if this function is guaranteed to increase or decrease monotonically on any of its arguments. This is available only for DSE >=6.0.
monotonic_on
= NoneA list containing the argument or arguments over which this function is monotonic. This is available only for DSE >=6.0.
Methods
as_cql_query
(formatted=False)Returns a CQL query that can be used to recreate this function.
If formatted is set to True, extra whitespace will
be added to make the query more readable.
class Aggregate
A user defined aggregate function, as created by CREATE AGGREGATE statements.
Aggregate functions were introduced in Cassandra 2.2
New in version 2.6.0.Attributes
keyspace
= NoneThe string name of the keyspace in which this aggregate is defined
name
= NoneThe name of this aggregate
argument_types
= NoneAn ordered list of the types for each argument to the aggregate
state_func
= NoneName of a state function
state_type
= NoneType of the aggregate state
final_func
= NoneName of a final function
initial_condition
= NoneInitial condition of the aggregate
return_type
= NoneReturn type of the aggregate
deterministic
= NoneFlag indicating if this function is guaranteed to produce the same result for a particular input and state. This is available only with DSE >=6.0.
Methods
as_cql_query
(formatted=False)Returns a CQL query that can be used to recreate this aggregate.
If formatted is set to True, extra whitespace will
be added to make the query more readable.
class TableMetadata
A representation of the schema for a single table.
Attributes
primary_key
A list of ColumnMetadata representing the components of
the primary key for this table.
is_cql_compatible
A boolean indicating if this table can be represented as CQL in export
extensions
= NoneMetadata describing configuration for table extensions
keyspace_name
= NoneString name of this Table’s keyspace
name
= NoneThe string name of the table.
partition_key
= NoneA list of ColumnMetadata instances representing the columns in
the partition key for this table. This will always hold at least one
column.
clustering_key
= NoneA list of ColumnMetadata instances representing the columns
in the clustering key for this table. These are all of the
primary_key columns that are not in the partition_key.
Note that a table may have no clustering keys, in which case this will be an empty list.
columns
= NoneA dict mapping column names to ColumnMetadata instances.
indexes
= NoneA dict mapping index names to IndexMetadata instances.
options
= NoneA dict mapping table option names to their specific settings for this table.
triggers
= NoneA dict mapping trigger names to TriggerMetadata instances.
views
= NoneA dict mapping view names to MaterializedViewMetadata instances.
virtual
= FalseA boolean indicating if this is a virtual table or not. Always False
for clusters running Cassandra pre-4.0 and DSE pre-6.7 versions.
Methods
export_as_string
()Returns a string of CQL queries that can be used to recreate this table along with all indexes on it. The returned string is formatted to be human readable.
as_cql_query
(formatted=False)Returns a CQL query that can be used to recreate this table (index
creations are not included). If formatted is set to True,
extra whitespace will be added to make the query human readable.
class TableMetadataV3
For C* 3.0+. option_maps take a superset of map names, so if nothing changes structurally, new option maps can just be appended to the list.
Attributes
is_cql_compatible
A boolean indicating if this table can be represented as CQL in export
class TableMetadataDSE68
Attributes
vertex
= NoneA VertexMetadata instance, if graph enabled
edge
= NoneA EdgeMetadata instance, if graph enabled
Methods
as_cql_query
(formatted=False)Returns a CQL query that can be used to recreate this table (index
creations are not included). If formatted is set to True,
extra whitespace will be added to make the query human readable.
class ColumnMetadata
A representation of a single column in a table.
Attributes
table
= NoneThe TableMetadata this column belongs to.
name
= NoneThe string name of this column.
cql_type
= NoneThe CQL type for the column.
is_static
= FalseIf this column is static (available in Cassandra 2.1+), this will
be True, otherwise False.
is_reversed
= FalseIf this column is reversed (DESC) as in clustering order
class IndexMetadata
A representation of a secondary index on a column.
Attributes
keyspace_name
= NoneA string name of the keyspace.
table_name
= NoneA string name of the table this index is on.
name
= NoneA string name for the index.
kind
= NoneA string representing the kind of index (COMPOSITE, CUSTOM,…).
index_options
= {}A dict of index options.
Methods
as_cql_query
()Returns a CQL query that can be used to recreate this index.
export_as_string
()Returns a CQL query string that can be used to recreate this index.
class MaterializedViewMetadata
A representation of a materialized view on a table
Attributes
extensions
= NoneMetadata describing configuration for table extensions
keyspace_name
= NoneA string name of the keyspace of this view.
name
= NoneA string name of the view.
base_table_name
= NoneA string name of the base table for this view.
partition_key
= NoneA list of ColumnMetadata instances representing the columns in
the partition key for this view. This will always hold at least one
column.
clustering_key
= NoneA list of ColumnMetadata instances representing the columns
in the clustering key for this view.
Note that a table may have no clustering keys, in which case this will be an empty list.
columns
= NoneA dict mapping column names to ColumnMetadata instances.
include_all_columns
= NoneA flag indicating whether the view was created AS SELECT *
where_clause
= NoneString WHERE clause for the view select statement. From server metadata
options
= NoneA dict mapping table option names to their specific settings for this view.
Methods
as_cql_query
(formatted=False)Returns a CQL query that can be used to recreate this function.
If formatted is set to True, extra whitespace will
be added to make the query more readable.
class VertexMetadata
A representation of a vertex on a table
Attributes
keyspace_name
= NoneA string name of the keyspace.
table_name
= NoneA string name of the table this vertex is on.
label_name
= NoneA string name of the label of this vertex.
class EdgeMetadata
A representation of an edge on a table
Attributes
keyspace_name
= NoneA string name of the keyspace
table_name
= NoneA string name of the table this edge is on
label_name
= NoneA string name of the label of this edge
from_table
= NoneA string name of the from table of this edge (incoming vertex)
from_label
= NoneA string name of the from table label of this edge (incoming vertex)
from_partition_key_columns
= NoneThe columns that match the partition key of the incoming vertex table.
from_clustering_columns
= NoneThe columns that match the clustering columns of the incoming vertex table.
to_table
= NoneA string name of the to table of this edge (outgoing vertex)
to_label
= NoneA string name of the to table label of this edge (outgoing vertex)
to_partition_key_columns
= NoneThe columns that match the partition key of the outgoing vertex table.
to_clustering_columns
= NoneThe columns that match the clustering columns of the outgoing vertex table.
Tokens and Ring Topology
class TokenMap
Information about the layout of the ring.
Attributes
token_class
= NoneA subclass of Token, depending on what partitioner the cluster uses.
ring
= NoneAn ordered list of Token instances in the ring.
tokens_to_hosts_by_ks
= NoneMethods
get_replicas
(keyspace, token)class Token
Abstract class representing a token.
class Murmur3Token
A token for Murmur3Partitioner.
token is an int or string representing the token.
class MD5Token
A token for RandomPartitioner.
class BytesToken
A token for ByteOrderedPartitioner.
Class Methods
from_string
(token_string)token_string should be the string representation from the server.
Attributes
ReplicationStrategy
alias of cassandra.metadata._ReplicationStrategy
class SimpleStrategy
Attributes
replication_factor
= NoneThe replication factor for this keyspace.
Methods
export_for_schema
()Returns a string version of these replication options which are suitable for use in a CREATE KEYSPACE statement.
class NetworkTopologyStrategy
Attributes
dc_replication_factors
= NoneA map of datacenter names to the replication factor for that DC.
Methods
export_for_schema
()Returns a string version of these replication options which are suitable for use in a CREATE KEYSPACE statement.
class LocalStrategy
Methods
export_for_schema
()Returns a string version of these replication options which are suitable for use in a CREATE KEYSPACE statement.
Functions
group_keys_by_replica
(session, keyspace, table, keys)Returns a dict with the keys grouped per host. This can be
used to more accurately group by IN clause or to batch the keys per host.
If a valid replica is not found for a particular key it will be grouped under
NO_VALID_REPLICA
- Example usage::
-
- result = group_keys_by_replica(
-
session, “system”, “peers”, ((“127.0.0.1”, ), (“127.0.0.2”, ))
)