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

夯实智慧新能源数据底座,TiDB Serverless 在 Sandisolar+ 的应用实践

本文介绍了 SandiSolar+通过 TiDB Serverless 构建智慧新能源数据底座的思路与实践。作为一家致力于为全球提供清洁电力解决方案的新能源企业,SandiSolar+面临着处理大量实时数据的挑战。为了应对这一问题,SandiSolar+选择了 TiDB Serverless 作为他们的数据底座。TiDB Serverless 具有灵活扩展、按实际使用量付费、自动伸缩等特点,能够满足 SandiSolar+的实时数据处理需求。未来,SandiSolar+计划在 TiDB Serverless 基础上开发实时计费、高频交易等功能,为光伏产业探索更深层次的服务与盈利模式。

云南尚鼎新能源有限公司(SandiSolar+ )成立于 2008 年,是一家专注于太阳能光伏产品应用和光伏系统服务的高新技术企业,历经 15 年东南亚市场的沉淀,不断向市场提供专业的光伏产品、绿色电力系统解决方案,建立了一流的光伏品牌供应链体系。2022 年,SandiSsolar+ 进行品牌升级,将多年来沉淀的供应优势、服务标准,集成为一个全流程的智慧能源服务平台——SandiSolar+,致力于跑通智慧能源的“最后一公里” 。

业务挑战

SandiSolar+ 新能源的愿景是:引领数字化、智能化的绿色生活,为全世界平价用电、绿色用电的生活方式贡献力量。通过不断创新和发展,SandiSolar+ 目前已经为缅甸无电地区的数百万家庭提供了清洁电力。

与传统光伏企业不同,SandiSolar+ 对数据价值挖掘有着较为强烈的需求。目前,SandiSolar+ 内部的数据来源主要有两类:一类是光伏逆变器的数据,可以采集到每一个光伏电站的发电量;另一类是这些家庭中安装的第三方智能电表的数据,可以采集到每一个家庭的用电量。这些数据通过 API 接口实时汇总到 SandiSolar+ 的 SaaS 平台上,并在数据库中进行聚合,计算出该光伏电站每天、每小时的发电量与用电量。

在该场景下,通常需要聚合 4-5 张大表数据,例如项目表、用电数据表、逆变器数据表和智能电表数据表,用电数据表还会每隔几个小时做一次快照,生成一张快照表。每张表都有十几万行数据,数据量常常达到数十万级,聚合的 SQL Query 也会达到 300-400 行长度,聚合过程较为复杂,并要求毫秒级返回计算结果。

由于第三方的 API 稳定性和访问频率都有一定限制,SandiSolar+ 正在开发自己的智能网关,可以更实时地采集到每一个光伏电站的温度、发电频率、发电功率、用电量等数据,未来会逐步替换掉第三方智能电表,通过互联网协议将数据传输到 SandiSolar+ 的服务器上,对数据的实时处理会提出更高要求。

在该 SaaS 系统中,SandiSolar+ 最核心的部分是打造了一个“数据中台”,系统中所有数据的搜索查询都通过“数据中台”实现。前端的 APP 以及后端的管理平台都通过该中台搜索收据。如 C 端用户在 APP 中查看自己的历史发电量与用电量,B 后 端的管理平台可以查看电站从勘测、施工、验收、运营阶段的工单留档及用电数据等。此外,B 端还会产生一部分工单数据,如光伏电站的施工、安装、验收留档数据等。所有这些数据都存放在同一套数据库中,对于数据库而言,这套系统主要面临以下几项挑战:

  • SandiSolar+ C SaaS 平台根据业务的发展,需要端用户可以灵活添加或删除字段,自定义灵活度很高,传统数据库在做相关操作时会锁表,这就需要数据库具备灵活的 Online DDL 能力;
  • 由于 SandisSolar+ SaaS 平台的字段都可以灵活添加、删除和自定义,一个表里可能有上百个字段,开发人员不可能为每个字段都添加一个索引,这时列存就是一个比较理想的选择,需要数据库具备行存、列存同构的 HTAP 能力;
  • PostgreSQL 等传统数据库无法做到实时的物化视图能力,即使像 Snowflake 也只提供 2 分钟更新频率的 Materialized View,无法支持事务型的业务需求,TiDB 可以同时支持事务型交易及数据分析,是满足实时数据分析的最佳选择;
  • 该 SaaS 系统提供了一个“计算型字段”功能,用户可以在字段上自定义 formular 公式,在系统中进行实时汇总与聚合,如从一个工单中找到所属的客户姓名项目地址、计算项目当月用电量、聚合服务商历史工单平均满意度等;
  • 未来,全面替换为智能网关后,实时数据采集会造成比较大的写压力,需要数据库具备较高的实时处理以及并发写能力;

综上所述,SandisSolar+ 的 SaaS 平台对数据的实时性处理要求较高,传统的大数据、离线数仓无法满足这种实时性需求,经过对主流数据库进行选型,SandiSsolar+ 最终选择了具备 HTAP 能力的 TiDB Serverless 数据库来作为数据底座,为相关业务系统的智能化、可靠性、实时性提供了全面保障,承载了 SaaS 平台的实时数据存储、计算需求。

为什么选择 TiDB Serverless?

TiDB Serverless 是一种全托管的、自动化的数据库服务(DBaaS),能够快速部署集群,并按实际使用资源量计费。结合自身业务架构特性,Sandisolar SandiSolar+ 在考虑 TiDB Serverless 时重点关注以下特性:

  • 轻松扩展基础设施,支持多国家扩展 :TiDB Serverless 可以秒级搭建起数据库环境,开发团队能够迅速开展业务创新和开发。同时,TiDB Serverless 可以根据不同国家搭建不同的集群,可以满足 SandiSolar+ 在各国的不同需求,不会互相干扰;
  • 按实际使用量付费,起始成本低 :TiDB Serverless 服务无需预付费用,企业可以按照实际提交的 SQL 请求和实际使用的存储来付费,这种基于消费的定价模式为开发者创造了一个“随时启动,随用随付“的消费模式。SandiSolar+ 只需为实际的数据处理和存储付费,上手使用成本较低;
  • 自动伸缩,灵活应对业务增长 :TiDB Serverless 具有一个高度灵活扩展的分布式架构,可以随需弹性扩缩容,应对业务的快速增长,无需担心性能瓶颈与存储上限。同时,无论是存储、事务处理还是分析工作负载,SandiSolar+ 都能在几秒内根据应用需求自动伸缩,避免造成资源冗余浪费,既灵活又经济;
  • HTAP 架构,加速业务实时洞察 :TiDB Cloud Serverless 专为规模化交易、实时分析和混合工作负载以及流量激增的应用程序而构建,可以自动扩缩容以满足实时需求。TiDB 提供支持 MPP 架构的列存引擎 TiFlash ,SandiSolar+ 只需简单地进行数据聚合即可满足在线业务的实时分析需求,从而使运营效率和用户体验获得大幅提升;
  • TiDB Serverless Branching,快速实现并行开发 :SandiSolar+ 在开发过程中应用了 TiDB Serverless 的 Branching 功能。该功能可以使 SandiSolar+ 开发人员为其 TiDB Serverless 集群创建分支。这些分支可以实现并行开发,促进新功能快速迭代,排查故障,开发者无需中断生产数据库的运行。Branching 不仅简化了开发和部署过程,还保持了生产环境中数据库的稳定性和可靠性;
  • 轻松上手,无需分库分表 :应用 TiDB Serverless 可以帮助 SandiSolar+ 摆脱分库分表等数据库繁琐的操作任务,相当于只维护一张大表即可,既可以满足更长时间维度的查询需求,又无需反复对数据进行整理操作。

未来计划

基于 TiDB Serverless,SandiSolar+ 打造出一个具有实时数据处理能力的数据平台,在此基础上可以探索光伏周边衍生业务的可能性。

通常,电力公司会根据用电时段和电压等级,面向不同用户提供不同的电价策略。SandiSolar+ 正在开发一种实时计算电费的功能,可以根据不同的电价策略,结合 SaaS 平台中实时采集到的发电、用电数据,为每个用户实时计算出电费。目前,大多数泰国的电力公司还在通过 Excel 表格及程序代码来实现类似的计费功能,SandiSolar+ 凭借领先的数据处理能力,得以在光伏产业探索出更深层次的服务与盈利模式。

此外,SandisSolar+ 在实时统计发电量、用电量以及实时电价计算能力之上,还计划开发高频交易功能,C 端用户可以在其 SaaS 平台上进行碳资产的实时交易,努力推动实现碳中碳达峰目标。

相关文章:

夯实智慧新能源数据底座,TiDB Serverless 在 Sandisolar+ 的应用实践

本文介绍了 SandiSolar通过 TiDB Serverless 构建智慧新能源数据底座的思路与实践。作为一家致力于为全球提供清洁电力解决方案的新能源企业,SandiSolar面临着处理大量实时数据的挑战。为了应对这一问题,SandiSolar选择了 TiDB Serverless 作为他们的数据…...

MySQL数据库max_allowed_packet参数

如上图所示的报错,我在提交接口的时候出现了这个错误: MySqlConnector.MySqlException:Error submitting 4MB packet;ensure max_allowed_packet is greater than 4MB.在MySQL数据库中,有一个参数叫max_allowed_packet,这个参数会…...

Day98:云上攻防-云原生篇K8s安全Config泄漏Etcd存储Dashboard鉴权Proxy暴露

目录 云原生-K8s安全-etcd(Master-数据库)未授权访问 etcdV2版本利用 etcdV3版本利用 云原生-K8s安全-Dashboard(Master-web面板)未授权访问 云原生-K8s安全-Configfile鉴权文件泄漏 云原生-K8s安全-Kubectl Proxy不安全配置 知识点: 1、云原生-K8s安全-etcd未…...

JUC下面常见的锁

这里写目录标题 1、ReentrantLock2、Semaphore3、CountDownLatch4、CyclicBarrier 1、ReentrantLock ReentrantLock 是属于独占模式, 即同一时刻只允许一个线程获取锁。 2、Semaphore Semaphore 属于共享模式,synchronized 和 ReentrantLock 都是一次只…...

Uniapp+基于百度智能云完成AI视觉功能(附前端思路)

本博客使用uniapp百度智能云图像大模型中的AI视觉API(本文以物体检测为例)完成了一个简单的图像识别页面,调用百度智能云API可以实现快速训练模型并且部署的效果。 uniapp百度智能云AI视觉页面实现 先上效果图实现过程百度智能云Easy DL训练图…...

Android 软件盘的弹出和消失的监听

监听接口 OnKeyboardListener.java public interface OnKeyboardListener {void onKeyboardHidden();void onKeyboardShow(int keyboardHeight);} KeyBoardUtil.java public class KeyBoardUtil {private final static String TAG "KeyBoardUtil";public PopupWi…...

通俗易懂HTTP和HTTPS区别

HTTP:超文本传输协议,它是使用一种明文的方式发送我们的内容,没有任何的加密,例如我们要在网页上输入账号密码,如果使用HTTP协议,账号密码就可能会被暴露,默认端口是80. HTTPS:是HT…...

【ZZULIOJ】1061: 顺序输出各位数字(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 code 题目描述 输入一个不大于10的9次方的正整数,从高位开始逐位分割并输出各位数字。 输入 输入一个正整数n,n是int型数据 输出 依次输出各位上的数字,每一个数字后面有一个空格…...

java数据结构与算法刷题-----LeetCode260. 只出现一次的数字 III

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 与运算取末尾1分组 与运算取末尾1分组 解题思路:时间…...

AWS被误扣费了,怎么解决?

有时在使用aws时,可能会无意中被AWS扣费,对于如何处理这个问题,作为aws的合作伙伴,接下来由九河云进行讲解: (1)审查账单:首先,您需要仔细审查AWS账单,了解具…...

再传IPO消息,SHEIN的上市为何充满变数?

据《金融时报》援引消息人士报道,SHEIN正在等待北京监管部门的批准,以推进在纽约或伦敦的重磅上市。 几乎每隔一段时间,SHEIN即将上市的消息就会成为媒体关注的焦点,但每一次报道都“没有下文”,再加上SHEIN官方的“拒…...

maven bom

BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。 为什么要使用BOM 使用BOM除…...

若依vue中关于字典的使用

文章目录 字典管理页面列表点击某个字典类型展示具体字典数据修改某一条字典数据 字典的应用一般用于select多选框中代码实现根据字典Dict的value获取Label,类似于通过key获得value 源码解析 字典管理页面 列表 点击某个字典类型展示具体字典数据 修改某一条字典数…...

链表题(哑结点的使用)

给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 首先面对删除链表节点的操作,我们通常是将该节点的上一个节点的next指向该节点的下一个节点,从而将这个节点置空,达到删除节点的操作。 但是我们会碰…...

C#:求三个整数的最大值

任务描述 本关任务:编写一个程序,实现从键盘输入的三个整数,输出三个整数的最大值。 编程要求 根据提示,在右侧编辑器补充代码,计算并输出从键盘输入的三个数的最大值。 测试说明 平台会对你编写的代码进行测试&…...

广州南沙番禺联想SR530服务器主板传感器故障维修

今日分享一例广州市南沙区联想ThinkSystem SR530服务器sensor sysbrd vol故障问题维修案例; 服务器型号是:Lenovo thinksystem sr530 g6服务器 服务器所在位置:广东省广州市南沙区 服务器故障问题:机房异常停电,来电后…...

深入探索自然语言处理:用Python和BERT构建文本分类模型

在当今的信息时代,自然语言处理(NLP)技术正在改变我们理解和处理自然语言的方式。NLP使计算机能够解读、理解和生成人类语言,从而在多种应用中实现自动化,如聊天机器人、情感分析和文本分类。本文将详细介绍如何使用Py…...

在Visual Studio Code中编辑React项目时,以下是一些推荐的扩展

ESLint:这个扩展可以集成ESLint到VS Code中,帮助你在编写代码时发现和修复JavaScript和TypeScript的语法错误和代码风格问题。 Prettier - Code formatter:Prettier是一个代码格式化工具,可以自动格式化你的代码以保持一致的代码…...

智算时代的基础设施如何实现可继承可演进?浪潮云海发布 InCloud OS V8 新一代架构平台

从 2023 年开始持续火爆的 AIGC 正在加速落地应用,为全行业带来生产生活效率的变革与升级。面对数字化转型与智能化转型,对于技术团队来说,既要根据业务与 AI 应用去部署以云为基础的 AI 算力,又要与已有数据和系统(甚…...

LDF、DBC、BIN、HEX、S19、BLF、ARXML、slx等

文章目录 如题 如题 LDF是LIN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 DBC是CAN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 BIN文件烧录在BOOT里面(stm32)&#xff0c…...

因为使用ArrayList.removeAll(List list)导致的机器重启

背景 先说一下背景,博主所在的业务组有一个核心系统,需要同步两个不同数据源给过来的数据到redis中,但是每次同步之前需要过滤掉一部分数据,只存储剩下的数据。每次同步的数据与需要过滤掉的数据量级大概在0-100w的数据不等。 由…...

Let‘s Encrypt

创建文件夹 mkdir /usr/local/develop/ 安装Certbot客户端 yum install certbot 首先确保example.com和www.example.com这两个域名通过DNS解析绑定了你的web 服务器的公网 IP 就是说先要完成域名解析到服务器 下面命令会验证 /var/www/example 他会将一些命令文件存在…...

C语言 | Leetcode C语言题解之第24题两两交换链表中的节点

题目: 题解: struct ListNode* swapPairs(struct ListNode* head) {struct ListNode dummyHead;dummyHead.next head;struct ListNode* temp &dummyHead;while (temp->next ! NULL && temp->next->next ! NULL) {struct ListNod…...

【LeetCode热题100】【回溯】电话号码的字母组合

题目链接:17. 电话号码的字母组合 - 力扣(LeetCode) 组合的过程是一个长树的过程,可以用深度遍历实现,每一个数字对应的字符串都是一层,一种字母组合就是一条路径,当递归的深度达到层数就找到了…...

解析mysql的DDL语句生成高斯内表及表字段主键配置

mysql的DDL语句如下: CREATE TABLE gg_zr (id bigint(20) NOT NULL COMMENT 责任信息表主键id,zrdm varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 责任代码,zrmc varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAU…...

ANSYS Electromagnetics Suite 2023 R2 三维电磁(EM)仿真软件下载

Ansys家最新的三维电磁(EM)仿真软件ANSYS Electromagnetics Suite 2023 R2日前发布了,老wu这次分享得有点晚  ̄ω ̄,现在已经将资源上传到了网盘供大家免费下载,同时,为了让大家都能与…...

pbootcms百度推广链接打不开显示404错误页面

PbootCMS官方在2023年4月21日的版本更新中(对应V3.2.5版本),对URL参数添加了如下判断 if(stripos(URL,?) ! false && stripos(URL,/?tag) false && stripos(URL,/?page) false && stripos(URL,/?ext_) false…...

springboot 整合 swagger2

整合步骤 pom 添加依赖 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId>&…...

redis-缓存穿透与雪崩

一&#xff0c;缓存穿透&#xff08;查不到&#xff09; 在默认情况下&#xff0c;用户请求数据时&#xff0c;会先在缓存(Redis)中查找&#xff0c;若没找到即缓存未命中&#xff0c;再在数据库中进行查找&#xff0c;数量少可能问题不大&#xff0c;可是一旦大量的请求数据&a…...

K8S临时存储-本地存储-PV和PVC的使用-动态存储(StorageClass)

介绍 容器中的文件在磁盘上是临时存放的&#xff0c;当容器崩溃或停止时容器上面的数据未保存&#xff0c; 因此在容器生命周期内创建或修改的所有文件都将丢失。 在崩溃期间&#xff0c;kubelet 会以干净的状态重新启动容器。 当多个容器在一个 Pod 中运行并且需要共享文件时…...

linux把wordpress/免费网站自助建站系统

当系统卡顿、出现 Bug、电脑崩坏的时候&#xff0c;应该重启&#xff0c;重装&#xff0c;还是重买呢&#xff1f;相信大多数网友对重装并不陌生了&#xff0c;PE 系统、系统重置、在线重装降低了重装系统的门槛&#xff0c;「重装大法」虽然可以解决 90% 的问题&#xff0c;简…...

交互式网站制作/东莞企业网站设计公司

了解生产中内部使用的API的性能是一项艰巨的任务。实际上&#xff0c;大多数团队还没有监控API。随着市场的变化&#xff0c;越来越多的团队将API监控作为Ops团队和QA团队的优先事项&#xff0c;因此每个版本都经过了适当的测试&#xff0c;并设置了一个监控器确保在生产环境中…...

廊坊智能模板建站/海南网站制作

D3.js力导向图(适用于其他类型图)中后添加元素遮盖已有元素的问题解决参考文章&#xff1a; &#xff08;1&#xff09;D3.js力导向图(适用于其他类型图)中后添加元素遮盖已有元素的问题解决 &#xff08;2&#xff09;https://www.cnblogs.com/lmou/p/10896801.html &#…...

做网站公司高端/搜狗站长工具综合查询

原标题&#xff1a;django打造电商项目本课程的特点是实战&#xff0c;老师将手把手教大家搞个“大”项目&#xff0c;开发一套功能完备的系统&#xff01;全程采用企业级标准电商平台实战项目&#xff0c;以互联网公司标准开发流程&#xff0c;带领大家实践从0到项目正式上线。…...

如何做网站咨询/免费b站推广网站短视频

目录&#xff1a;python学习目录 开发环境&#xff1a;vs 2019os.access(para1, para2) 用来判断para1路径有什么权限 para1&#xff1a;文件路径 para2&#xff1a;有以下四个值 os.F_OK&#xff1a;测试para1路径是否存在 os.R_OK&#xff1a;测试para1路径是否允许读 os.W_O…...

wordpress多网站整合在一个后台/广州seo顾问

c中允许在结构体当中定义函数&#xff0c;它的用法和类的用法很像&#xff0c;不过与类有一个区别在于&#xff0c;struct中定义的函数和变量都是默认为public的&#xff0c;但class中的则是默认为private 如&#xff1a; #include<iostream> #include<string> s…...