google-cloud-spanner
Google Cloud Platform spanner library.

Installation
[dependencies]
google-cloud-spanner = { package="gcloud-spanner", version="1.0.0" }
Quickstart
Create Client
and call transaction API same as Google Cloud Go.
use google_cloud_spanner::client::Client;
use google_cloud_spanner::mutation::insert;
use google_cloud_spanner::statement::Statement;
use google_cloud_spanner::value::CommitTimestamp;
use google_cloud_spanner::client::Error;
#[tokio::main]
async fn main() -> Result<(), Error> {
const DATABASE: &str = "projects/local-project/instances/test-instance/databases/local-database";
let config = ClientConfig::default().with_auth().await.unwrap();
let mut client = Client::new(DATABASE, config).await.unwrap();
let mutation = insert("Guild", &["GuildId", "OwnerUserID", "UpdatedAt"], &[&"guildId", &"ownerId", &CommitTimestamp::new()]);
let commit_timestamp = client.apply(vec![mutation]).await?;
let mut stmt = Statement::new("SELECT GuildId FROM Guild WHERE OwnerUserID = @OwnerUserID");
stmt.add_param("OwnerUserID",&"ownerId");
let mut tx = client.single().await?;
let mut iter = tx.query(stmt).await?;
while let Some(row) = iter.next().await? {
let guild_id = row.column_by_name::<String>("GuildId");
}
client.close().await;
Ok(())
}
Related project
Performance
Result of the 24 hours Load Test.
Metrics |
This library |
Google Cloud Go |
RPS |
438.4 |
443.4 |
Used vCPU |
0.37 ~ 0.42 |
0.65 ~ 0.70 |
Test condition
- 2.0 vCPU GKE Autopilot Pod
- 1 Node spanner database server
- 100 Users
- Here is the application for Load Test.