{"id":6642,"date":"2022-07-10T01:24:42","date_gmt":"2022-07-10T08:24:42","guid":{"rendered":"https:\/\/tdengine.com\/?p=6642"},"modified":"2025-06-30T11:35:45","modified_gmt":"2025-06-30T18:35:45","slug":"dji-automotive-processes-autonomous-driving-data-in-milliseconds","status":"publish","type":"post","link":"https:\/\/tdengine.com\/dji-automotive-processes-autonomous-driving-data-in-milliseconds\/","title":{"rendered":"DJI Automotive Processes Autonomous Driving Data in Milliseconds"},"content":{"rendered":"\n<p>DJI Automotive, a subsidiary of industry-leading drone manufacturer DJI, announced its entrance into the field of autonomous driving last April. Considering the high frequency at which its smart cars report data back to the system, DJI Automotive quickly realized that a <a href=\"https:\/\/tdengine.com\/what-is-a-time-series-database\/\">time-series database<\/a> (TSDB) management system would be necessary to process this massive set of autonomous driving data.<\/p>\n\n\n\n<p>After thorough research, DJI Automotive determined that a suitable database management system (DBMS) would need to meet the following criteria:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The DBMS must be able to store tens of millions of records per table in order to contain the massive amounts of autonomous driving data that DJI Automotive will generate.<\/li>\n\n\n\n<li>The DBMS must be able to quickly filter this huge data set by means of aggregate functions.<\/li>\n\n\n\n<li>The DBMS must support clustering for high availability and backup functionality.<\/li>\n\n\n\n<li>The DBMS must use an industry-standard query language so that technical personnel can use the system without special training.<\/li>\n<\/ul>\n\n\n\n<p>With its relatively recent entrance into the market, DJI Automotive was not particularly burdened by legacy data, and all database solutions were on the table. In the end, DJI Automotive chose TDengine to process its time-series data.<\/p>\n\n\n\n<p>In addition to meeting the four criteria listed above, TDengine also provides strong compression capabilities, enables high concurrency, and reduces O&amp;M costs. It is open-source software and even its community edition supports clustering. Finally, the TDengine concept of &#8220;one table per device&#8221; provides a database structure that is particularly suited to DJI Automotive &#8211; the data for each vehicle is stored in a separate table.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-4f9b3602 gb-headline-text\">Table Creation in TDengine<\/h2>\n\n\n\n<p>In DJI Automotive&#8217;s solution, a cloud platform monitors vehicle status information, such as GPS coordinates, speed, RPM, and mileage. This information is streamed over MQTT to a TDengine cluster, where it is stored for real-time monitoring or for replaying at a later date.<\/p>\n\n\n\n<p>The following is an example of the data collected:<\/p>\n\n\n\n<pre class=\"wp-block-code language-json\"><code class=\"\" data-line=\"\">{&quot;message_id&quot;: &quot;a78b6d9a&quot;,&quot;device_key&quot;: &quot;deviceKey2&quot;,&quot;ts&quot;: &quot;2022-03-01 15:01:59&quot;,&quot;longitude&quot;: 123.9795647512915,&quot;latitude&quot;: 21.58338210717887,&quot;altitude&quot;: 51.47800064086914,&quot;signal_strength&quot;: 12,&quot;satellites_in_view&quot;: 21,&quot;speed&quot;: 72.798225,&quot;acceleration&quot;: 12,&quot;rpm&quot;:2190,&quot;gear&quot;: &quot;D&quot;,&quot;direction&quot;: -91.32959,&quot;mileage&quot;: 10020,&quot;ip&quot;: &quot;10.1.2.3&quot;,&quot;create_time&quot;: &quot;2022-03-01 15:02:03&quot;,}<\/code><\/pre>\n\n\n\n<p>To store this data, DJI Automotive defined two supertables: <code class=\"\" data-line=\"\">device_stat<\/code> to store metrics reported by vehicles and <code class=\"\" data-line=\"\">mqtt_msg<\/code> to store MQTT messages.<\/p>\n\n\n\n<figure class=\"gb-block-image gb-block-image-65c9c0b4\"><img decoding=\"async\" width=\"595\" height=\"245\" class=\"gb-image gb-image-65c9c0b4\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-01-supertable.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-01-supertable.png?strip=all&amp;sharp=1 595w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-01-supertable-300x124.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-01-supertable.png?strip=all&amp;sharp=1&amp;w=119 119w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-01-supertable.png?strip=all&amp;sharp=1&amp;w=238 238w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-01-supertable.png?strip=all&amp;sharp=1&amp;w=357 357w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-01-supertable.png?strip=all&amp;sharp=1&amp;w=476 476w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<p>The structure of the <code class=\"\" data-line=\"\">mqtt_msg<\/code> supertable is shown in the following figure.<\/p>\n\n\n\n<figure class=\"gb-block-image gb-block-image-daced1a3\"><img decoding=\"async\" width=\"595\" height=\"259\" class=\"gb-image gb-image-daced1a3\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-02-schema.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-02-schema.png?strip=all&amp;sharp=1 595w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-02-schema-300x131.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-02-schema.png?strip=all&amp;sharp=1&amp;w=119 119w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-02-schema.png?strip=all&amp;sharp=1&amp;w=238 238w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-02-schema.png?strip=all&amp;sharp=1&amp;w=357 357w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-02-schema.png?strip=all&amp;sharp=1&amp;w=476 476w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<p>For each vehicle, one subtable is created in <code class=\"\" data-line=\"\">device_stat<\/code> and one in <code class=\"\" data-line=\"\">mqtt_msg<\/code> to hold all of the data for that vehicle. These sub-tables are created using the <code class=\"\" data-line=\"\">DeviceKey<\/code> field as a unique identifier, for example <code class=\"\" data-line=\"\">device_stat_$deviceKey<\/code>.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-924fda39 gb-headline-text\">Architecture and Migration<\/h2>\n\n\n\n<p>At present, DJI Automotive is running TDengine 2.2.1.3 on a single machine. The TDengine deployment is described in the following two figures.<\/p>\n\n\n\n<figure class=\"gb-block-image gb-block-image-cdd6fe40\"><img decoding=\"async\" width=\"595\" height=\"122\" class=\"gb-image gb-image-cdd6fe40\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-03-tdengine.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-03-tdengine.png?strip=all&amp;sharp=1 595w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-03-tdengine-300x62.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-03-tdengine.png?strip=all&amp;sharp=1&amp;w=119 119w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-03-tdengine.png?strip=all&amp;sharp=1&amp;w=238 238w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-03-tdengine.png?strip=all&amp;sharp=1&amp;w=357 357w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-03-tdengine.png?strip=all&amp;sharp=1&amp;w=476 476w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<figure class=\"gb-block-image gb-block-image-18abe3fc\"><img decoding=\"async\" width=\"565\" height=\"175\" class=\"gb-image gb-image-18abe3fc\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-04-vgroups.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-04-vgroups.png?strip=all&amp;sharp=1 565w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-04-vgroups-300x93.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-04-vgroups.png?strip=all&amp;sharp=1&amp;w=113 113w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-04-vgroups.png?strip=all&amp;sharp=1&amp;w=226 226w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-04-vgroups.png?strip=all&amp;sharp=1&amp;w=452 452w\" sizes=\"(max-width: 565px) 100vw, 565px\" \/><\/figure>\n\n\n\n<p>The overall system and the components that work together with TDengine are shown in the following figure.<\/p>\n\n\n\n<figure class=\"gb-block-image gb-block-image-d3696762\"><img decoding=\"async\" width=\"5210\" height=\"2693\" class=\"gb-image gb-image-d3696762\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new.png?strip=all&sharp=1\" alt=\"\" title=\"dji-flow-new\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new.png?strip=all&amp;sharp=1 5210w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new-300x155.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new-1024x529.png?strip=all&amp;sharp=1 1024w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new-768x397.png?strip=all&amp;sharp=1 768w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new-1536x794.png?strip=all&amp;sharp=1 1536w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new-2048x1059.png?strip=all&amp;sharp=1 2048w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new.png?strip=all&amp;sharp=1&amp;w=3126 3126w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new.png?strip=all&amp;sharp=1&amp;w=4168 4168w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new.png?strip=all&amp;sharp=1&amp;w=450 450w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/dji-flow-new.png?strip=all&amp;sharp=1&amp;w=1920 1920w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>In this architecture, vehicles send their information to the MQTT broker. The application also sends commands to vehicles through the MQTT broker. The MQTT streams sent between devices and the cloud and between the cloud and the application are forwarded to a Kafka message queue, from which they are consumed by the business system. The system resolves these messages into a TraceID and a message ID, version, type, timestamp, and body. All of these items are stored in the mqtt_msg supertable in TDengine.<\/p>\n\n\n\n<p>For the time being, data is written into both TDengine and MySQL databases, which map to each other. In this way, historical data is migrated to TDengine by means of log replay. The two databases act as backups for each other in the present architecture, but once the migration to TDengine has been completed, a TDengine cluster with multiple nodes will be used for backups.<\/p>\n\n\n\n<p>The TDengine team indicated that data could also be migrated in CSV format or by using the open-source database migration tool DataX. The <code class=\"\" data-line=\"\">TDengineReader<\/code> and <code class=\"\" data-line=\"\">TDengineWriter<\/code> plug-ins for DataX make migrating from a relational database to TDengine a simple process of modifying JSON configuration files as appropriate.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-4ab933b2 gb-headline-text\">Performance<\/h2>\n\n\n\n<p>TDengine has made querying real-time status information a much simpler process. DJI Automotive commonly uses the following SQL statements to obtain needed information:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>To query the latest position reported by a single vehicle:<br><code class=\"\" data-line=\"\">select last_row(*) from device_stat_deJgTAEzInsZeGLM\\G;<\/code><br><img decoding=\"async\" width=\"595\" height=\"304\" class=\"wp-image-12298\" style=\"\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-06-query-1.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-06-query-1.png?strip=all&amp;sharp=1 595w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-06-query-1-300x153.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-06-query-1.png?strip=all&amp;sharp=1&amp;w=119 119w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-06-query-1.png?strip=all&amp;sharp=1&amp;w=238 238w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-06-query-1.png?strip=all&amp;sharp=1&amp;w=357 357w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-06-query-1.png?strip=all&amp;sharp=1&amp;w=476 476w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/li>\n\n\n\n<li>To query the latest position reported by multiple vehicles:<br><code class=\"\" data-line=\"\">select last_row(*) from device_stat where device_key in (&#039;mpVOGpaHqAxGiHWo&#039;,&#039;HEChzTCZeIWSUysB&#039;,&#039;HgsIdzvJPeFlVDuT&#039;,&#039;LVaPHOXkEeTGjTpm&#039;,&#039;PFHnQCkcXCIBnbsC&#039;) group by device_key;<\/code><br><img decoding=\"async\" width=\"595\" height=\"263\" class=\"wp-image-12299\" style=\"\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-07-query-2.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-07-query-2.png?strip=all&amp;sharp=1 595w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-07-query-2-300x133.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-07-query-2.png?strip=all&amp;sharp=1&amp;w=119 119w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-07-query-2.png?strip=all&amp;sharp=1&amp;w=238 238w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-07-query-2.png?strip=all&amp;sharp=1&amp;w=357 357w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-07-query-2.png?strip=all&amp;sharp=1&amp;w=476 476w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><br>In TDengine, it is very easy to query data for a period of time in the past and analyze it on the front end:<br><code class=\"\" data-line=\"\">select * from device_stat_mpVOGpaHqAxGiHWo where ts &gt;&#039;2022-03-17 00:00:00&#039; and ts &lt; &#039;2022-03-18 00:00:00&#039;;<\/code><br><img decoding=\"async\" width=\"595\" height=\"244\" class=\"wp-image-12300\" style=\"\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-08-query-3.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-08-query-3.png?strip=all&amp;sharp=1 595w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-08-query-3-300x123.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-08-query-3.png?strip=all&amp;sharp=1&amp;w=119 119w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-08-query-3.png?strip=all&amp;sharp=1&amp;w=238 238w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-08-query-3.png?strip=all&amp;sharp=1&amp;w=357 357w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-08-query-3.png?strip=all&amp;sharp=1&amp;w=476 476w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/li>\n\n\n\n<li>To trace an MQTT stream (by querying the latest message received by the MQTT broker):<br><code class=\"\" data-line=\"\">select last_row(*) from mqtt_msg\\G;<\/code><br><img decoding=\"async\" width=\"595\" height=\"151\" class=\"wp-image-12301\" style=\"\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-09-query-4.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-09-query-4.png?strip=all&amp;sharp=1 595w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-09-query-4-300x76.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-09-query-4.png?strip=all&amp;sharp=1&amp;w=119 119w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-09-query-4.png?strip=all&amp;sharp=1&amp;w=238 238w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-09-query-4.png?strip=all&amp;sharp=1&amp;w=357 357w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-09-query-4.png?strip=all&amp;sharp=1&amp;w=476 476w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/li>\n\n\n\n<li>To trace information based on the request ID:<br><code class=\"\" data-line=\"\">select * from mqtt_msg where request_id = &#039;f90c46d4-22a3-4ab9-b50a-aad8b237fc57&#039;\\G;<\/code><br><img decoding=\"async\" width=\"595\" height=\"289\" class=\"wp-image-12302\" style=\"\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-10-query-5.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-10-query-5.png?strip=all&amp;sharp=1 595w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-10-query-5-300x146.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-10-query-5.png?strip=all&amp;sharp=1&amp;w=119 119w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-10-query-5.png?strip=all&amp;sharp=1&amp;w=238 238w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-10-query-5.png?strip=all&amp;sharp=1&amp;w=357 357w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-10-query-5.png?strip=all&amp;sharp=1&amp;w=476 476w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/li>\n\n\n\n<li>To query information based on time:<br><code class=\"\" data-line=\"\">select * from mqtt_msg where ts &gt;&#039;2022-03-18 12:00:00&#039; and ts &lt; &#039;2022-03-18 13:00:00&#039;;<\/code><br><img decoding=\"async\" width=\"595\" height=\"243\" class=\"wp-image-12303\" style=\"\" src=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-11-query-6.png?strip=all&sharp=1\" alt=\"\" srcset=\"https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-11-query-6.png?strip=all&amp;sharp=1 595w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-11-query-6-300x123.png?strip=all&amp;sharp=1 300w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-11-query-6.png?strip=all&amp;sharp=1&amp;w=119 119w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-11-query-6.png?strip=all&amp;sharp=1&amp;w=238 238w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-11-query-6.png?strip=all&amp;sharp=1&amp;w=357 357w, https:\/\/eujqw4hwudm.exactdn.com\/wp-content\/uploads\/22.048-11-query-6.png?strip=all&amp;sharp=1&amp;w=476 476w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/li>\n<\/ol>\n\n\n\n<p>These examples show that TDengine has implemented lightweight querying for the types of data that this use case required. The results of these queries were all returned in milliseconds, and even a query of over 30,000 records returned results in only 1.1 ms.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-fd2ee0c2 gb-headline-text\">Conclusion<\/h2>\n\n\n\n<p>DJI Automotive chose TDengine as the time-series database management system for its autonomous driving cloud platform and has been completely satisfied with its experience. TDengine has reduced storage and training costs at DJI Automotive while also showing excellent read and write performance.<\/p>\n\n\n\n<p>In the future, as DJI Automotive continues to research and explore time-series and spatial data, it is hoped that TDengine can be further improved to include the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Better support and new features for reading and writing spatial data<\/li>\n\n\n\n<li>More authentication and authorization mechanisms for finer-grained permissions management<\/li>\n\n\n\n<li>More systematic logging options for better troubleshooting<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This case study examines how TDengine enabled high-performance, low-cost processing of autonomous driving data at DJI Automotive.<\/p>\n","protected":false},"author":81,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[23,233,268],"tags":[],"ppma_author":[167],"class_list":["post-6642","post","type-post","status-publish","format-standard","hentry","category-case-studies","category-connected-cars","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\/6642","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=6642"}],"version-history":[{"count":7,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/posts\/6642\/revisions"}],"predecessor-version":[{"id":26250,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/posts\/6642\/revisions\/26250"}],"wp:attachment":[{"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/media?parent=6642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/categories?post=6642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/tags?post=6642"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/tdengine.com\/wp-json\/wp\/v2\/ppma_author?post=6642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}