自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(154)
  • 收藏
  • 关注

原创 为什么 NFS 不适合作为 TDengine 的数据存储

TDengine 作为时序数据库,通常处理是海量的时序数据,对存储的 I/O 有较高的要求。NFS 是一种分布式文件系统,允许多台计算机通过网络共享文件。综上所述,应避免使用 NFS 作为 TDengine 的数据目录。

2025-03-12 15:51:01 1640

原创 TDengine数据订阅新手入门避坑指南3/3

TDengine 数据订阅,订阅过滤,订阅安全,常见问题

2025-02-25 12:32:55 2383

原创 TDengine部署,选 ext4 还是 XFS?

和 是 Linux 系统中两种常用的文件系统,目前 RHEL 默认采用 文件系统,而 Ubuntu 默认采用 文件系统。为什么两大发行版的选择不同呢?如果要部署 TDengine,应该选择哪个文件系统?Ubuntu 和 RHEL 默认文件系统的不同,大概基于以下两点:ext4:XFS:ext4:XFS: 和 都是非常成熟的文件系统,但从稳定性和功能性来看,任何一种都能满足 TDengine 的部署要求。 但是从上面的介绍中,我们可以看出两个文件系统的在不同场景下性能是存在差异的。为对比不同文件系统对

2025-02-24 13:38:15 2520

原创 TDengine数据订阅新手入门避坑指南2/3

TDengine订阅与实践,创建和管理订阅,数据发布和消费。

2025-02-24 10:16:49 2718

原创 TDengine数据订阅新手入门避坑指南1/3

在数据驱动的时代,实时获取和处理数据变得至关重要。传统的数据库查询方式往往无法满足实时性要求,而数据发布/订阅模式 (Pub/Sub) 应运而生。负责产生和发布数据到特定的主题 (Topic)。负责接收发布者的数据,并根据订阅关系将数据传递给相应的订阅者。订阅感兴趣的主题,并从代理接收相关数据。在分布式系统中,消息队列是一种常用的异步通信机制,用于解耦系统组件、缓冲数据流量和提高系统可靠性。分布式流处理平台,具有高吞吐量、低延迟和高可扩展性等特点。

2025-02-24 10:12:50 2697

原创 TDengine Invalid data format 问题定位

Invalid data format 看语义是数据类型不符,通常这个报错出现在使用行协议写入时。如果是批量数据写入,想定位是哪条语句的问题,需要查看客户端日志。

2024-08-08 10:49:31 2281

原创 最新Wireshark查看包中gzip内容

虽然是很简单的事情,但是网上查到的查看gzip内容的方法基本都是保存成zip文件,然后进行二进制处理。其实现在最新版本的Wireshark已经支持获取gzip内容了。选中HTTP协议,右键选择[追踪流]->[HTTP Stream]在弹出窗口中,已经可以看到gzip中内容被提取出来了。

2024-07-10 10:01:08 2797

原创 TDengine防火墙配置

TDengine 部署时建议禁用防火墙,对于有安全要求必须启用防火墙的的场景,可以只开放 TDengine 相关端口。

2024-06-13 11:24:10 3434 1

原创 TDengine高可用架构之TDengine+Keepalived

之前在《》提到过,TDengine通过多副本和多节点能够保证数据库集群的高可用。单对于应用端来说,如果使用原生连接方式(taosc)还好,当一个节点下线,应用不会受到影响;但如果使用了Restful/Websocket连接方式,而前端又没有部署负载均衡,那么必须调整应用程序,才能继续访问数据库。对此我们可以采用TDengine+Keepalived 架构,使用VIP保证在没有负载均衡的情况下数据库集群可用性。

2024-04-24 11:12:26 3392

原创 TDengine高可用探讨

高可用通常是指在单个组件出现故障时,整个系统仍可以对外提供服务。因此高可用主要还是针对一个系统而言,而非单独的一个组件(这点非常重要)。我们通常用一段时间内系统可用时间占比作为高可用的衡量指标。计算方式如下:MTBF(Mean Time Between Failure),系统平均正常运行时间MTTR(Mean Time to Repair),系统平均恢复时间可用性的计算公式: AVAILABILITY = MTBF / ( MTBF + MTTR ) × 100%

2024-04-23 09:43:14 3946

原创 TDengine taosAdapter启用HTTPS

HTTPS (Hypertext Transfer Protocol Secure ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。

2024-04-12 14:22:25 4148 2

原创 TDengine too many open files

too many open files 是比较常见的报错,尤其使用TDengine 3.0 集群时,大概率会遇到。这个报错很简单,但要想顺利解决,却涉及到很多知识点。

2024-04-09 11:45:04 5027

原创 使用bbcp代替rsync进行数据同步

在运维中,我们通常使用rsync来进行文件的备份和传输,向较于scp、ftp等工具,rsync可以实现差异同步和断点续传(之前的文章提过但rsync也存在局限性,在上篇文章中提到过,在万兆网络环境下scp和rsync的传输速度都不太理想,及时修改加密方式,性能提升也是有限。文章中提到bbcp的传输速度远高于rsync,那么bbcp是否能够替代rsync来实现差异同步和断点续传呢?答案是肯定的。

2024-04-09 10:38:05 4627

原创 万兆网络数据传输-scp加速

在万兆甚至更高的网络带宽场景下scp的传输效率并不如人意。毕竟scp是旧时代的产物,那时千兆网络都很罕见。以下通过修改压缩方式的方法提升数据的传输速度。同时也采用ncbbcp和rsync进行了对比测试。

2024-01-30 11:17:41 4727

原创 TDengine统计数据库占用空间

TDengine 目前只提供统计超级表占用空间的工具: - 2.x 版本使用 `select _block_dist() from STABLE_NAME` - 3.x 版本使用 `show table distributed STABLE_NAME`但以上的统计结果并不准确。如果想统计 DB 使用的空间,只能通过统计所属 vnode 占用空间进行统计。以下脚本可以实现自动统计所在节点所有数据库的大小。

2023-12-04 13:03:26 6930 4

原创 [和ChatGPT学编程]Python Requests 简介

requests 是一个流行的 Python 库,用于发送 HTTP 请求。它提供了简洁而友好的 API,使得发送 HTTP 请求变得简单而直观。requests 具有许多强大的功能,适用于各种 HTTP 请求场景,包括 GET、POST、PUT、DELETE 等。

2023-11-20 13:00:41 6457

原创 [和ChatGPT学编程]Python并发有多复杂

全局解释器锁(Global Interpreter Lock,简称 GIL)是 CPython 解释器中的一个特性,它对 Python 的多线程执行产生了影响。CPython 是 Python 的标准解释器,它使用 GIL 来确保在解释器级别只有一个线程可以执行 Python 字节码。GIL 的存在:GIL 是 CPython 解释器的一个设计决策,旨在简化内存管理和确保线程安全。它导致同一时刻只有一个线程能够执行 Python 字节码。影响多线程并发性:GIL 的存在影响了多线程程序的并发性能。

2023-11-20 09:52:03 6095

原创 [AI]ChatGPT4 与 ChatGPT3.5 区别有多大

ChatGPT 3.5 注册已经不需要手机了,直接邮箱认证就可以,这可真算是好消息,坏消息是 ChatGPT 4 还是要收费。那么 GPT-3.5 与 GPT-4 区别有多大呢,下面简单测试一下。以从 TDengine 订阅数据为例,TDengine 算是不太小众的数据库,如果连这个都能搞定,说明GPT 还是蛮厉害的。

2023-11-19 22:15:11 7347

原创 [AI]Python中的Restful

在当今数字化的时代,网络应用的开发变得越来越普遍,而RESTful(Representational State Transfer)作为一种设计风格和通信协议,为构建灵活、可扩展的网络应用提供了一种优雅的方式。本文将深入介绍RESTful的概念、原则以及它在现代应用开发中的重要性。

2023-11-19 21:29:47 6094

原创 TDengine Restful Authorization 自定义Token

Restful 接口是 TDengine 最常用的接口,仅次于 JDBC。TDengine 支持 HTTP 和 HTTPS,但通常情况下,大家不想搞证书,又在内网环境中,采用 HTTP 方式比较多。但 HTTP 是明文传输,只要抓个包就知道账号密码了。因此需要对用户名和密码进行加密。

2023-11-17 21:36:41 6396

原创 [Python学习笔记]multiprocess 多进程间变量共享

在章节中提到了进行 TDengine 数据迁移的 Python脚本。脚本支持多线程或多进程模式。但是使用多进程模式时,会出现问题,如下:脚本虽然正常运行了,但是输出结构中没有打印出进度信息。造成这个问题的原因在于多进程模式变量的共享需要特殊处理。具体处理方法为在调用先声明共享变量,然后在进程中使用。再次运行程序,已经能正常输出结构了。

2023-11-17 15:25:59 6222

原创 [Python学习笔记]Python 性能分析

本次使用 Python 的性能分析工具对脚本进行分析,找到优化点。首先介绍两个工具 cProfile 和 snakeviz 对程序性能进行定性分析。cProfile 是 Python 自带的性能分析模块,不需要额外安装,可以统计程序中函数的调用次数和时间。以上命令会运行,对每个函数的调用进行统计,并记录到 log.profile 文件中,方便分析。SnakeViz是一个Python模块,用于可视化Python程序的性能分析结果。

2023-11-16 15:39:38 7360

原创 [Python学习笔记]Requests性能优化之Session

Requests 可是说是 Python 中最常用的库了。用法也非常简单,但是想真正的用的好并不容易。下面介绍一个提升性能小技巧:使用 session 会话功能将性能提升3倍。会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能。所以如果你向同一主机发送多个请求,底层的 TCP 连接将会被重用,从而带来显著的性能提升。

2023-11-16 12:14:48 7072

原创 TDengine 跨版本迁移实战

TDengine 3.0 已经退出了近一年,目前已经到了 3.2 版本。很遗憾的是 2.x 和 3.x 之间的数据文件不兼容。如果向从 2.x 升级到 3.x 只能选择数据迁移的方式。taosxtaosdump以下演示使用 Python 脚本跨版本迁移数据库,从 3.1 降级迁移到 2.6。

2023-11-15 13:14:25 7799 2

原创 #[量化投资-学习笔记018]Python+TDengine从零开始搭建量化分析平台-正态分布与收益率

正态分布(Normal Distribution)又叫高斯分布、常态分布。通常用来描述随机变量的概率分布。自然界的数据分布通常是符合正态分布规律的,比如说人的身高、体重。但是非自然界数据就不一定了。尤其是经过人为加工过的数据。金融领域大量使用正态分布来计算收益率和风险,虽然因为金融数据厚尾性而不断被人诟病,但是确实也没啥其他的统计方法。在上一章节,已经将回测的结果存入了数据库。本章节将对回测结果进行进一步分析。

2023-11-15 11:09:20 6355

原创 [量化投资-学习笔记017]Python+TDengine从零开始搭建量化分析平台-异常处理

一个完成的程序一定少不了对异常的处理,以及错误日志的输出。在之前章节的程序中对这两部分没有进行说明,以下用两个单独的章节进行介绍。

2023-11-14 08:40:07 6827

原创 [量化投资-学习笔记016]Python+TDengine从零开始搭建量化分析平台-日志输出

一个完成的程序一定少不了对异常的处理,以及错误日志的输出。在之前章节的程序中对这两部分没有进行说明,以下用两个单独的章节进行介绍。

2023-11-14 08:09:07 6425 1

原创 [量化投资-学习笔记014]Python+TDengine从零开始搭建量化分析平台-Python知识点汇总

以下内容总结了之前章节涉及到的 Python 知识点,看过之前的章节同学,就不用打开了。

2023-11-13 13:52:16 6467

原创 [量化投资-学习笔记015]Python+TDengine从零开始搭建量化分析平台-量化知识点汇总

之前的章节介绍了多个技术分析指标(MA、EMA、MACD、CCI、ATR、KDJ),以下进行一个简单的总结。看过之前章节的同学就可以不用打开了。

2023-11-13 13:21:09 6318

原创 [量化投资-学习笔记013]Python+TDengine从零开始搭建量化分析平台-策略回测进阶

在上一章节《策略回测》中采用轮询的方式对整个股票池进行了回测。虽然功能已经实现,但是效率确实不高。而且生成的结果也不方便统计。本次在上一章的基础上进行修改,实现两方面的改进:创建子表根据股票代码创建子表,因为之前已经有类似的表名称,可以借用一部分。导出表名和标签,并构建建表语句。导入建表语句函数简介多进程/线程处理结果写入TDengine程序主体MACD交易策略回测程序说明该程序用于进行MACD交易策略的回测。给定一组股票数据,程序会根据MACD指标的金叉和死叉信号进行买入和卖出操作

2023-11-12 14:33:52 6798

原创 [量化投资-学习笔记012]Python+TDengine从零开始搭建量化分析平台-策略回测

上一章节中,对平安银行这只股票,按照金死叉策略进行了回测。但通常我们的股票池中有许多股票,每完成一个交易策略都需要对整个股票池进行回测。下面使用简单的轮询,对整个股票池进行回测。以下是部分股票的收益展示。

2023-11-12 10:52:40 6607

原创 [量化投资-学习笔记011]Python+TDengine从零开始搭建量化分析平台-MACD金死叉策略回测

在上一章节中结束了如何根据 MACD 金死叉计算交易信号。本次将根据交易信号,模拟交易。更加历史数据对MACD金死叉交易策略进行回测,看一下收益如何。

2023-11-11 18:45:20 12577

原创 [量化投资-学习笔记010]Python+TDengine从零开始搭建量化分析平台-MACD金死叉

本次简单介绍 MACD 最常用的用法:金叉和死叉。金叉和死叉是MACD指标中的两个重要信号。金叉是指 MACD 快线(DIF)上穿慢线(DEA)的情况。死叉则是指 MACD 快线下穿慢线的情况。理论上,金叉代表看涨信号,而死叉则代表看跌信号。如果用程序实现就比较简单,就是两个变量的大小变换。macd_line从结果来看,胜率还不错。

2023-11-11 17:57:16 12008

原创 TDengine数据迁移之数据对比

数据完整性和一致性校验是迁移数据后的必要步骤,TDengine 数据迁移也是如此。但通常TDengine存储的都是海量数据,动辄几百亿条数据,如果像手工对比差异,工作量是非常巨大的。为保证兼容2.x和3.x,数据库查询采用 Restful 方式。以下脚本实现了对两个数据库记录数的对比。以上代码是 AI 修改过的,不保证能够执行成功。我将调试好的代码也上传了。

2023-11-10 18:29:35 6632

原创 [量化投资-学习笔记009]Python+TDengine从零开始搭建量化分析平台-KDJ

技术分析有点像烹饪,收盘价、最值、成交量等是食材;均值,移动平均,方差等是烹饪方法。随意组合一下就是一个技术指标。KDJ又称随机指标(随机这个名字起的很好)。KDJ的计算依据是最高价、最低价和收盘价。K、D、J 是图中的三条线。要计算 KDJ,需要先计算价差 RSV,RSV=((收盘价-最低价)/(最高价-收盘价))*1003 - D看到这个有没有有点眼熟,先求差值,然后做移动平均,然后再二次平均,最后再取差值。是哪个指标呢??答案揭晓:MACD。

2023-11-10 08:43:32 6370

原创 Bcc-tools 中文件系统相关工具介绍

本次详细的介绍一下和文件系统相关的一些实用工具,以下工具可以快速的帮我们定位文件系统相关问题,比如:- 当前系统在读写哪些文件?- 哪些文件读写耗时比较长?- 哪些进程在频繁创建删除文件?

2023-11-09 10:41:11 6793

原创 [量化投资-学习笔记008]Python+TDengine从零开始搭建量化分析平台-CCI和ATR

将这两个指标放在一起,一方面是因为这两个指标都属于摆动指数,可以反应市场的活跃度。另一方面是因为CCI和ATR与之前提到的EMAMACD布林带的三个指标的计算基础不同。之前的三个指标都是以收盘价作为计算基础,而CCI和ATR是以收盘价、最高价、最低价三个价格最为计算基础。下面分别进行介绍。

2023-11-09 09:27:32 12643

原创 [量化投资-学习笔记007]Python+TDengine从零开始搭建量化分析平台-布林带

布林带(Bollinger Bands)也称为布林通道、保力加通道,是由约翰·布林格(John Bollinger)发明的技术分析指标。布林通道通常被用来确认资产价格波动范围。布林通道是由三条平滑的曲线组成的趋势线图表,中线为均线,上/下线为中线±2个标准差。在上一个章节没有自己造轮子,直接使用 Pandas 函数计算 MACD,非常方便的实现了计算和绘图。本次使用更快捷的方式,直接上飞机:使用 AI 来写代码。我在上篇文章介绍了如何使用 DevChat 编写程序。

2023-11-08 16:10:05 7656

原创 利用AI快速跨过新手区:用DevChat编写Python程序-CSV导入TDengine

还在用百度搜索编程吗?直接上 AI,帮助小白快速跨过新手区。以下用一个物联网最常见的场景做示例演示如何利用 AI 快速编程。ChatGPT4 是目前最火的 AI 了,但是国内却用不了。不过现在新出的 DevChat 可以让大家尝鲜一番。以下介绍来自Bing AI 聊天的介绍:DevChat是一个开源平台,旨在帮助开发人员更有效地将人工智能集成到代码生成和文档编制中。它提供了一种非常实用和有效的方式,让开发人员与大型语言模型(LLM)进行交互和协作。

2023-11-08 12:44:25 22908

原创 Linux小技巧之文件差异对比

提起文件差异对比,最常想到的是diff,如果内容少还好,内容多的话就不太友好,其实 Linux 下还有一个小工具 comm 能够更加方便的对比两个文件。

2023-11-06 15:39:01 6916

TDengine数据迁移Python脚本

## 数据传输工具 通过Restful 表到表传输数据。 > 支持同步整个数据库,或从文件读取表。 > 支持多条拼SQL (配置 recodeOfPerSQL)。 > 支持导入导出表异构,但表名必须相同。 > 支持指定数据起始时间 > 兼容 python2 和 python3 两个版本 > 支持多线程和多进程 > 如果子表不存在会自动创建子表,如果超级表不存在会直接报错。 > 使用datac_init.py 会同步创建所有超级表和子表,但不会创建数据库。 ## 参数说明 -c filename 指定配置文件,默认datac.cfg -p 采用多进程模式,默认多线程 -f filename 表清单,默认同步所有表。 ## 示例 ### 从文件读取表清单 ```python python datac.py -f tblist ``` ### 同步整个数据库(如果未指定表文件,则同步整个数据库) ```shell python datac.py ``` ### 多进程模式(默认为多线程) ```shell python datac.py

2023-11-15

TDengine数据库差异对比Python脚本

TDengine迁移时需要对比源数据库和目标库的数据差异,对于海量数据,对比起来非常困难。 脚本实现了对一段时间内所有表记录数进行对比,并输出结果。 支持TD2.x 和 TD3.x 跨版本对比。 使用方法: python3 datacompare.py 2023-01-01T00:00:00Z 2023-10-01T00:00:00Z 需要同目录下存在stblist文件,文件中为超级表名称。

2023-11-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除