开源时序数据库学习
计划学习使用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
部署步骤
-
下载InfluxDB二进制文件并解压缩。
-
配置InfluxDB,包括设置管理员账户、创建数据库和设置保留策略等。
-
启动InfluxDB服务,可以使用命令行启动或作为后台服务启动。
-
连接InfluxDB,使用InfluxDB的API或者第三方库连接InfluxDB进行数据的读写。
C#中的灵活运用
在C#中,可以使用InfluxDB的API或第三方库进行数据的读写,常用的第三方库包括InfluxData.Net和InfluxDB.Client。这些库支持对InfluxDB进行CRUD操作、执行查询、写入数据点等操作。此外,也可以使用InfluxQL查询语言进行数据查询和分析。
例如,在C#中使用InfluxData.Net库进行数据的读写,可以按照以下步骤进行:
-
在Visual Studio中创建一个新的C#项目,并在NuGet中添加InfluxData.Net包。
-
在代码中创建InfluxDB客户端实例并连接到InfluxDB。
-
使用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
部署步骤
-
下载QuestDB二进制文件并解压缩。
-
启动QuestDB服务,可以使用命令行启动或作为后台服务启动。
-
连接QuestDB,使用QuestDB的API或者第三方库连接QuestDB进行数据的读写。
C#中的灵活运用
在C#中,可以使用QuestDB的API或第三方库进行数据的读写,常用的第三方库包括QuestDB.Client。这些库支持对QuestDB进行CRUD操作、执行查询、写入数据等操作。此外,也可以使用SQL查询语言进行数据查询和分析。
例如,在C#中使用QuestDB.Client库进行数据的读写,可以按照以下步骤进行:
-
在Visual Studio中创建一个新的C#项目,并在NuGet中添加QuestDB.Client包。
-
在代码中创建QuestDB客户端实例并连接到QuestDB。
-
使用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…...
字节测试工程师悄悄告诉我的软件测试、测试开发常用的测试策略与测试手段
目录 前言 测试策略的关注重点 测试策略主要内容 总体测试策略 初级版本测试策略 跟踪测试执行 版本质量评估 后续版本测试策略 发布质量评估 测试手段 前言 测试策略是指在特定环境约束之下,描述软件开发周期中关于测试原则、方法、方式的纲要ÿ…...
我常用的shell 进制转换工具
一、进制的一些基础知识 1. 二进制(binary) 二进制的取值是0和1; 前缀是 0b 2. 八进制(Octal) 八进制的取值是0-7;前缀是 O 3. 十进制(decimal) 十进制的取值是0-9;没有前缀 …...
手写vue(二)响应式实现
名词解释:vm:指Vue实例一、目标效果vue定义(1)新建vm时,可以通过一个data对象,或者data函数,其属性可以通过vm直接访问,而data对象可以通过vm._data获取(2)修…...
mysql数据库常问面试题
1、NOW()和CURRENT_DATE()有什么区别? NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。 CURRENT_DATE()仅显示当前年份,月份和日期。 2、CHAR和VARCHAR的区别? (1)…...
AI风暴 :文心一言 VS GPT-4
💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 文心一言 VS GPT-4 文心一言:知识增强大语言模型百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动&#…...
VR全景城市,用720全景树立城市形象,打造3D可视化智慧城市
随着城市化进程的加速,城市之间的竞争也日益激烈。城市管理者们需要寻求新的方式来提升城市的品牌形象和吸引力。在这个过程中,VR全景营销为城市提供了一种全新的营销手段,可以帮助提升城市的价值和吸引力。一、城市宣传新方式VR全景营销是一…...
javaweb窗口服务人员分析评价系统ssh
A)后台管理员模块:通过该功能模块,管理员可以修改自己的密码,并对管理员进行添加和删除操作。 B)注册用户模块:通过该功能模块,管理员可以查看注册用户的基本信息,对存在问题的用户进…...
树莓派Pico W无线开发板UDP协议MicroPython网络编程实践
树莓派Pico W无线开发板(简称Pico W)是树莓派基金会于2022年6月底推出的搭载无线通信芯片的树莓派Pico开发板。本文在介绍树莓派Pico W无线开发板接口信号和TCP/IP和UDP通信协议基础上,给出Pico W无线开发板的UDP协议MicroPython网络编程实例…...
跨域解决方案
跨域解决方案 1.跨域基本介绍 文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS 跨域问题是什么? 一句话:跨域指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对 javascr…...
springboot的统一处理
在处理网络请求时,有一部分功能是需要抽出来统一处理的,与业务隔开。 登录校验 可以利用spring mvc的拦截器Interceptor,实现HandlerInterceptor接口即可。实现该接口后,会在把请求发给Controller之前进行拦截处理。 拦截器的实…...
C/C++每日一练(20230319)
目录 1. 反转链表 II 🌟🌟 2. 解码方法 🌟🌟 3. 擅长编码的小k 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 …...
GitHub 上有些什么好玩的项目?
前言 各个领域模块的都整理了一下,包含游戏、一些沙雕的工具、实用正经的工具以及一些相关的电商项目,希望他们可以给你学习的路上增加几分的乐趣,我们直接进入正题~ 游戏 1.吃豆人 一款经典的游戏开发案例,包括地图绘制、玩家控…...
蓝桥杯刷题第十二天
问题描述给定一个正整数 n ,请问 n 的十进制表示中末尾总共有几个 0 ?输入格式输入一行包含一个正整数 n。输出格式输出一个整数,表示答案。评测用例规模与约定对于所有评测用例,1 < n < 1000000000。运行限制最大运行时间&…...
开发也可以很快乐,让VSCode和CodeGPT带给你幸福感
CodeGPT 是一款 Visual Studio Code 扩展,可以通过官方的 OpenAI API 使用 GPT-3 (预训练生成式转换器) 模型,在多种编程语言中生成、解释、重构和文档化代码片段。CodeGPT 可用于各种任务,例如代码自动完成、生成和格式化。它还可以集成到代…...
【Linux】基本指令介绍
前言从今天开始,我们一起来学习Linux的相关知识,今天先来介绍怎么登录Linux,并且介绍一些Linux的基本指令。使用 XShell 远程登录 Linux很多同学的 Linux 启动进入图形化的桌面. 这个东西大家以后就可以忘记了. 以后的工作中 没有机会 使用图…...
JQuery介绍
文章目录一. JQuery介绍二. JQuery使用三. JQuery选择器四. JQuery选择集过滤五.JQuery选择集转移六. JQuery获取和操作标签内容七. JQuery获取和设置元素属性八. JQuery事件九.JQuery事件代理- 事件冒泡- 事件绑定的问题- 事件代理一. JQuery介绍 定义: jquery是JS的一个函数…...
Selenium基础篇之八大元素定位方式
文章目录前言一、如何进行元素定位?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.什么是指针?2.指针的大小3.指针的分类3.1比较常规的指针类型3.2指针的解引用操作3.3野指针野指针的成因:4.指针运算4.1指针加减整数4.2指针-指针1.什么是指针? 这个问题我们通常解释为两种情况: 1.指针本质&#…...
带你一文透彻学习【PyTorch深度学习实践】分篇——线性模型 梯度下降
分享给大家一段我国著名作家、散文家史铁生先生的一段话: 把路想象的越是坎坷就越是害怕,把山想象的越是险峻就越会胆怯,把别人想象的越是优秀就越是不敢去接近。惯于这样想象的人,是天生谦卑的人。 --------史铁生《关于恐惧》 🎯作者主页:追光者♂🔥 �…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
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:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
