-
openGemini技术洞察 一 关于openGemini openGemini是一款面向IoT和Devops场景垂直优化的分布式时序数据库,提供单机和分布式版本,具备卓越的读写性能和高效的数据分析能力,支持主流开发语言和多形态部署(如云、Docker、物理机等)。openGemini主要聚焦于海量时序数据的存储和分析,通过技术创新,降低海量时序数据存储成本,简化业务系统架构,提升时序数据存储和分析效率。 openGemini背靠华为云丰富的IoT和Devops场景,经受住了海量时序数据管理的实战考验。自开源以来,不断收到来自社区用户的正向反馈,已累积在60+企业测试和生成落地使用。 openGemini具有五大核心特性:1.高性能:支持亿级时间线和PB级时序数据管理,每秒千万级数据写入和毫秒级查询响应,相比InfluxDB,简单查询性能提升2-5倍,复杂查询性能提升60倍2.分布式:采用MPP大规模并行处理分层架构,由ts-sql、ts-meta、ts-store三个组件组成,各组件可独立扩展,支持100+节点的大规模集群部署3.存储分析一体化:内置AI数据分析平台,提供了对时序数据的实时异常检测能力,实现了数据从存储到分析完整的闭环管理4.运维成本低:提供260+项系统运行监控指标,快速提升问题解决的效率。部署过程中不依赖任何第三方组件和应用,极大降低了运维难度和成本5.高数据压缩率:采用列式存储方式,提供高效数据压缩算法,相同数据量下存储成本仅有关系型数据库的1/20,NoSQL的1/10 二 openGemini使用场景 openGemini 是一个开源的时序数据库,专注于高性能的时序数据存储、查询和分析。它适用于多种需要处理大量时间序列数据的场景,尤其在物联网(IoT)、监控、金融、日志分析等领域表现突出。以下是 openGemini 的主要使用场景:1. 物联网(IoT)与工业互联网设备监控:实时采集和存储传感器数据(如温度、湿度、压力等),并支持快速查询和分析。预测性维护:通过历史数据趋势分析,预测设备故障或异常。边缘计算:与边缘设备结合,实现本地化数据处理和实时响应。2. IT 基础设施与运维监控服务器/容器监控:存储 CPU、内存、磁盘、网络等指标数据,支持 Prometheus 兼容的查询。应用性能管理(APM):追踪微服务或分布式系统的性能指标(如延迟、错误率)。告警与分析:基于时序数据触发告警,并快速定位问题根源。3. 金融与交易数据分析高频交易:存储和分析秒级/毫秒级的交易数据,支持实时风控。行情数据存储:记录股票、加密货币等的价格变动历史。用户行为分析:分析交易行为的时间序列模式(如登录频率、操作习惯)。4. 日志管理与分析集中式日志存储:替代 Elasticsearch 的部分场景,存储时间戳日志(如 Nginx、Kubernetes 日志)。日志实时分析:通过 SQL-like 查询快速检索日志,或聚合分析错误趋势。5. 能源与智慧城市智能电表/水表数据:存储居民或企业的能源消耗数据,支持分时计费和大规模聚合。环境监测:分析空气质量、噪声等环境传感器的时序数据。6. 车联网与自动驾驶车辆遥测数据:记录车辆行驶中的速度、油耗、GPS 位置等数据。驾驶行为分析:通过时间序列数据优化路线或检测危险驾驶。7. 其他场景科研实验数据:存储实验室设备生成的时间序列结果(如生物、化学实验)。游戏数据分析:记录玩家在线行为、道具交易等时序事件。openGemini 的核心优势高性能:针对时序数据优化,支持高吞吐写入和低延迟查询。水平扩展:分布式架构,可轻松扩展集群规模。兼容性:支持 InfluxDB Line Protocol、PromQL 等协议,降低迁移成本。成本效益:开源方案,相比商业时序数据库(如 InfluxDB Enterprise)更经济。典型用户案例某智能制造企业:用 openGemini 存储万台设备的传感器数据,实现实时监控。某云服务商:替代 Elasticsearch 存储日志,降低 50% 存储成本。某金融公司:分析高频交易数据,延迟控制在毫秒级。 三 openGemini的安装与使用 通过docker安装openGemini:docker run -d --name opengemini opengeminidb/opengemini-server:latest安装日志:C:\Windows\System32>docker run -d --name opengemini opengeminidb/opengemini-server:latestUnable to find image 'opengeminidb/opengemini-server:latest' locallylatest: Pulling from opengeminidb/opengemini-server0de4ca3c6b94: Pull complete0e0c0faae025: Pull complete631a47dfb3a9: Pull completed9b4a4d929b9: Pull complete9b244a79caed: Pull completeDigest: sha256:cf2db989234638460423bbd20af64c743684f48449227302c3868e0a8872079bStatus: Downloaded newer image for opengeminidb/opengemini-server:latest2e31cad3116dce374b374207aaff383464e09eb3a5aef2d839ff7a5298b8ae4e 使用openGemini cli 连接:docker exec -it opengemini ts-cli 创造数据库:create database db0 展示目前的数据库列表:show databases 使用数据库use db0 写数据insert cpu_load,host=server-01,region=west_cn value=75.3 查看表show measurements 查询数据select * from cpu_load docker run -p 8086:8086 58b26b87069a73291fd55addfa1f30780735f47e95199fe6d7699fed29281db2 日志信息:C:\Windows\System32>docker exec -it opengemini ts-cliopenGemini CLI (rev-)Please use `quit`, `exit` or `Ctrl-D` to exit this program.> create database db0> show databasesname: databases+-----------+| name |+-----------+| _internal || db0 |+-----------+1 columns, 2 rows in set> use db0Using database: db0, retention policy: autogen> insert cpu_load,host=server-01,region=west_cn value=75.3> show measurementsname: measurements+----------+| name |+----------+| cpu_load |+----------+1 columns, 1 rows in set> select * from cpu_loadname: cpu_load+---------------------+-----------+---------+-------+| time | host | region | value |+---------------------+-----------+---------+-------+| 1755072990101890304 | server-01 | west_cn | 75.3 |+---------------------+-----------+---------+-------+4 columns, 1 rows in set> CLI写数据Line Protocol(行协议) 是InfluxDB提出的一种基于文本的数据格式,openGemini使用相同Line Protocol,用于将points 写入 openGemini。 > INSERT weather,location=us-midwest temperature=82 1465839830100400200> select * from weathername: weather+---------------------+------------+-------------+| time | location | temperature |+---------------------+------------+-------------+| 1465839830100400128 | us-midwest | 82 |+---------------------+------------+-------------+3 columns, 1 rows in set InfluxQL查询SELECT top("value", 1) FROM "weather" 日志:> SELECT top("value", 1) FROM "cpu_load"name: cpu_load+---------------------+------+| time | top |+---------------------+------+| 1755072990101890304 | 75.3 |+---------------------+------+2 columns, 1 rows in set 过滤查询 INSERT weather,location=us-midwest1 temperature=82 1165839830100400200INSERT weather,location=us-midwest1 temperature=52 1165839830100400202INSERT weather,location=us-midwest1 temperature=12 1165839830100400201 > SELECT * FROM "weather" WHERE "temperature" > 50name: weather+---------------------+-------------+-------------+| time | location | temperature |+---------------------+-------------+-------------+| 1165839830100400128 | us-midwest1 | 82 || 1165839830100400128 | us-midwest1 | 52 |+---------------------+-------------+-------------+3 columns, 2 rows in set 四 总结openGemini通过开源协作推动时序数据库技术的普惠化,帮助各行业高效挖掘时序数据价值。openGemini针对物联网、监控等场景的海量时序数据(高写入吞吐、低查询延迟)优化,解决传统关系型数据库或通用 NoSQL 数据库的效率瓶颈。
-
本次活动第一介绍了数据库中存储管理,包含记录、磁盘块和文件中存储结构,并以Gauss DB为案例介绍商用数据库的存储格式。第二详细讲解了B+树的结构、Blink树的结构。B+树的分裂与合并。重点讲解了在事务环境下B+树的蟹行协议的加锁和释放锁的过程。本次活动采用的教材是清华大学李国良老师编写的教材。本次活动课件和活动照片链接:通过网盘分享的文件:2025-04-02链接: https://pan.baidu.com/s/1BFNx9-iuEwoJFoWehEjYyA?pwd=62r6 提取码: 62r6
-
在当今信息化社会,数据已经成为企业竞争的核心资产。如何准确、快速地获取有效数据,是各行各业都在关注的问题。本文将为您介绍一种能够精准获取三网DPI、SDK实时获取意向用户数据的方法,帮助您更好地理解并应用这一技术。 该方法基于深度数据包检测(DPI)技术,通过实时捕获、解析网络流量,提取关键信息。收集与自身行业相关的网页链接、手机上App、小程序名称、关键字和400号码,然后根据运营商大数据的数据信息数据模型创建精确数据模型。接着,对顾客的上网行为、通讯行为进行分析,从而获得顾客的自身联系电话等信息,如地域、性别、访问频次、访问时间等各行各业的数据信息。 例如,金融贷款、教育机构、股民、期货、外汇、工商企业、POS机、机票、保健品、白酒、各类电商等行业,都可以通过这一方法实时获取高精准的客户数据。这种数据获取方式可以渗透SDK/DPI爬虫精准数据,获取指定网站访客、app登录访客手机号码。但是,这种数据不像渗透资源那样类别齐全,基本只包含手机号码、对应的APP。 精准数据获取三网DPI、SDK实时获取意向用户数据的方法,具有广泛的应用前景。它可以帮助企业快速获取潜在客户信息,提高市场营销效果。通过对客户的上网行为、通讯行为进行分析,企业可以更好地了解客户需求,优化产品和服务。该方法还可以应用于金融、教育、医疗等行业,提高行业监管水平,保障公共利益。精准数据获取技术将为我国各行各业的发展带来深远影响。 三网运营商大数据的精准客户资源,其原理和机制主要基于数据挖掘和用户行为分析。运营商通过各种手段收集用户的数据,包括用户的实时访问行为、应用使用行为、通信行为等。然后,通过数据挖掘技术,对这些数据进行深度分析,提取出用户的各种特征和行为模式。根据企业的需求,通过标签筛选,精准地识别出目标用户。 以移动运营商为例,其大数据平台可以实时跟踪所有移动用户的各种行为足迹,进行意向数据确认,如搜索行为、访问行为、应用下载、注册、登录行为、短信交互行为、拨号行为、消费记录等综合信息。通过对这些数据的分析,企业可以精准地找到目标客户,实现精准营销。例如,一家电商企业,通过移动运营商的大数据平台,找到了最近一周内在淘宝、京东等电商平台频繁搜索和浏览手机的用户,然后针对这些用户进行精准的广告投放,结果显著提高了产品的销售量。
-
本文档以从单线程单个插入数据、多线程单个插入数据、使用COPY命令插入数据,分析这些操作对PostgreSQL数据库的性能影响进行了详细的分析。链接: https://pan.baidu.com/s/1lP-RqJnoKzk5kOQXx2pebA 提取码: szcm
-
本文档以体操比赛管理系统为例,讲述了利用PostgreSQL数据库开发一个数据库管理系统,具体包含的PostgreSQL安装、建库、建表;数据库的ER建模;以及基于三层架构的数据库应用开发。链接: https://pan.baidu.com/s/16hZNgM69yTg_wnuh3GGyWg 提取码: frjj
-
基于“华为云”技术的SpringBoot项目实践设计———房屋租赁系统华为云是华为的云服务品牌,将华为30多年在ICT领域的技术积累和产品解决方案开放给客户,提供稳定可靠、安全可信、可持续发展的云服务。华为云致力于让云无处不在,让智能无所不及,共建智能世界的云底座。OBS是什么?对象存储服务 OBS对象存储服务(Object Storage Service)是一款稳定、安全、高效、易用的云存储服务,具备标准Restful API接口,可存储任意数量和形式的非结构化数据 实践项目介绍本项目(房屋租赁系统)以实际运用为背景,基于华为云和SpringBoot开发,目的是为满足用户查询房屋、预约看房、房屋租赁的需求。关键词:Spring Boot框架,华为云项目架构:B/S结构B/S(浏览器/服务器)结构是目前主流的网络化的结构模式,它能够把系统核心功能集中在服务器上面,可以帮助系统开发人员简化操作,便于维护和使用。它能够结合Web浏览器技术,ActiveX技术以及多种脚本语言等技术。帮助程序开发者节约开发成本。 项目源码下载https://www.aliyundrive.com/t/HM6nVyH6QLXy5oOmf9in系统功能分析本赁系统主要分管理员和租客两大功能模块,下面将详细介绍管理员和租客分别实现的功能。租客功能————租客进入本系统可查看系统信息,包括网站首页、公告信息以及房屋信息,注册登录主要功能模块包括个人中心、看房申请管理、租赁合同管理、收租信息管理、报修信息管理 管理员功能————————管理员可登录系统后台,登录后可对系统进行全面管理,包括个人中心、公告信息管理、租客管理、户主管理、房屋信息管理、看房申请管理、租赁合同管理、收租信息管理、报修信息管理、收租统计管理以及维修数据管理功能简要展示1、主界面 2、租客注册与登录 租客可选择房屋查看房屋详情信息,登录可进行看房申请操作,房屋详情界面展示 租客登录后还可查看租赁合同信息,租赁合同界面展示 租客可进入收租信息界面查看收租信息,收租信息界面展示 2、管理员登陆 管理员可对租户进行管理,处理租户发起的看房、维修申请,以及对租赁合同信息进行增删改查。 管理员可增删改查房屋信息,房屋信息管理界面展示如图5-11所示。——————————————大致功能及结构演示完毕———————————————基于华为云obs实现文件上传下载1.进入obs控制台2.创建桶3.点击创建桶4.获得obs工具参数必要参数罗列 代码如下(示例) private static final String endPoint = "obs.cn-east-3.myhuaweicloud.com"; private static final String ak = "G4NKS1KU4V0Z7Q6RGOCV"; private static final String sk = "RCypypmqmYA4Dv8VHjdgS7mPTwGEx5Hkngmrv71L"; public static String BUCKET_NAME = "myclude-test";//你创建的桶名Maven的获取<dependency> <groupId>com.huaweicloud</groupId> <artifactId>esdk-obs-java</artifactId> <version>3.20.6.2</version> </dependency> 分析工具类文件上传方法//文件上传 public void ObsUpload(String bucketName, String key, InputStream inputStream) throws IOException { // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); obsClient.putObject(bucketName, key, inputStream); obsClient.close(); }该方法需要桶名,key,输入流Inputstream输入流介绍表示有序的字节流,换句话说,可以将 InputStream 中的数据作为有序的字节序列读取。 这在从文件读取数据或通过网络接收时非常有用。 InputStream 通常连接到某些数据源,如文件,网络连接,管道等 看如下代码片段: public class InputStreamExample { public static void main(String[] args) throws IOException { InputStream inputStream = new FileInputStream("D:\\out.txt"); //do something with data... int data = inputStream.read(); while (data != -1) { System.out.print((char) data); data = inputStream.read(); } inputStream.close(); } } 注意:为了代码清晰,这里并没有考虑处理异常的情况,IO 异常处理有专门的介绍。 文件下载方法 ```java //控制层可调用该方法实现文件下载 public void dowloadFile(HttpServletResponse response, InputStream inputStream, String fileName) { response.setHeader("content-type", "application/octet-stream"); response.setContentType("application/octet-stream"); try { response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8")); } catch (Exception e) { e.printStackTrace(); } byte[] items = new byte[1024 * 10]; int i = 0; try { BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); OutputStream outputStream = response.getOutputStream(); BufferedOutputStream outputStream1 = new BufferedOutputStream(outputStream); while ((i = bufferedInputStream.read(items)) != -1) { outputStream1.write(items, 0, i); outputStream1.flush(); } outputStream1.close(); outputStream.close(); bufferedInputStream.close(); inputStream.close(); } catch (Exception e1) { e1.printStackTrace(); } }### 具体逻辑实现 文件上传 创建一个前端页面,用于获取文件,这里我们要用到bootstrap,js,css等等 ```java <%-- Created by IntelliJ IDEA. User: 28571 Date: 2021/9/7 Time: 1:13 To change this template use File | Settings | File Templates. --%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>我的text</title> </head> <body> <div> <form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data"> <input type="submit" class="btn btn-outline-danger" onclick="return checkfile()" value="上传文件"/> <input class="btn btn-outline-primary" type="file" onchange="checkfile()" id="fileupload" name="file" onpropertychange="getFileSize(this.value)"/><br/> </form> </div> </body> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script type="text/javascript"> var tipMsg = "建议使用chrome firefox ie等浏览器"; var browserCfg = {}; //下面一段鉴别使用者的浏览器 var ua = window.navigator.userAgent; if (ua.indexOf("MSIE") >= 1) { browserCfg.ie = true; } else if (ua.indexOf("Firefox") >= 1) { browserCfg.firefox = true; } else if (ua.indexOf("Chrome") >= 1) { browserCfg.chrome = true; } function checkfile() { try { var obj_file = document.getElementById("fileupload"); var isvip = ${isvip}; if (obj_file.value == "") { alert("请先选择上传文件"); return; } var filesize = 0; if (browserCfg.firefox || browserCfg.chrome) { filesize = obj_file.files[0].size; //chrome等浏览器支持这个方法拿到文件大小 } else if (browserCfg.ie) { var obj_img = document.getElementById('tempimg'); obj_img.dynsrc = obj_file.value; filesize = obj_img.fileSize; } else { alert(tipMsg); return false; } if (filesize == -1) { alert(tipMsg); return false; } else { return true; } } catch (e) { alert(e); return false; } } </script> </html>创建一个控制层FileController,用于获得前端响应设置工具中的全局变量 private static final Logger LOGGER = LoggerFactory.getLogger(OBSUtils.class); private static final String endPoint = "obs.cn-north-4.myhuaweicloud.com"; private static final String ak = "G4NKS1KU4V0Z7Q6RGOCV"; private static final String sk = "RCypypmqmYA4Dv8VHjdgS7mPTwGEx5Hkngmrv71L"; public static String BUCKET_NAME = "myteacher-test";在FilesController创建方法package com.example.demo.Controller; import com.example.demo.Util.OBSUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.InputStream; import static java.lang.System.out; @Controller public class FilesController { //文件下载页面路由 @RequestMapping("/text") public String load(){ return "upfile";//返回upfile.html } //前端请求路由 @RequestMapping("/upload") public String upload(@RequestParam("file") CommonsMultipartFile file, HttpSession Session, HttpServletRequest req) throws IOException { if(file==null) return "/upload"; //将文件存入obs OBSUtils obs = new OBSUtils(); String Key = file.getOriginalFilename(); // out.println(Key); InputStream inputStream = file.getInputStream(); obs.ObsUpload("myteacher-test",Key,inputStream); out.println("上传成功"+Key); return "upfile";//返回upfile.html } }启动项目并测试接下来我们将该项目部署到华为云上1.华为云控制台 -> 我的资源 -> 云服务器以此找到华为云分配的公网IP地址入口2.添加端口添加8080端口(你Sprig Boot项目启动时的端口,如果Spring Boot项目没有设置,默认是8080)添加3308端口(你华为云服务器设置的Mysql端口) 3.测试远程连接是否成功下载 Mysql WorkBench。cid:link_0新建连接 -> 输入Mysql数据库远程地址、端口号、用户名、密码 4.修改Spring Boot项目关于Mysql的连接配置5.编译后端项目为jar文件将后端项目使用Maven进行编译6.上传项目jar文件到云服务器在根目录新建一个文件夹,命名为projects, 然后单击右键上传文件。 上传成功后,运行项目既将房屋租赁系统部署到华为云上完毕使用CodeArts开通CodeArts服务:登陆华为云账号购买CodeArts点击“新建项目”(如果这里已有项目,那我们就点击已又的项目) 选择模版(这里我们选择常用的Scrum) 填写完成后进入项目 CodeArts的功能CodeArts全系列工具,包括需求管理、代码托管、编译构建、代码测试、流水线等的关键特性,开发者在掌握前沿研发理念的同时,也能深度了解CodeArts是如何融合华为在软件开发领域的丰富经验以及开发工具上的能力积累。在团队开发过程中我们可以使用CodeArts为我们整合的功能进行团队合作,协同开发。CodeArts的功能的具体使用这里我们以代码托管为例 新建项目 这就是项目界面 点击右上角“克隆/下载”点击密钥管理查看密钥,(这里我们选择HTTPS) 记下来此密钥,带回Push时要用使用git将代码推入CodeArts远程仓库这里我们以Mac系统的IDEA为例点击菜单栏【VCS】—>【Import into Version Control】—>【Create git Repository】,选择本地项目 这时项目旁边显示Master即表示成功接下来就可以用git来管理了接下来我们将项目推入CodeArts远程仓库点击push填入我们远程仓库的路径之后根据提示填入我们前文保留的用户名和密码Push之后,查看idea提示:即为成功推入。以上便是基于华为云技术,团队协同使用一站式软件开发生产线 CodeArts和华为云obs,并将项目部署的云服务器上的项目实践开发全过程。总结————————————从使用CodeArts进行项目创建,接入华为云obs,到将项目部署到华为云服务器,以及开发过程中团队协同使用CodeArts进行项目构建、代码托管、代码检查以及测试环节。 为新接触华为全套软件发开相关服务的高校学生团队提供一个完整的项目开发模版,帮助其了解全套开发流程,使其能够借助华为云全套软件开发服务为其团队构建起一个完成流畅的工作流。同时也助其减少实际开发工作和高校课程之间的“代沟”,为将来步入实际开发环境打下基础。
-
执行上述SQL语句,前提是第一个属性是主键,表中已有S09属性值。按理来说会事务回滚,但是datastudio执行后第一个插入语句成功了且没有撤销,为什么?
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签