{"id":21545,"date":"2024-06-30T19:38:54","date_gmt":"2024-07-01T02:38:54","guid":{"rendered":"https:\/\/tdengine.com\/?p=21545"},"modified":"2025-05-20T09:24:36","modified_gmt":"2025-05-20T16:24:36","slug":"gotion-energy-storage","status":"publish","type":"post","link":"https:\/\/tdengine.com\/gotion-energy-storage\/","title":{"rendered":"Gotion Elevates Energy Storage with TDengine Cloud"},"content":{"rendered":"<div class=\"gb-container gb-container-e745a7a3\">\n\n<div class=\"gb-headline gb-headline-d602bd1d gb-headline-text\">Highlights<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In Gotion&#8217;s production instance, TDengine ingests <strong>millions of records per second<\/strong> and compresses data to <strong>10% of its original size.<\/strong><\/li>\n\n\n\n<li>Gotion&#8217;s team can <strong>focus on their business requirements<\/strong> with the fully managed TDengine Cloud taking care of database administration and management tasks.<\/li>\n\n\n\n<li>Private links to TDengine Cloud in AWS <strong>significantly reduce network latency<\/strong> and bandwidth costs.<\/li>\n<\/ul>\n\n<\/div>\n\n\n<p>In one of its energy storage projects, Gotion needed a way to monitor the safety of its batteries in real time. The data the company was collecting &#8212; battery charging and usage data, current, voltage, and so on &#8212; were all classic examples of time-series data. With massive amounts of time-series data expected to come in from its users, Gotion decided to deploy a purpose-built time-series database.<\/p>\n\n\n\n<h2 class=\"gb-text\">Background<\/h2>\n\n\n\n<p>The project team needed a high-performance database that could handle the size of their data &#8212; millions of records per second &#8212; and that could easily scale to meet future business needs as well. With TDengine Cloud, Gotion received the same feature set as TDengine Enterprise as a fully managed service, allowing the team to focus all attention on their core business. As the team was still in the early stages of the project, they found that the Starter package listed on TDengine Cloud was a good fit for their requirements.<\/p>\n\n\n\n<img decoding=\"async\" width=\"768\" height=\"358\" class=\"gb-media-2c2b1ed1\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-01.png?strip=all&sharp=1\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-01.png?strip=all&amp;sharp=1 768w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-01-300x140.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-01.png?strip=all&amp;sharp=1&amp;w=153 153w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-01.png?strip=all&amp;sharp=1&amp;w=460 460w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-01.png?strip=all&amp;sharp=1&amp;w=614 614w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\n\n\n\n<p>They created a supertable in TDengine for each type of battery in the project, and then created a table for each battery within those supertables. The supertables each have over 100 columns, including metrics such as electricity usage and charging status. Their batteries generate a data point every 10 seconds 24 hours a day, which is written to TDengine, and they can easily view the metadata for their tables and supertables in the Data Explorer within TDengine Cloud.<\/p>\n\n\n\n<img decoding=\"async\" width=\"768\" height=\"351\" class=\"gb-media-ed17c588\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-02.png?strip=all&sharp=1\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-02.png?strip=all&amp;sharp=1 768w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-02-300x137.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-02.png?strip=all&amp;sharp=1&amp;w=153 153w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-02.png?strip=all&amp;sharp=1&amp;w=460 460w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-02.png?strip=all&amp;sharp=1&amp;w=614 614w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\n\n\n\n<h2 class=\"gb-text\">Data Ingestion Performance<\/h2>\n\n\n\n<p>TDengine is designed based on the characteristics of time-series data and innovates in several areas &#8212; columnar compression, flexible tags, and one table per device, for example. By using TDengine, the project team could avoid issues such as write locks, low compression ratios, and duplicated static data.<\/p>\n\n\n\n<p>The data generated by Gotion&#8217;s storage devices is transmitted over MQTT into the system, where business data is forwarded to PostgreSQL and time-series data &#8212; device-generated data as well as logs and statuses &#8212; is sent to TDengine. Each system in the middle tier uses the data stored in these databases for analysis and computation but may also send commands directly to devices. Finally, the data is displayed on management platforms.<\/p>\n\n\n\n<p>During testing, TDengine was able to ingest millions of data points per second and compress our datasets to 10% of their original size. These results were reflected in production as well.<\/p>\n\n\n\n<h2 class=\"gb-text\">Query Performance<\/h2>\n\n\n\n<p>Gotion performs many kinds of queries on its data in order to provide the best user experience and after-sales service. These can include monitoring battery health, analyzing trends in battery usage, and estimating product lifetime, among others.<\/p>\n\n\n\n<p>Several typical queries are described as follows:<\/p>\n\n\n\n<ol>\n<li>\n<p>The project team uses session windows to calculate the sum of the power output of a single device in intervals less than or equal to 1 minute: <\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\" data-line=\"\">SELECT FIRST(ts) firstTs, LAST(ts) lastTs, COUNT(*) countVal, SUM(input_total_power) totalPower FROM device_data_58CF7920B63C WHERE ts &gt;= &#039;2023-08-09T00:00:00.000Z&#039; AND ts&lt; &#039;2023-08-10T00:00:00.000Z&#039; SESSION(ts, 1m);<\/code><\/pre>\n\n\n\n<img decoding=\"async\" width=\"768\" height=\"455\" class=\"gb-media-8ce21375\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-03.png?strip=all&sharp=1\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-03.png?strip=all&amp;sharp=1 768w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-03-300x178.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-03.png?strip=all&amp;sharp=1&amp;w=153 153w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-03.png?strip=all&amp;sharp=1&amp;w=460 460w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-03.png?strip=all&amp;sharp=1&amp;w=614 614w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\n<\/li>\n\n\n\n<li>\n<p>We use time windows (<code class=\"\" data-line=\"\">INTERVAL<\/code>) to query trends in device power output with the <code class=\"\" data-line=\"\">OFFSET<\/code> parameter to take time zones into account:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-sql\" data-line=\"\">SELECT _WSTART AS ts, AVG(inverter_power) avgVal, MIN(inverter_power) minVal, MAX(inverter_power) maxVal FROM gendome.device_data_58CF7920B63C WHERE inverter_power &gt; 0 AND ts &gt;= &#039;2023-08-09T00:00:00.000Z&#039; AND ts&lt; &#039;2023-08-10T00:00:00.000Z&#039; INTERVAL (1d, 960m) FILL (NULL);<\/code><\/pre>\n\n\n\n<img decoding=\"async\" width=\"768\" height=\"459\" class=\"gb-media-71373c05\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-04.png?strip=all&sharp=1\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-04.png?strip=all&amp;sharp=1 768w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-04-300x179.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-04.png?strip=all&amp;sharp=1&amp;w=153 153w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-04.png?strip=all&amp;sharp=1&amp;w=460 460w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/gotion-04.png?strip=all&amp;sharp=1&amp;w=614 614w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\n<\/li>\n<\/ol>\n\n\n\n<p>Because the team&#8217;s applications are in the same AWS region as their TDengine Cloud deployment, they can create private links between their applications and TDengine so that their data is not transmitted over the Internet. This greatly decreases ingestion latency and also reduces costs associated with network traffic.<\/p>\n\n\n\n<h2 class=\"gb-text\">Conclusion<\/h2>\n\n\n\n<p>TDengine Cloud helps Gotion run its project at minimal cost thanks to its reasonably priced, fully managed enterprise service. It has greatly improved the team&#8217;s efficiency and given them the flexibility to scale out at any time that their requirements might demand it. Going forward, they plan to explore the capabilities of TDengine&#8217;s data sharing and stream processing features as well.<\/p>\n\n\n\n<h2 class=\"gb-text\">About Gotion<\/h2>\n\n\n\n<p>Gotion is a leading global solutions provider in the renewable energy sector. The company focuses on researching, producing, and marketing lithium-ion batteries and electricity storage.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TDengine Cloud helps Gotion run energy storage projects at minimal cost thanks to its reasonably priced, fully managed enterprise service.<\/p>\n","protected":false},"author":81,"featured_media":21734,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[264,23,268],"tags":[],"ppma_author":[167],"class_list":["post-21545","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-renewables","category-case-studies","category-industrial-data"],"authors":[{"term_id":167,"user_id":81,"is_guest":0,"slug":"chait","display_name":"Chait Diwadkar","avatar_url":{"url":"https:\/\/tdengine.com\/wp-content\/uploads\/29.03-05-cdiwadkar.jpg","url2x":"https:\/\/tdengine.com\/wp-content\/uploads\/29.03-05-cdiwadkar.jpg"},"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/posts\/21545","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/users\/81"}],"replies":[{"embeddable":true,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/comments?post=21545"}],"version-history":[{"count":8,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/posts\/21545\/revisions"}],"predecessor-version":[{"id":25596,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/posts\/21545\/revisions\/25596"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/media\/21734"}],"wp:attachment":[{"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/media?parent=21545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/categories?post=21545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/tags?post=21545"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/ppma_author?post=21545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}