Hi Xiangdong, to your second question: The use case ist he other way round. We know that we measure e.g. a voltage between 3V and 4.2V with a precision of 0.01 or something. Then its most efficient to store integers and a formula like a * x + b with e.g. b = 3 and a = 1/100. So 3V would be stored as x = 0, 3.01V -> x = 1, ... 4.2V as x = 1200. So we only store 0 to 1200 and no decimals and stuff which would be very easily compressable I thnk.
Julian Am 29.10.19, 07:13 schrieb "Xiangdong Huang" <saint...@gmail.com>: Hi, > In Java we could model it as a variable Optional<> x which could be null, Optional.empty(), Optional.of(true), Optional.of(false). It make sense. And, using a new data type to achieve in IoTDB it is ok. > Or scale formulas like a*x+b which allows to leverage the precision even for “small” double values or even integers. So, are you considering a use case like: the time series value should be [1, 1, 0, 0, 1, 1, 1, 0, 0...] but actually we get [0.99, 0.99, 0.01, 0, 1, 1, 0.999, 0, 0.01] (because of the precision of sensors)? And, what values do you want to save? (1)save them as 1 and 0. Or, (2) save them as 0.99, 0.01 indeed, but using a specific query API to return data like 1 and 0? My another question is, is there a general data type can support the above cases? Best, ----------------------------------- Xiangdong Huang School of Software, Tsinghua University 黄向东 清华大学 软件学院 Julian Feinauer <j.feina...@pragmaticminds.de> 于2019年10月29日周二 上午3:58写道: > Hi all, > > I wanted to discuss a possible new feature I will call Rich Datatypes > (RDT) API in the following. > I worked a lot in the automotive industry and there is a broadly adopted > open Standard called ASAM MDF (https://www.asam.net/standards/detail/mdf/ > ). > It is a format which is targeted at the efficient storage but at the same > time it supports VERY complex types (which are often used in automotive > controllers). > > Take something as simple as a boolean. We could store it as a boolean (as > java bool) in 1 bit. > BUT we have overall 4 possibilities: > > * No value is available for a timestamp (NULL / nothing stored) > * We had a successful request but the Controller does not know whether > true or false (or had an internal error), this is a bit like > Optional.isPresent() == false > * True > * False > In Java we could model it as a variable Optional<> x which could be null, > Optional.empty(), Optional.of(true), Optional.of(false). > > Other examples are discrete values like “ON”, “OFF” (which are handled as > “lookup tables” on integer rows, internally). > Or scale formulas like a*x+b which allows to leverage the precision even > for “small” double values or even integers. > A formula but also a “fallback” lookup value like “NV”. > > I think this could be a valuable extension to IoTDB as an additional API > (not change anything below but just provide an API on top to do the > calculation). > > What do others think? > > Julian >