当前位置: 首页 > wzjs >正文

浙江网站建设推荐静态页面网站怎么做

浙江网站建设推荐,静态页面网站怎么做,天津公司网站制作公司,汕头网站制作哪家好引言:为什么选择 TDengine 与 Rust? TDengine 是一款专为物联网、车联网、工业互联网等时序数据场景优化设计的开源时序数据库,支持高并发写入、高效查询及流式计算,通过“一个数据采集点一张表”与“超级表”的概念显著提升性能…

引言:为什么选择 TDengine 与 Rust?

TDengine 是一款专为物联网、车联网、工业互联网等时序数据场景优化设计的开源时序数据库,支持高并发写入、高效查询及流式计算,通过“一个数据采集点一张表”与“超级表”的概念显著提升性能。

Rust 作为一门系统级编程语言,近年来在数据库、嵌入式系统、分布式服务等领域迅速崛起,以其内存安全、高性能著称,与 TDengine 的高效特性天然契合,适合构建高可靠、高性能的数据处理系统。

TDengine Rust 连接器的设计与架构

TDengine Rust 连接器的主要目标是提供一个高效、安全且易于使用的接口,让开发者能够通过 Rust 语言与 TDengine 数据库进行高效的交互。连接器的设计充分考虑了 Rust 语言的优势,如内存安全、并发处理和高性能,同时确保与 TDengine 数据库之间的通信可靠且高效。

主要模块间的架构如下图:

解释:

  1. taos-query 模块作为核心,负责定义公共接口和数据结构。

  2. taos-optin 模块和 taos-ws 模块分别实现了这些公共接口,负责原生连接和 WebSocket 连接的业务逻辑实现。

  3. taos 模块封装了 taos-optin 和 taos-ws 模块中的实现,同时将 taos-query 模块所定义的公共接口和数据结构予以暴露。

  4. 最终,用户只需依赖 taos 模块,即可轻松使用整个系统,而无需了解内部复杂的实现细节。

快速入门:从安装到代码开发

1.在 Cargo.toml 中添加以下内容:

[dependencies]
anyhow = "1.0.96"
chrono = "0.4.39"
serde = "1.0.217"
taos = "0.12.3"
tokio = "1.43.0"

2.代码演示,数据写入与查询:

use chrono::{DateTime, Local};
use taos::*;#[tokio::main]
async fn main() -> anyhow::Result<()> {// Establish native connectionlet dsn = "taos://localhost:6030";let taos = TaosBuilder::from_dsn(dsn)?.build().await?;let db = "power";// Prepare the databasetaos.exec_many([format!("DROP DATABASE IF EXISTS {db}"),format!("CREATE DATABASE {db}"),format!("USE {db}"),]).await?;let inserted = taos.exec_many([// Create a super table"CREATE STABLE meters(ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) \TAGS (group_id INT, location varchar(20))",// Create a subtable"CREATE TABLE d0 USING meters TAGS(0, 'Beijing Chaoyang')",// Write one record at a time"INSERT INTO d0 VALUES(now, 10.15, 217, 0.33)",// Write Null values"INSERT INTO d0 VALUES(now, NULL, NULL, NULL)",// Automatically create table on insert"INSERT INTO d1 USING meters TAGS(1, 'Beijing Haidian') VALUES(now, 10.1, 119, 0.32)",// Write multiple records at once"INSERT INTO d1 VALUES(now+1s, 10.22, 120, 0.33) (now+2s, 11.23, 121, 0.34) (now+3s, 12.23, 118, 0.32)",]).await?;assert_eq!(inserted, 6);let mut result = taos.query("SELECT * FROM meters").await?;for field in result.fields() {println!("Get the field: {}", field.name());}println!();// Query option 1, using row stream.let mut rows = result.rows();while let Some(row) = rows.try_next().await? {for (name, value) in row {println!("Get the value of {}: {}", name, value);}println!()}// Query option 2, deserialize using serde.#[derive(Debug, serde::Deserialize)]#[allow(dead_code)]struct Record {// Deserialize timestamp to chrono::DateTime<Local>ts: DateTime<Local>,// Deserialize float to f32current: Option<f32>,// Deserialize int to i32voltage: Option<i32>,// Deserialize float to f32phase: Option<f32>,// Deserialize int to i32group_id: i32,// Deserialize varchar to Stringlocation: String,}let records: Vec<Record> = taos.query("SELECT * FROM meters").await?.deserialize().try_collect().await?;println!("Get records: {:?}", records);Ok(())
}

高级功能与最佳实践

连接池优化:提升高并发性能

频繁创建和销毁数据库连接会带来显著的开销,尤其是在高并发场景(如物联网设备高频上报数据)中。通过连接池复用连接,可减少 TCP 握手、认证等重复操作,提升整体吞吐量。

代码示例:

use taos::*;#[tokio::main]
async fn main() -> anyhow::Result<()> {// Create a connection poollet dsn = "taos://localhost:6030";let pool = TaosBuilder::from_dsn(dsn)?.pool()?;let taos = pool.get().await?;let db = "power";// Prepare the databasetaos.exec_many([format!("DROP DATABASE IF EXISTS {db}"),format!("CREATE DATABASE {db}"),format!("USE {db}"),]).await?;let inserted = taos.exec_many([// Create a super table"CREATE STABLE meters(ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) \TAGS (group_id INT, location varchar(20))",// Create a subtable"CREATE TABLE d0 USING meters TAGS(0, 'Beijing Chaoyang')",// Write one record at a time"INSERT INTO d0 VALUES(now, 10.15, 217, 0.33)",// Write Null values"INSERT INTO d0 VALUES(now, NULL, NULL, NULL)",// Automatically create table on insert"INSERT INTO d1 USING meters TAGS(1, 'Beijing Haidian') VALUES(now, 10.1, 119, 0.32)",// Write multiple records at once"INSERT INTO d1 VALUES(now+1s, 10.22, 120, 0.33) (now+2s, 11.23, 121, 0.34) (now+3s, 12.23, 118, 0.32)",]).await?;assert_eq!(inserted, 6);Ok(())
}

原生连接与 WebSocket 连接

对于原生连接和 WebSocket 连接这两种方式,除了建立连接所使用的 DSN 不同外,其余接口调用没有差异。

代码示例:

use taos::*;#[tokio::main]
async fn main() -> anyhow::Result<()> {// let dsn = "taosws://localhost:6041"; // WebSocket connectionlet dsn = "taos://localhost:6030"; // Native connectionlet _taos = TaosBuilder::from_dsn(dsn)?.build().await?;Ok(())
}

同步接口和异步接口

TDengine Rust 连接器的接口分为同步接口和异步接口。通常情况下,同步接口基于异步接口实现,二者的方法签名,除了异步接口多了 async 关键字外,基本一致。

异步接口的代码示例可查阅第 3 章节,同步接口的代码示例如下:

use taos::sync::*;fn main() -> anyhow::Result<()> {// Establish native connectionlet dsn = "taos://localhost:6030";let taos = TaosBuilder::from_dsn(dsn)?.build()?;let db = "power";// Prepare the databasetaos.exec_many([format!("DROP DATABASE IF EXISTS {db}"),format!("CREATE DATABASE {db}"),format!("USE {db}"),])?;let inserted = taos.exec_many([// Create a super table"CREATE STABLE meters(ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) \TAGS (group_id INT, location varchar(20))",// Create a subtable"CREATE TABLE d0 USING meters TAGS(0, 'Beijing Chaoyang')",// Write one record at a time"INSERT INTO d0 VALUES(now, 10.15, 217, 0.33)",// Write Null values"INSERT INTO d0 VALUES(now, NULL, NULL, NULL)",// Automatically create table on insert"INSERT INTO d1 USING meters TAGS(1, 'Beijing Haidian') VALUES(now, 10.1, 119, 0.32)",// Write multiple records at once"INSERT INTO d1 VALUES(now+1s, 10.22, 120, 0.33) (now+2s, 11.23, 121, 0.34) (now+3s, 12.23, 118, 0.32)",])?;assert_eq!(inserted, 6);Ok(())
}

结语:开源社区的星辰大海

TDengine Rust 连接器的成长史,是一个典型的技术民主化故事——从社区萌芽到官方支持,从边缘工具到核心生态。它证明了两个事实:

  1. 开源协作的效率:在数据库领域,社区贡献者的“需求反哺”比闭门造车更能击中痛点。

  2. Rust 的生态潜力:作为系统级编程语言的 Rust,正在时序数据处理这样的垂直领域开辟新战场。

我们期待你的参与,欢迎提交 PR,一起推动 TDengine Rust 连接器的进步,携手开创更加美好的开源未来!

附录

  1. https://docs.taosdata.com/

  2. https://github.com/taosdata/taos-connector-rust


文章转载自:

http://fZPHnu1Q.mwcqz.cn
http://ft58ZQZE.mwcqz.cn
http://Hnr3SaRw.mwcqz.cn
http://iiDBgLQP.mwcqz.cn
http://jwWKaBIE.mwcqz.cn
http://MDuOqif5.mwcqz.cn
http://Yz9D42Hh.mwcqz.cn
http://67KFxObB.mwcqz.cn
http://fdJd0KgT.mwcqz.cn
http://fsLDuhqK.mwcqz.cn
http://6B3vicTw.mwcqz.cn
http://tHcZy8w7.mwcqz.cn
http://zYu7N6GD.mwcqz.cn
http://6lu8p8l7.mwcqz.cn
http://mXuA9E7x.mwcqz.cn
http://Oa5wRPG0.mwcqz.cn
http://9MRAWuo1.mwcqz.cn
http://URU6fmIW.mwcqz.cn
http://uBZJkkTe.mwcqz.cn
http://LV7rNsdX.mwcqz.cn
http://Ief6wbwu.mwcqz.cn
http://AmABqIPB.mwcqz.cn
http://iJLxU6yu.mwcqz.cn
http://1Ud4bdSA.mwcqz.cn
http://312TnQEE.mwcqz.cn
http://H0xfVD1E.mwcqz.cn
http://TldqJkll.mwcqz.cn
http://B2mfTYw0.mwcqz.cn
http://2AJxYwWh.mwcqz.cn
http://jJyob1I4.mwcqz.cn
http://www.dtcms.com/wzjs/644569.html

相关文章:

  • 太原免费建站沈阳突发事件刚刚
  • 黄冈市建设局网站东莞飞天网站设计公司
  • 广州h5网站制作怎么查网站的备案号
  • 个人网站也要备案吗教育培训手机网站模板下载
  • 长沙律师网站建设网站关键词多长
  • dedecms免费网站模板建设银行什么网站可买手表
  • 网站上删除信息如何做入返晋人员登记网页怎么制作
  • 青岛做网站的好公司一家做运动鞋的网站
  • 对做网站有什么建议网站的发展趋势
  • 猪八戒网站做私活赚钱吗福建seo优化
  • 档案网站建设论文大型网站建设多少钱
  • 内部门户网站建设方案网络服务列表在哪里
  • 有免费的微网站制作吗广州哪里能做英文版核酸
  • 宝应网站建设wordpress 免费主题推荐
  • 郑州网站建设开发公司免费网站模板源码下载
  • wordpress 国产插件北京网站优化什么价格
  • thinkphp企业网站开发成都房产网站建设
  • 网站源码 带后台建设网站的模板
  • 网站开发视频 百度云wordpress可以注册了
  • 个人做网站接装修活哪个网站好成都小程序开发价格
  • 宁波专业网站定制制作服务在虚拟主机上建设多个网站
  • 做视频网站要什么格式网站开发怎么使用维语
  • 上海城乡建设网站证件查询建设网点查询附近
  • 如何做木工雕刻机网站曲阜住房城乡建设局网站
  • 青海媒体网站建设公司stm32做网站服务器
  • 营销型网站建设课程wordpress打赏工具
  • 电子商务网站建设体会那家专门做特卖的网站
  • 网站设计 现在流行的导航方式深圳做网站比较好的公司有哪些
  • 全网网站建设优化装潢公司网站模板
  • 完整网站开发教程网络营销服务管理