IoTDB数据库详解

一、IoTDB数据库怎么念

IoTDB是指互联网物联网设备管理数据库,发音为[aiəʉti: di:bi:]。

二、IoTDB数据库源码分析

IoTDB数据库使用Java语言编写,是一个开源的、高性能的、稳定的、可靠的、分布式的时间序列数据库管理系统,主要针对大数据场景,满足业务发展需要,可以存储海量的时间序列数据,支持多种常见的数据格式。

IotDB架构采用分层结构,如下图所示:

┌───────────────────┐                  
│  IoTDB Cluster   │                  
├───────────────────┤                  
│    ZooKeeper      │                  
└─────────────┬───┬─┘                  
              │   │         ┌────────────────────────┐
┌─────────────▼───▼───┐     │    Query & Storage UI   │
│ Query and Storage  │     ├────────────────────────┤
│     Engine        ├──►  │Data API (Sync & ASync)   │
└───────────────────┘     ├────────────────────────┤
                           │    Schema API            │
                           └────────────────────────┘

在IoTDB的架构中,ZooKeeper作为分布式协调服务,提供了协调服务,有利于IoTDB的分布式集群管理。

Query and Storage Engine是IoTDB的核心部分,提供SQL查询引擎和存储引擎。SQL查询引擎支持多种查询语句,存储引擎支持多种存储格式,如BYTE, SHORT, INT, LONG, BOOLEAN, FLOAT, DOUBLE, TEXT, BSON, , BITMAP, VECTOR, ENUMS等。

IoTDB数据库的API包括Data API和Schema API,Data API支持同步和异步操作,Schema API是IotDB数据库内置了数据模型,确保存储的数据正确性。

三、IoTDB数据库双活部署

Real time处理和异地容灾需求下,IoTDB数据库需要双活部署,在数据一致性和数据可用性之间平衡。

因此,IoTDB推荐的双活部署架构如下:

┌───────────────────┐                  
│   IoTDB Cluster 1 │                  
├───────────────────┤                  
│    ZooKeeper      │                  
└─────────────┬───┬─┘                  
              │   │         ┌────────────────────────┐
┌─────────────▼───▼───┐     │    Query & Storage UI 1 │
│ Query and Storage  │     ├────────────────────────┤
│     Engine        ├──►  │Data API (Sync & ASync)   │
└───────────────────┘     ├────────────────────────┤
                           │    Schema API            │
                           └────────────────────────┘
                                                    .
                                                    .
                                                    .
┌───────────────────┐                  
│   IoTDB Cluster n │                  
├───────────────────┤                  
│    ZooKeeper      │                  
└─────────────┬───┬─┘                  
              │   │         ┌────────────────────────────┐
┌─────────────▼───▼───┐     │ Query & Storage UI (n-1)   │
│ Query and Storage  │     ├────────────────────────────┤
│     Engine        ├──►  │ Data API (Sync & ASync) n-1  │
└───────────────────┘     ├────────────────────────────┤
                           │    Schema API               │
                           └────────────────────────────┘

主要实现思路是:构建一个集群,每个集群都有自己的数据库和ZooKeeper实例。ZooKeeper实例用于管理集群成员的信息,而数据则由IoTDB存储引擎存储。

四、数据库dblink

IoTDB的dblink是它最强大的功能之一,因为它可以把不同类型、布局、格式和模式的数据集成在一起。

使用dblink需要配置连接参数,如下所示:

CREATE WRAPPER dblink_wrapper 
  DRIVER = 'org.apache.iotdb.jdbc.IoTDBDriver'
  URL_SPEC 'iotdb://localhost:6667/';

通过IoTDB驱动,可以访问IotDB上的数据,如下所示:

SELECT * FROM TABLE (dblink('iotdb', 'SELECT * FROM root.group1.device1.sl*') 
AS t (timestamp INT, measurement FLOAT));

五、IoTDB数据库基本操作

IoTDB数据库支持多种基本操作,如下所示:

1、创建时间序列存储空间

CREATE TIMESERIES root.group1.device1.temperature WITH DATATYPE=FLOAT,ENCODING=RLE;

2、插入数据

insert into root.group1.device1(timestamp, temperature) values(1587466433101, 18.1)

3、查询数据

select temperature from root.group1.device1 where time > 1587466433100 and time <1587468433101

4、删除时间序列存储空间

delete timeseries root.group1.device1.temperature

六、IoTDB数据库怎么访问

IoTDB数据库有多种方式可以进行访问,如下所示:

1、IoTDB-client

基于很小的“SQL语句”以及二进制协议构建一个IoTDB客户端,从而通过IoTDB进行数据读写。

2、JDBC

IoTDB提供官方的JDBC驱动程序,以便与主流的数据分析和处理工具(如SQL Workbench,Jupyter Notebook,SQL client)进行交互。

3、API

IoTDB提供Data API和Schema API,可以编写Java程序从IoTDB中读取和写入数据。

七、IoTDB数据库单表最大记录

IoTDB数据库的单表最大记录数量是按照存储节点来定义的,每个维度上最大可以存储2^64个数据点,即使是在单个节点的聚合数据操作中也能够保持易于扩展和高性能。因此,IoTDB的单表最大记录数量非常大。

八、数据库dateTime类型选取

在IoTDB数据库中,数据类型的选择对于性能的影响是非常大的,时间戳通常被设计为有单独的字段类型,可以使用long、datetime或timestamp类型。这些时间戳类型都可以用于索引,但是它们在存储格式和索引支持方面不同。

选择时间戳类型的另一个重要因素是性能。与标准时间戳不同,使用long作为时间戳的类型会导致更少的空间占用,并且更容易支持高级索引。

因此,在IoTDB数据库中,使用long类型的时间戳比较合适。

原创文章,作者:GMVNG,如若转载,请注明出处:https://www.506064.com/n/315639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
GMVNGGMVNG
上一篇 2025-01-09 12:13
下一篇 2025-01-09 12:13

相关推荐

  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28
  • Think-ORM数据模型及数据库核心操作

    本文主要介绍Think-ORM数据模型建立和数据库核心操作。 一、模型定义 Think-ORM是一个开源的ORM框架,用于简化在PHP应用中(特别是ThinkPHP)与关系数据库之…

    编程 2025-04-27
  • 如何使用Python将CSV文件导入到数据库

    CSV(Comma Separated Values)是一种可读性高、易于编辑与导入导出的文件格式,常用于存储表格数据。在数据处理过程中,我们有时需要将CSV文件导入到数据库中进行…

    编程 2025-04-27
  • Python批量导入数据库

    本文将介绍Python中如何批量导入数据库。首先,对于数据分析和挖掘领域,数据库中批量导入数据是一个必不可少的过程。这种高效的导入方式可以极大地提高数据挖掘、机器学习等任务的效率。…

    编程 2025-04-27
  • Activiti 6自动部署后不生成数据库act_hi_*的解决方法

    本文将从多个方面详细阐述Activiti 6自动部署后不生成数据库act_hi_*的问题,并提供对应的代码示例。 一、问题分析 在使用Activiti 6部署流程后,我们发现act…

    编程 2025-04-27
  • Python更新数据库数据

    Python更新数据库数据是一个非常实用的功能。在工作中,我们经常需要从外部获取数据,然后将这些数据保存到数据库中,或者对现有数据库中的数据进行更新。Python提供了许多库和框架…

    编程 2025-04-27

发表回复

登录后才能评论