当前位置: 首页 > 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深度学习实践】分篇——线性模型 梯度下降

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

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...