41 个版本 (破坏性)
0.30.0 | 2024年7月12日 |
---|---|
0.27.0 | 2024年5月7日 |
0.25.0 | 2023年12月28日 |
0.24.0 | 2023年10月15日 |
0.2.0 | 2021年11月28日 |
#1965 in 网页编程
905 每月下载量
用于 2 crates
8MB
144K SLoC
google-cloud-spanner
Google Cloud Platform spanner 库。
安装
[dependencies]
google-cloud-spanner = "version"
快速入门
创建 Client
并调用事务 API,与 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";
// Create spanner client
let config = ClientConfig::default().with_auth().await.unwrap();
let mut client = Client::new(DATABASE, config).await.unwrap();
// Insert
let mutation = insert("Guild", &["GuildId", "OwnerUserID", "UpdatedAt"], &[&"guildId", &"ownerId", &CommitTimestamp::new()]);
let commit_timestamp = client.apply(vec![mutation]).await?;
// Read with query
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");
}
// Remove all the sessions.
client.close().await;
Ok(())
}
相关项目
性能
24小时负载测试结果。
指标 | 此库 | Google Cloud Go |
---|---|---|
RPS | 438.4 | 443.4 |
使用的 vCPU | 0.37 ~ 0.42 | 0.65 ~ 0.70 |
测试条件
- 2.0 vCPU GKE Autopilot Pod
- 1 个节点 spanner 数据库服务器
- 100 个用户
- 这里 是负载测试的应用程序。
依赖项
~16–30MB
~562K SLoC