首页 > 编程语言 >涛思数据 TDengine 征稿— 利用python脚本做TDengine性能测试

涛思数据 TDengine 征稿— 利用python脚本做TDengine性能测试

时间:2024-04-20 09:03:24浏览次数:19  
标签:TDengine python 性能 time sql 安装 征稿

【本文正在参与 “拥抱开源 | 涛思数据 TDengine有奖征稿】https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857c

设备上传的数据具有很明显的物联网特点,通常是时序性的,按时间先后顺序上报,而且写入后,几乎不会修改,主要是查询和统计。针对这些特点,时序数据库TDengine 将数据库、消息队列、缓存、流式计算等功能融合一起,在大幅提高性能的同时,降低平台开发维护的复杂度和成本。

  • 实现方案

  • 服务端安装

官网提供了三种格式的安装包其中deb支持ubuntu系统,rpm支持centos系统,tar.gz包两种系统都支持。我们常用centOS,下载tar.gz包。

1、解压

tar -xzvf /home/tdengine/TDengine-server-1.6.5.5-Linux-x64.tar.gz

2、安装

解压文件后,进入子目录,执行其中的install.sh安装脚本:

sudo ./install.sh

3、启动服务

设置为自启动 :

systemctl start taosd

设置成功后,输入taos,测试服务是否正常启动

  • 客户端安装

研发使用环境通常是windows,在官网上下载对应版本,双击安装即可。

安装完成后,默认会生成C:\Tdengine目录,在此目录下运行taos命令,连接服务端。

建立数据库,并使用

create database td_test

创建表格,

  • python****库安装

在C:\TDengine\connector\python\windows目录下安装第三方连接库

pip install python3/

  • **python **连接TDengine

引入taos包,与pg的连接方式类似,在connect中传入服务端的ip,用户名,密码,数据库名。

ip="10.19.133.18"

pwd="taosdata"

db="tc"

user="root"

# 连接taos数据库

conn = taos.connect(host=ip, user=user, password=pwd, database='td_test')

cursor = conn.cursor()```



+ 


+  **TDengine****插入性能**

采用随机生成经纬度,uuid和时间戳累加的方式构造10000条假数据,插入TDengine,测试其插入性能代码如下:

```python
def forInsert():

    startTime = time.time()

    start_time = datetime.datetime(2019, 7, 1)

    for i in range(1,10001):

        time_interval = datetime.timedelta(seconds=60)

        latitude = random.randrange(11879804, 11879904)

        longitude = random.randrange(43278291, 43278491)

        id = str(uuid.uuid4())

        sql = '''INSERT INTO t_gps_info_h

            (sampling_time,device_index_code, longitude, latitude)VALUES('%s', '%s', '%d', '%d')'''

        try:

            cursor.execute(sql % (start_time, id, longitude, latitude))

            start_time += time_interval

        except Exception as err:

            cursor.close

            raise(err)

        print(i,start_time, id, longitude, latitude)

    endTime = time.time()

    print('总用时:' + str(endTime - startTime))

    cursor.close```


运行后得到结果如下:


![](https://mutouzuo.oss-cn-hangzhou.aliyuncs.com/my/20200822113537579.png)


插入10000条数据,用时8秒左右,大概是postgre的4倍左右,未达到其官方的10倍以上,可能还需要后期具体优化。


+ 


+  **TDengine****查询性能**

通过sql语句查询其中的四个字段,测试其查询性能,代码如下:

```python
def select():

    startTime = time.time()

    # sql语句

    sql = "SELECT sampling_time,device_index_code, longitude, latitude FROM t_gps_info_h"



    # read_sql 方法返回的数据类型是DataFrame

    dataframe = pd.read_sql(sql, con=conn)

    endTime = time.time()

    print(dataframe)

    print('查询条数:' + str(dataframe.size))

    print('总用时:' + str(endTime - startTime))```


运行后,得到测试结果,如下图所示:


![](https://mutouzuo.oss-cn-hangzhou.aliyuncs.com/my/20200822113605538.png)


查询条数近4万条,用时0.15s,性能是其插入的200倍。


+ 结束语

1、 centos上第一次安装服务端后,如果出现dberror的错误,客户端也无法连接,则服务器需要重启。

2、语言与sql类似,只是数据类型比较有限,第一列必须是时间戳,并且会自动设为主键。

3、TDengine最大的优势就是性能,但是限制条件比较多,后期还需要在相同条件下与postgre进行对比。

4、本文仅对TDengine性能进行测试,其内置消息队列和预统计的功能还未涉及。



【本文正在参与 “拥抱开源 | 涛思数据 TDengine有奖征稿】[https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857c](https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857c)

标签:TDengine,python,性能,time,sql,安装,征稿
From: https://www.cnblogs.com/bigleft/p/18147148

相关文章

  • 【开源】使用Python+Flask+Mysql快速开发一个用户增删改查系统
    项目演示项目本身很简单,增删改查是几乎所有系统的骨架。正所谓万丈高楼平地起,学会了增删改查,航母就指日可待了:),光速入门,直接看演示图:项目地址https://github.com/mudfish/python-flask-user-crudFlask框架介绍说白了就是一个Web框架,能够让你快速开发出Pythonweb应用。简单易......
  • 使用Docker部署TDengine集群
    TDengine集群部署TDengine是一款高性能、分布式、支持SQL的时序数据库(Database)。1.集群管理TDengine支持集群,提供水平扩展的能力。如果需要获得更高的处理能力,只需要多增加节点即可。TDengine采用虚拟节点技术,将一个节点虚拟化为多个虚拟节点,以实现负载均衡。同时,TD......
  • python --二分法学习
    deffound_number(need_vaule,l):print(l)mid_index=len(l)//2mid_value=l[mid_index]print("mid_valueis%s"%(mid_value))ifmid_value>need_vaule:l=l[:mid_index]print('needtofind1')......
  • springboot java调用flask python写的
    服务a用flask,服务b用的springboot,服务a写的接口,用python很容易就调通了,java来调,坑有点多1、url最后的斜杠必须两边对应上,否则flask会先308,而且contenttype[text/html;charset=utf-8],连对应的HttpMessageConverter都没有org.springframework.web.client.RestClientException:......
  • python 正则表达式匹配
    re模块: 案例:     python的贪婪和非贪婪 r的作用: ......
  • python 修改jenkins的配置文件
    python有jenkins获取配置文件的api,也有修改配置文件的api,下面介绍下如果修改jenkinsjob的配置文件内容:importreimporttimeimportjenkinsjenkins_url="http://xxx.com/jenkins"username="zhangsan"token="1.......de"jenkins=jenkins.Jenkins(jenkins_url,us......
  • python多继承构造方法参数报错
    各路大神,今天下午在学习Python3.12多继承的时候,有个构造方法一直报错,希望大家能帮忙瞅瞅,求求了~~~~~~~代码如下:点击查看代码classRectangle:def__init__(self,width,height):self.width=widthself.height=heightdefarea(self):......
  • python minio
    fromminioimportMiniofile_name='3e09ca66d9444906935b0171e26891f1.mp4'file_path=r'E:\集成资料\视频素材'barrel="testdata"defupload_file():#创建minio客户端client=Minio(endpoint="xxx.xxx.xxx.xxx:xxxxx"......
  • Effective Python:第8条 用zip函数同时遍历两个迭代器
    用Python内置的zip函数来实现。这个函数能把两个或更多的iterator封装成惰性生成器(lazygenerator)。每次循环时,它会分别从这些迭代器里获取各自的下一个元素,并把这些值放在一个元组里面。names=["Cecilia","Lise","Marie"]counts=[len(n)forninnames]max_count=......
  • python tornado简易ws聊天室测试
    #-*-coding:utf-8-*-from__future__importunicode_literals,print_functionfromdatetimeimportdatetimeimporttornadofromtornado.optionsimportdefine,optionsfromtornado.websocketimportWebSocketHandler#设置服务器端口define("port",de......