iotdb

Activity, over time

Daily observations from the public event archive.

Attention

Daily stars & forks

Loading attention chart

Star accumulation

Cumulative stars

Loading star accumulation chart

Pull requests

Daily opens & merges

Loading pull requests chart

Conversations

Daily issues & comments

Loading conversations chart

Community

Daily accounts & reviews

Loading community chart

Releases

Daily releases

Loading releases chart

Mentions

5posts · 30d
Nov 30 posts
  1. Time-series databases help answer questions such as: What changed in the last hour? Which sensors crossed a threshold? How did a process trend this week? Apache IoTDB database supports time-series data querying and analysis. #ApacheIoTDB #Data apache/iotdb

    1 like · 4 views
  2. DEV · · @timecho

    Your First Time-Range Query: A Practical Starting Point for Apache IoTDB > Start with one device, one measurement, and a clear interval to turn time-series history into an answerable question. Most time-series questions start with a window: what happened to this device between two points in time? An operator may want to inspect a temperature change during a shift. An engineer may need to review vibration before a maintenance event. A developer may be building a chart that shows how a signal moved over the last hour. In each case, “give me the data” is not specific enough. The query needs a subject, a measurement, and a time interval. Apache IoTDB supports time-oriented queries over IoT measurements. A time-range query is a small building block, but it is also a useful way to make a larger data question precise. Turn the question into a query scope Before writing SQL, identify three things: - Which asset or device? Narrow the query to the equipment relevant to the question. - Which measurement? Choose the signal that helps answer it, such as temperature or vibration. - Which time window? State both the start and end of the period you want to inspect. For example, “How did motor temperature behave during the last hour?” is more actionable than “Show me the motor data.” It identifies an asset, a measurement, and a bounded interval. If the purpose is troubleshooting, the interval might be the period before and after an event. If it is routine monitoring, it might match a shift or operating window. This framing also helps prevent accidental over-fetching. A query that has no clear time boundary may return more history than the chart, investigation, or application needs. A bounded range makes the intent easier to review and the result easier to handle. A basic Apache IoTDB time filter The following example uses the Tree model and an illustrative device path. Replace the path and measurement with names from your own schema: SELECT temperature FROM root.factory.line1.motor1 WHERE time >= now() - 1h This asks for temperature observations from the last hour for one device. The filter uses the time column to restrict the query window. For a historical investigation, use explicit start and end values appropriate to the target IoTDB release and the timestamp precision configured in the environment. The example is intentionally small. It does not aggregate the readings, interpolate missing points, or combine devices. Those are different analytical decisions and should be added only when the question requires them. Choose boundaries deliberately A time range is part of the meaning of a query. “The last hour” is useful for a live view, but a fixed interval can be easier to reproduce during an investigation. Whichever form you choose, decide whether the beginning and end are inclusive, and keep that choice consistent across adjacent queries. Boundary behavior matters when data is divided into windows. If one query ends at the same timestamp where the next begins and both include the boundary, a point can appear twice. If both exclude it, the point may be missed. A common design is to use a half-open interval: include the start, exclude the end. Verify that the syntax and application logic match the convention you choose. Also distinguish event time from arrival time. A record received during the selected hour may describe an observation from earlier. If the task is to understand equipment behavior, the query should follow the event timestamp preserved by the ingestion path, not silently substitute processing time. Keep the device and measurement scope readable Time-range queries are easier to debug when the path is explicit. A device-oriented path such as root.factory.line1.motor1 communicates which equipment the query addresses. A measurement name such as temperature states what is being retrieved. In an application, do not concatenate unchecked user input into a query. Validate device paths and measurement names against an allowed schema or metadata source. Validate the requested time bounds and reject ranges that exceed the product or application policy. These are application safeguards around query construction; they are not a replacement for database permissions. For a query over several devices, first define what the result should mean. Do you want separate histories for each asset, or do you want measurements aligned for comparison? The answer may affect how the application structures the request and presents the returned timestamps. Avoid combining paths simply because they share a chart. From a query result to an operational answer Returning rows is only the first step. The client should preserve timestamps when it converts results into chart points, API responses, or exported data. Sorting and timezone presentation should be consistent with the application’s timestamp policy. If the query returns no rows, the interface should distinguish “no observations in this interval” from “the device or measurement was not found.” For larger ranges, decide whether the user needs raw readings or a summary. A trend chart may need every point for a short period; a longer report may be better served by a time-window aggregation. Aggregation changes the question from “what values were recorded?” to “what summary describes each window?” That deserves a separate query design rather than an invisible transformation. Conclusion A time-range query is most useful when it expresses a concrete question. Select the device, choose the measurement, define the interval, and preserve the timestamp meaning through the client application. That gives operators and developers a clear starting point for retrieving and investigating IoT history. Apache IoTDB is an open-source time-series database for IoT workloads. Explore the project and its current query guidance in the Apache IoTDB GitHub repository. !Image description

    5 reactions
  3. Check official site & GitHub for documentation & source code: iotdb.apache.org apache/iotdb More beginner‑focused content coming soon.

    14 views
  4. DEV · · @timecho

    How to Design an IoT Data Pipeline for Multi-Frequency Measurements A connected machine may produce vibration readings many times per second, temperature readings every few seconds, power measurements every minute, and state changes only when an event occurs. All of these signals describe the same asset. They do not need to share the same sampling rate. For developers, the challenge is to keep each stream faithful to its source while still making cross-sensor queries possible. This article presents a practical design and test framework for that problem, using Apache IoTDB as the time-series data foundation. 1. Model observations, not empty grid cells Start with the observation that actually occurred: device: motor-07 measurement: temperature event_time: 2026-10-13T09:30:05Z value: 62.4 The important fields are the device, the measurement, the event timestamp, and the value. Metadata such as units, sensor type, location, and quality flags may also be important to the application. Do not begin by creating a universal timeline and treating every unoccupied cell as missing. If temperature is collected every five seconds, there is no missing temperature reading at each vibration timestamp between those observations. No reading was scheduled there. This gives us the first rule: > Preserve the native observation timeline before creating a shared analytical timeline. 2. Write down the cadence of every signal A simple inventory exposes the shape of the workload: | Measurement | Expected cadence | Arrival pattern | Main use | |---|---:|---|---| | vibration | high frequency | continuous, possibly buffered | inspect short events | | temperature | every few seconds | mostly regular | monitor gradual change | | power | every minute | regular or batch | compare operating periods | | operating_state | event-driven | only on change | mark context | These values are illustrative rather than a recommended configuration. The correct frequencies come from the sensors and the engineering use case. For each measurement, record: - the expected sampling cadence; - whether arrival can be delayed or batched; - the timestamp supplied by the source; - how long native-resolution data must remain available; - the queries that will use the signal. This inventory prevents the fastest signal from defining the schema and retention policy for every other measurement. 3. Separate sampling time from arrival behavior Multi-frequency data and out-of-order data are different problems, although they often appear together. - Sampling frequency describes how often a source observes a value. - Event time describes when the observation occurred. - Arrival behavior describes when and in what order the platform received it. A gateway may collect vibration and temperature locally, lose connectivity, and upload a batch later. The measurements still belong to their original event times. If the pipeline uses arrival order as the physical timeline, historical analysis can become misleading. Keep any ingestion timestamp or pipeline timestamp separate from the event timestamp when the application needs both. One supports operational monitoring of the data path; the other represents the measured process. 4. Store native resolution before deriving common windows It is tempting to resample every signal during ingestion. That can simplify one dashboard, but it also commits the whole system to one analytical choice. A safer default is: sensor observations ↓ native time-series storage ↓ query-specific alignment or aggregation ↓ dashboard / investigation / model input This structure keeps the source observations available while allowing multiple derived views. For example: - A live dashboard might use one-minute aggregates. - A vibration investigation might retain the original high-frequency samples. - A weekly report might compare hourly summaries. - A model pipeline might use a defined resampling interval and explicit missing-value policy. The analytical interval is part of the query or downstream transformation, not a universal property of the asset. 5. Choose alignment semantics explicitly When two signals are compared, define what it means for their timestamps to “match.” Several approaches are possible: - aggregate observations into fixed windows; - select the most recent observation before a boundary; - use a nearest observation within an allowed tolerance; - interpolate a value according to a documented method; - keep the series separate and compare trends rather than individual points. The right choice depends on the signal. Carrying a device state forward may be reasonable because the state remains active until it changes. Carrying a rapidly changing sensor value forward can be misleading. Interpolation may be useful for visualization but inappropriate when the application must distinguish measured values from estimates. Every derived value should have clear semantics. If the application needs traceability, keep recorded observations distinguishable from aggregated or interpolated results. 6. Use Apache IoTDB as the time-series foundation Apache IoTDB is an open-source, IoT-native time-series database for connected-device workloads. It supports multi-frequency and out-of-order ingestion, historical and real-time data management, timestamp alignment, aggregation, and time-series functions. !Image description For a multi-frequency pipeline, these capabilities support a practical separation of concerns: 1. Devices and gateways produce observations at their own cadences. 2. Apache IoTDB stores the measurements with their device and time context. 3. Queries or downstream applications create the alignment and aggregation needed for a specific task. Apache IoTDB does not choose the engineering meaning of an aligned value. Developers still need to define windows, tolerances, interpolation rules, and quality handling according to the application. Exact SQL syntax and available functions can vary by release and data model, so implementation examples should be checked against the documentation for the version being evaluated. 7. Build a small validation dataset Before testing at scale, create a dataset whose correct result is easy to inspect. Use three signals: temperature: one observation every 5 seconds power: one observation every 60 seconds state: event-driven changes Add a few realistic conditions: - delay one temperature reading; - upload one short batch after a simulated reconnect; - omit a scheduled observation; - include a state transition between two power readings; - retain the expected output for each test query. Then verify: Native retrieval Can each series be retrieved with its original event timestamps and values? Windowed aggregation Can temperature and power be summarized into a shared window without altering the stored source observations? State context Can the application determine which operating state applied during a selected time range? Late data Does a delayed reading appear in the time range where the event occurred? Missing versus unscheduled Can the application distinguish a missing scheduled temperature reading from the normal absence of temperature points between scheduled samples? This small test catches semantic errors that a large throughput test can miss. 8. Review the design before production Use this checklist before connecting a production source: - [ ] Every measurement has a defined event timestamp. - [ ] Expected sampling cadence is documented per signal. - [ ] Unscheduled timestamps are not automatically classified as missing data. - [ ] Arrival time is separated from event time where required. - [ ] Native-resolution observations remain available for the required period. - [ ] Aggregation windows match their operational questions. - [ ] Interpolated and recorded values can be distinguished when necessary. - [ ] Delayed and out-of-order data are included in validation tests. - [ ] Version-specific Apache IoTDB behavior is checked before deployment. Conclusion Multi-frequency telemetry is a normal property of connected systems. A pipeline becomes easier to reason about when it preserves each sensor's native observations and creates shared timelines only for defined analytical purposes. Apache IoTDB provides an open-source time-series foundation for ingesting, storing, and analyzing data that arrives at different frequencies and sometimes out of order. The most useful evaluation is one built from your actual signal cadences, event-time rules, and query patterns. Explore the Apache IoTDB GitHub repository and start with a small multi-frequency dataset whose expected results you can verify.

    5 reactions
  5. Apache IoTDB is built in the open, with project development and releases guided by its community. Learn about the Apache IoTDB database on GitHub. #ApacheIoTDB #OpenSource apache/iotdb

    5 views

Latest stargazers

The last 10 distinct accounts we observed this year.

Most active participants

PR, issue, comment & review events in the past year.

Packages

2
PackageVersionDownloads · 30dTrend · 30d
v2.0.11
≥4K
———

README badges

Embed a badge in your README or website.

  • apache/iotdb reached #3 in daily stars on gitwal · Sep 13, 2024
Live mentions · last 30 days
apache/iotdb mentions in the last 30 days