ScyllaDB Documentation Logo Documentation
  • Server
    • ScyllaDB Open Source
    • ScyllaDB Enterprise
    • ScyllaDB Alternator
  • Cloud
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
Download
Menu
ScyllaDB Docs Scylla Rust Driver Schema

Schema¶

The driver is capable of fetching database schema and presenting it to its users.

Fetching schema¶

Fetching database schema occurs periodically, but it can also be done on-demand. In order to fetch the newest database schema, one can call refresh_metadata() on a Session instance:

async fn main() -> Result<(), Box<dyn Error>> {
    let uri = std::env::var("SCYLLA_URI")
        .unwrap_or_else(|_| "127.0.0.1:9042".to_string());

    let session: Session = SessionBuilder::new().known_node(uri).build().await?;
    // Schema metadata will be fetched below
    session.refresh_metadata().await?;
    Ok(())
}

Inspecting schema¶

Once fetched, a snapshot of cluster’s schema can be examined. The following information can be obtained:

  • keyspace

    • tables belonging to the keyspace

    • materialized views belonging to the keyspace

    • replication strategy

    • user-defined types

  • table/view

    • primary key definition

    • columns

    • partitioner type

Example showing how to print obtained schema information:

async fn main() -> Result<(), Box<dyn Error>> {
    let uri = std::env::var("SCYLLA_URI")
        .unwrap_or_else(|_| "127.0.0.1:9042".to_string());

    let session: Session = SessionBuilder::new().known_node(uri).build().await?;
    // Schema metadata will be fetched below
    session.refresh_metadata().await?;

    let cluster_data = &session.get_cluster_data();
    let keyspaces = &cluster_data.get_keyspace_info();

    for (keyspace_name, keyspace_info) in keyspaces.iter() {
        println!("Keyspace {}:", keyspace_name);
        println!("\tTables: {:#?}", keyspace_info.tables);
        println!("\tViews: {:#?}", keyspace_info.views);
        println!("\tUDTs: {:#?}", keyspace_info.user_defined_types);
    }

    Ok(())
}
PREVIOUS
Query Execution History
Scylla Rust Driver
  • main
    • main
  • Scylla Rust Driver
  • Quick Start
    • Creating a project
    • Connecting and running a simple query
    • Running Scylla using Docker
  • Connecting to the cluster
    • Compression
    • Authentication
    • TLS
  • Making queries
    • Simple query
    • Query values
    • Query result
    • Prepared query
    • Batch statement
    • Paged query
    • USE keyspace
    • Schema agreement
    • Lightweight transaction (LWT) query
    • Query timeouts
  • Execution profiles
    • Creating a profile and setting it
    • All options supported by a profile
    • Priorities of execution settings
    • Remapping execution profile handles
  • Data Types
    • Bool, Tinyint, Smallint, Int, Bigint, Float, Double
    • Ascii, Text, Varchar
    • Counter
    • Blob
    • Inet
    • Uuid, Timeuuid
    • Date
    • Time
    • Timestamp
    • Duration
    • Decimal
    • Varint
    • List, Set, Map
    • Tuple
    • User defined types
  • Load balancing
    • DefaultPolicy
  • Retry policy configuration
    • Fallthrough retry policy
    • Default retry policy
    • Downgrading consistency retry policy
  • Speculative execution
    • Simple speculative execution
    • Percentile speculative execution
  • Driver metrics
  • Logging
  • Query tracing
    • Tracing a simple/prepared/batch query
    • Tracing a paged query
    • Tracing Session::prepare
    • Query Execution History
  • Schema
  • Create an issue
  • Edit this page

On this page

  • Schema
    • Fetching schema
    • Inspecting schema
Logo
Docs Contact Us About Us
Mail List Icon Slack Icon Forum Icon
© 2023, ScyllaDB. All rights reserved.
Last updated on 22 March 2023.
Powered by Sphinx 4.3.2 & ScyllaDB Theme 1.3.5