Time-series data represents observations indexed by time. A record usually contains a timestamp, one or more measured values, and dimensions identifying the source or context. For example, a temperature reading might contain an event timestamp, a temperature value, a device identifier, and a building identifier. Measurements can arrive at regular intervals or irregularly; a fixed sampling frequency is not required.
The defining characteristic is how applications use the data. Typical queries request the last hour of readings, calculate average CPU utilization per five-minute interval, compare today's traffic with last week's traffic, or identify a change in equipment behavior. These workloads often combine sustained ingestion with time-range filtering and aggregation. A purpose-built time-series database can optimize these patterns through time-aware indexing, compression, retention controls, and specialized query functions, although capabilities vary by engine.
In a cloud architecture, devices or applications send observations directly to a database or through a streaming ingestion layer. Engineers should distinguish event time, when an observation occurred, from ingestion time, when the platform received it. Network delays, disconnected devices, retries, and clock errors can produce late, duplicate, or out-of-order observations. Choose timestamp precision, deduplication rules, and late-arrival handling explicitly rather than assuming records arrive chronologically. UTC timestamps generally simplify processing across regions and daylight-saving changes.
Cost optimization starts with ingestion volume, query frequency, retention, and required latency. A factory might retain raw one-second readings for seven days, one-minute summaries for three months, and hourly summaries for several years. Downsampling reduces storage and query work, but summaries cannot reproduce every raw-data investigation. Retain statistics appropriate to the requirement: an average alone can hide short-lived spikes, while minimum and maximum values preserve some evidence of them.
Recent measurements may need a database that supports frequent, low-latency queries, while older observations can be stored economically in object storage. Partitioning historical files by suitable time intervals and storing them in compressed columnar formats such as Parquet can reduce analytical scan costs. Avoid excessive small files and excessively granular partitions, which add overhead. Queries should filter on relevant time ranges and partition columns so the engine can skip unrelated data.
Time-series data and columnar storage are not competing categories. Time-series describes the data and its access pattern; columnar describes a physical storage layout. The same sensor history can reside in a time-series database for operational queries and in columnar files for historical analytics. A columnar warehouse can also analyze timestamped observations, especially when broad scans and joins matter more than immediate access to individual recent measurements.
A timestamp column alone does not justify selecting a specialized database. An order-processing application may still need relational transactions, constraints, and joins even though every order has a creation time. Conversely, large volumes of append-oriented telemetry with time-window aggregations are a strong signal to evaluate time-series storage. Compare total ingestion, storage, query, backup, availability, and operational costs. Also test dimension cardinality: large numbers of unique label combinations can increase indexing and memory requirements in some engines.