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

开源时序数据库学习

计划学习使用QuestDB解决大数据日志存储场景。以下是常见引擎比较

比较项目

InfluxDB

TimescaleDB

OpenTSDB

QuestDB

数据模型

Key-Value

Relational

Key-Value

Relational

存储引擎

自主开发的TSI

PostgreSQL扩展程序

Apache HBase

自主开发

查询语言

InfluxQL、Flux

SQL

OpenTSDB Query Language

SQL

客户端库

多种语言的客户端库

多种语言的客户端库

Java客户端库、其他语言的客户端库

多种语言的客户端库

可扩展性

主从复制

支持

支持

支持

支持

高可用性

支持

支持

支持

支持

社区支持

一般

一般

开发语言

Go

C、C++、Python

Java

Java、C++

最大数据存储量

单机版本有存储上限,企业版和云服务没有存储上限

依赖于使用的 PostgreSQL 版本,企业版和云服务没有存储上限

无存储上限

无存储上限

响应速度

较快,可达毫秒级

较快,可达毫秒级

较快,可达毫秒级

非常快,可达微秒级

总体来说,这四个时序数据库都支持主从复制、高可用性和可扩展性,可以与C#结合使用,并提供多种客户端库。InfluxDB的数据模型是Key-Value,支持InfluxQL和Flux查询语言;TimescaleDB的数据模型是关系型,支持SQL查询语言;OpenTSDB的数据模型是Key-Value,支持OpenTSDB Query Language查询语言;QuestDB的数据模型是关系型,支持SQL查询语言。此外,InfluxDB和TimescaleDB都有较为活跃的社区支持,OpenTSDB和QuestDB的社区支持相对一般。QuestDB是一个相对新的时序数据库,它使用自主开发的存储引擎,支持SQL查询语言,提供多种语言的客户端库,并具有较高的可扩展性和高可用性。

这四个开源时序数据库都是免费的。

InfluxDB

部署步骤

  1. 下载InfluxDB二进制文件并解压缩。

  2. 配置InfluxDB,包括设置管理员账户、创建数据库和设置保留策略等。

  3. 启动InfluxDB服务,可以使用命令行启动或作为后台服务启动。

  4. 连接InfluxDB,使用InfluxDB的API或者第三方库连接InfluxDB进行数据的读写。

C#中的灵活运用

在C#中,可以使用InfluxDB的API或第三方库进行数据的读写,常用的第三方库包括InfluxData.Net和InfluxDB.Client。这些库支持对InfluxDB进行CRUD操作、执行查询、写入数据点等操作。此外,也可以使用InfluxQL查询语言进行数据查询和分析。

例如,在C#中使用InfluxData.Net库进行数据的读写,可以按照以下步骤进行:

  1. 在Visual Studio中创建一个新的C#项目,并在NuGet中添加InfluxData.Net包。

  2. 在代码中创建InfluxDB客户端实例并连接到InfluxDB。

  3. 使用InfluxData.Net库提供的方法执行查询、写入数据点等操作。

以下是一个使用InfluxData.Net库读取数据的示例代码:

csharp

using InfluxData.Net.InfluxDb; using InfluxData.Net.InfluxDb.Models; var influxDbClient = new InfluxDbClient("http://localhost:8086", "myusername", "mypassword"); var query = "SELECT * FROM mymeasurement WHERE time > now() - 1h"; var result = await influxDbClient.Client.QueryAsync(query, "mydatabase"); foreach (var serie in result) { Console.WriteLine(serie.Name); foreach (var point in serie.Values) { Console.WriteLine($"{point[0]}: {point[1]}"); } }

QuestDB

部署步骤

  1. 下载QuestDB二进制文件并解压缩。

  2. 启动QuestDB服务,可以使用命令行启动或作为后台服务启动。

  3. 连接QuestDB,使用QuestDB的API或者第三方库连接QuestDB进行数据的读写。

C#中的灵活运用

在C#中,可以使用QuestDB的API或第三方库进行数据的读写,常用的第三方库包括QuestDB.Client。这些库支持对QuestDB进行CRUD操作、执行查询、写入数据等操作。此外,也可以使用SQL查询语言进行数据查询和分析。

例如,在C#中使用QuestDB.Client库进行数据的读写,可以按照以下步骤进行:

  1. 在Visual Studio中创建一个新的C#项目,并在NuGet中添加QuestDB.Client包。

  2. 在代码中创建QuestDB客户端实例并连接到QuestDB。

  3. 使用QuestDB.Client库提供的方法执行查询、写入数据等操作。

csharp

using QuestDB.Client; using QuestDB.Client.Models; var connectionString = new ConnectionStringBuilder() .WithHost("localhost") .WithPort(9000) .WithUser("myusername") .WithPassword("mypassword") .Build(); using var connection = new QuestDbConnection(connectionString); await connection.OpenAsync(); using var command = connection.CreateCommand(); command.CommandText = "SELECT * FROM mytable WHERE timestamp > now() - 1h"; using var reader = await command.ExecuteReaderAsync(); while (await reader.ReadAsync()) { var id = reader.GetFieldValue<int>("id"); var timestamp = reader.GetFieldValue<DateTime>("timestamp"); var value = reader.GetFieldValue<double>("value"); Console.WriteLine($"id: {id}, timestamp: {timestamp}, value: {value}"); }

相关文章:

开源时序数据库学习

计划学习使用QuestDB解决大数据日志存储场景。以下是常见引擎比较 比较项目 InfluxDB TimescaleDB OpenTSDB QuestDB 数据模型 Key-Value Relational Key-Value Relational 存储引擎 自主开发的TSI PostgreSQL扩展程序 Apache HBase 自主开发 查询语言 InfluxQ…...

字节测试工程师悄悄告诉我的软件测试、测试开发常用的测试策略与测试手段

目录 前言 测试策略的关注重点 测试策略主要内容 总体测试策略 初级版本测试策略 跟踪测试执行 版本质量评估 后续版本测试策略 发布质量评估 测试手段 前言 测试策略是指在特定环境约束之下&#xff0c;描述软件开发周期中关于测试原则、方法、方式的纲要&#xff…...

我常用的shell 进制转换工具

一、进制的一些基础知识 1. 二进制&#xff08;binary&#xff09; 二进制的取值是0和1; 前缀是 0b 2. 八进制&#xff08;Octal&#xff09; 八进制的取值是0-7&#xff1b;前缀是 O 3. 十进制&#xff08;decimal&#xff09; 十进制的取值是0-9&#xff1b;没有前缀 …...

手写vue(二)响应式实现

名词解释&#xff1a;vm&#xff1a;指Vue实例一、目标效果vue定义&#xff08;1&#xff09;新建vm时&#xff0c;可以通过一个data对象&#xff0c;或者data函数&#xff0c;其属性可以通过vm直接访问&#xff0c;而data对象可以通过vm._data获取&#xff08;2&#xff09;修…...

mysql数据库常问面试题

1、NOW()和CURRENT_DATE()有什么区别&#xff1f; NOW()命令用于显示当前年份&#xff0c;月份&#xff0c;日期&#xff0c;小时&#xff0c;分钟和秒。 CURRENT_DATE()仅显示当前年份&#xff0c;月份和日期。 2、CHAR和VARCHAR的区别&#xff1f; &#xff08;1&#xff09…...

AI风暴 :文心一言 VS GPT-4

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 文心一言 VS GPT-4 文心一言&#xff1a;知识增强大语言模型百度全新一代知识增强大语言模型&#xff0c;文心大模型家族的新成员&#xff0c;能够与人对话互动&#…...

VR全景城市,用720全景树立城市形象,打造3D可视化智慧城市

随着城市化进程的加速&#xff0c;城市之间的竞争也日益激烈。城市管理者们需要寻求新的方式来提升城市的品牌形象和吸引力。在这个过程中&#xff0c;VR全景营销为城市提供了一种全新的营销手段&#xff0c;可以帮助提升城市的价值和吸引力。一、城市宣传新方式VR全景营销是一…...

javaweb窗口服务人员分析评价系统ssh

A&#xff09;后台管理员模块&#xff1a;通过该功能模块&#xff0c;管理员可以修改自己的密码&#xff0c;并对管理员进行添加和删除操作。 B&#xff09;注册用户模块&#xff1a;通过该功能模块&#xff0c;管理员可以查看注册用户的基本信息&#xff0c;对存在问题的用户进…...

树莓派Pico W无线开发板UDP协议MicroPython网络编程实践

树莓派Pico W无线开发板&#xff08;简称Pico W&#xff09;是树莓派基金会于2022年6月底推出的搭载无线通信芯片的树莓派Pico开发板。本文在介绍树莓派Pico W无线开发板接口信号和TCP/IP和UDP通信协议基础上&#xff0c;给出Pico W无线开发板的UDP协议MicroPython网络编程实例…...

跨域解决方案

跨域解决方案 1.跨域基本介绍 文档&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS 跨域问题是什么&#xff1f; 一句话&#xff1a;跨域指的是浏览器不能执行其他网站的脚本&#xff0c;它是由浏览器的同源策略造成的&#xff0c;是浏览器对 javascr…...

springboot的统一处理

在处理网络请求时&#xff0c;有一部分功能是需要抽出来统一处理的&#xff0c;与业务隔开。 登录校验 可以利用spring mvc的拦截器Interceptor&#xff0c;实现HandlerInterceptor接口即可。实现该接口后&#xff0c;会在把请求发给Controller之前进行拦截处理。 拦截器的实…...

C/C++每日一练(20230319)

目录 1. 反转链表 II &#x1f31f;&#x1f31f; 2. 解码方法 &#x1f31f;&#x1f31f; 3. 擅长编码的小k &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 …...

GitHub 上有些什么好玩的项目?

前言 各个领域模块的都整理了一下&#xff0c;包含游戏、一些沙雕的工具、实用正经的工具以及一些相关的电商项目&#xff0c;希望他们可以给你学习的路上增加几分的乐趣&#xff0c;我们直接进入正题~ 游戏 1.吃豆人 一款经典的游戏开发案例&#xff0c;包括地图绘制、玩家控…...

蓝桥杯刷题第十二天

问题描述给定一个正整数 n &#xff0c;请问 n 的十进制表示中末尾总共有几个 0 &#xff1f;输入格式输入一行包含一个正整数 n。输出格式输出一个整数&#xff0c;表示答案。评测用例规模与约定对于所有评测用例&#xff0c;1 < n < 1000000000。运行限制最大运行时间&…...

开发也可以很快乐,让VSCode和CodeGPT带给你幸福感

CodeGPT 是一款 Visual Studio Code 扩展&#xff0c;可以通过官方的 OpenAI API 使用 GPT-3 (预训练生成式转换器) 模型&#xff0c;在多种编程语言中生成、解释、重构和文档化代码片段。CodeGPT 可用于各种任务&#xff0c;例如代码自动完成、生成和格式化。它还可以集成到代…...

【Linux】基本指令介绍

前言从今天开始&#xff0c;我们一起来学习Linux的相关知识&#xff0c;今天先来介绍怎么登录Linux&#xff0c;并且介绍一些Linux的基本指令。使用 XShell 远程登录 Linux很多同学的 Linux 启动进入图形化的桌面. 这个东西大家以后就可以忘记了. 以后的工作中 没有机会 使用图…...

JQuery介绍

文章目录一. JQuery介绍二. JQuery使用三. JQuery选择器四. JQuery选择集过滤五.JQuery选择集转移六. JQuery获取和操作标签内容七. JQuery获取和设置元素属性八. JQuery事件九.JQuery事件代理- 事件冒泡- 事件绑定的问题- 事件代理一. JQuery介绍 定义: jquery是JS的一个函数…...

Selenium基础篇之八大元素定位方式

文章目录前言一、如何进行元素定位&#xff1f;1.右击元素-检查2.F12-选择工具点击元素3.借助selenium IDE二、八大元素定位方式1.ID1.1 方法1.2 举例1.3 代码1.4 截图2.NAME2.1 方法2.2 举例2.3 代码2.4 截图3.CLASS_NAME3.1 方法3.2 举例3.3 代码3.4 截图4.TAG_NAME4.1 方法4…...

C语言的灵魂---指针(基础)

C语言灵魂指针1.什么是指针&#xff1f;2.指针的大小3.指针的分类3.1比较常规的指针类型3.2指针的解引用操作3.3野指针野指针的成因&#xff1a;4.指针运算4.1指针加减整数4.2指针-指针1.什么是指针&#xff1f; 这个问题我们通常解释为两种情况&#xff1a; 1.指针本质&#…...

带你一文透彻学习【PyTorch深度学习实践】分篇——线性模型 梯度下降

分享给大家一段我国著名作家、散文家史铁生先生的一段话: 把路想象的越是坎坷就越是害怕,把山想象的越是险峻就越会胆怯,把别人想象的越是优秀就越是不敢去接近。惯于这样想象的人,是天生谦卑的人。 --------史铁生《关于恐惧》 🎯作者主页:追光者♂🔥 �…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看&#xff0c;后端SQL查询确实返回了数据&#xff0c;但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离&#xff0c;并且ai辅助开发的时候&#xff0c;很容易出现前后端变量名不一致情况&#xff0c;还不报错&#xff0c;只是单…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...