You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@iotdb.apache.org by "Tian Jiang (Jira)" <ji...@apache.org> on 2021/06/09 03:16:00 UTC

[jira] [Created] (IOTDB-1431) Unify and enhance data model related documents

Tian Jiang created IOTDB-1431:
---------------------------------

             Summary: Unify and enhance data model related documents
                 Key: IOTDB-1431
                 URL: https://issues.apache.org/jira/browse/IOTDB-1431
             Project: Apache IoTDB
          Issue Type: Improvement
          Components: Document
            Reporter: Tian Jiang


In IoTDB, there are two interchangeable concepts: *_sensor_*, *_measurement_*. Both of them are the names of physical variables recorded by a timeseries, like "temperature", "pressure", "voltage". Together with another important concept, *_device_*, a timeseries is described. A *_device_* is the full name of a physical entity that collects timeseries data, for example, "root.BJ.ServerRoom001.Server007" describes a computer whose Id is 007 in a server room with an Id of 001 in Beijing. Put together, *_device_* + *_measurement_* describes the full name of a timeseries, which is a collection of observations and the observed timestamps, for example, timeseries "root.BJ.ServerRoom001.Server007.CPU0.Core0_Utility" stores the utility of a CPU core of a computer mentioned above. 

To make it simple:
*_sensor_*=*_measurement_*=the name of an observation
*_device_*=the name of an entity that collects data with timestamp
*_timeseries_*=device + measurement=an observation taken by a specific entity

It should be noticed that a *_device_* in IoTDB must collect data itself, which means having *_measurements_* directly under it, and this may conflict with some intuition. For example, we can model the utility of CPU cores like "root.BJ.ServerRoom001.Server007.CPU0.Core0_Utility", but the *_device_* is "root.BJ.ServerRoom001.Server007.CPU0" and "root.BJ.ServerRoom001.Server007" is not a *_device_* in IoTDB as it does not collect data directly. From the point of view of asset management, "root.BJ.ServerRoom001.Server007" is certainly another type of device, but IoTDB focuses on timeseries management instead of asset management, so we have a different definition of *_device_*. It is currently advised to cope with a relational DBMS for asset management instead of completely relying on IoTDB.

In practice, a real sensor is a device itself, so the name *_sensor_* is very confusing. I would like to propose that we replace all *_sensor_* occurrences with *_measurement_*.

*_measurement_* is also used in other systems like InfluxDB, but has a totally different meaning, as measurement in InfluxDB is more like the table name in a relational DBMS. For a viable schema mapping, one can refer to the following:
measurement(IoTDB)=field(InfluxDB)=non-indexed columns(relational DB)
device(IoTDB)=measurement+tags(Influxdb)=indexed columns(relational DB)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)