ApiaryActive
Try: pause · settings · learn · wipe
← Community / Reading Room
CD
knowledge · 18 min read

Cassandra Database Management

Cassandra has been called “the database that never sleeps.” Its origins lie in the need for a highly available, horizontally scalable store that could survive…

Cassandra has been called “the database that never sleeps.” Its origins lie in the need for a highly available, horizontally scalable store that could survive the loss of an entire data center without compromising user experience. Today, that same resilience powers everything from global e‑commerce platforms to real‑time analytics pipelines that feed AI agents monitoring honey‑bee colonies. For teams that care about data—whether to protect endangered pollinators or to power autonomous decision‑makers—understanding how to manage Cassandra is as vital as the data itself.

In a world where a single millisecond of latency can tip the balance between a bee‑hive health alert arriving on time or too late, Cassandra’s design choices (peer‑to‑peer architecture, tunable consistency, immutable data files) directly influence the reliability of downstream services. This pillar article walks you through every major facet of Cassandra database management: from the low‑level mechanics of data distribution to the high‑level practices that keep a cluster humming. You’ll find concrete numbers, real‑world examples, and practical recommendations that you can apply whether you’re running a three‑node test cluster in a lab or a multi‑region production deployment serving billions of rows per day.


1. Cassandra Architecture at a Glance

Cassandra’s architecture is deliberately decentralized. Every node in a cluster plays the role of both coordinator and replica; there is no single master that can become a bottleneck or a single point of failure. The core components are:

ComponentFunctionTypical Size / Throughput
PartitionerMaps a primary key to a token range using a deterministic hash (default: Murmur3Partitioner).Handles billions of keys; token range is a 64‑bit integer.
Commit LogSequential write‑ahead log guaranteeing durability.Writes at ~200 k writes/sec on SSDs; flushes every 10 s by default.
MemtablesIn‑memory write buffers that are flushed to SSTables.Size configurable; common defaults 128 MiB – 1 GiB.
SSTablesImmutable on‑disk sorted string tables.Read latency ~0.5 ms per 10 k rows when cached.
Gossip ProtocolPeer discovery and failure detection.Heartbeat every 1 s, failure suspicion after 3 missed heartbeats.
SnitchDetermines network topology for routing (e.g., SimpleSnitch, GossipingPropertyFileSnitch).Influences replica placement across racks / data centers.

When a client issues a write, the coordinator node appends the mutation to its commit log, updates its memtable, and then forwards the mutation to the required replicas based on the replication factor (RF). Reads follow a similar path: the coordinator contacts the replicas, merges the results according to the requested consistency level, and returns the most recent data.

Because all data is partitioned by token, Cassandra can spread rows evenly across nodes, avoiding hot spots that plague traditional relational databases. This even distribution is why a 30‑node cluster can comfortably serve 10 M writes/second with sub‑millisecond latency when tuned correctly—a figure that matches the ingest rates of many IoT sensor networks monitoring bee activity.

Cross‑link: For a deeper dive into token allocation, see cassandra-token-management.

2. Data Modeling and Partitioning

A well‑designed data model is the foundation of a performant Cassandra deployment. Unlike relational databases, Cassandra encourages denormalization and query‑driven modeling. Here are the key steps:

2.1 Choose the Primary Key Wisely

The primary key consists of a partition key (determines node placement) and optional clustering columns (determine sort order within a partition).

Example: A hive‑monitoring service stores temperature readings per hive.

CREATE TABLE hive_temperature (
    hive_id uuid,
    day date,
    hour int,
    minute int,
    temperature float,
    PRIMARY KEY ((hive_id, day), hour, minute)
);
  • Partition key (hive_id, day) ensures all readings for a given hive on a particular day reside on the same node(s).
  • Clustering columns hour, minute provide chronological ordering, enabling range scans like “all readings between 10:00 and 12:00”.

2.2 Avoid Hot Partitions

If a single partition receives more than a few hundred megabytes of data, compaction and read performance degrade. In the bee‑monitoring example, a wide row could exceed 2 GB if you store raw sensor streams per day. Mitigate this by bucketing time (e.g., hourly instead of daily) or sharding by an additional dimension (e.g., sensor type).

2.3 Use Materialized Views Sparingly

Cassandra’s materialized views automatically maintain secondary indexes, but they add write overhead and can become inconsistent under heavy write loads. For high‑throughput pipelines (e.g., >500 k writes/sec), prefer manual denormalization using application‑side writes.

2.4 Leverage Collections and User‑Defined Types (UDTs)

Collections (list, set, map) and UDTs allow you to store structured data without exploding the schema. However, a collection larger than a few thousand elements can cause read amplification because the entire collection is stored in a single cell. Keep collections under 1 k elements for best performance.

Cross‑link: For a step‑by‑step guide to modeling time‑series data, see cassandra-time-series.

3. Replication Strategies & Consistency Levels

Cassandra’s replication factor (RF) and consistency level (CL) give you fine‑grained control over durability, latency, and fault tolerance.

Replication StrategyDescriptionTypical Use‑Case
SimpleStrategyPlaces replicas on the next RF‑1 nodes in the ring.Single‑DC dev clusters (RF = 1‑3).
NetworkTopologyStrategyAllows per‑DC replica counts; respects rack awareness.Multi‑DC production (e.g., RF = 3 in US‑East, 2 in EU‑West).
LocalStrategyReplicates only within the local data center.Edge‑computing nodes that never cross DC boundaries.

3.1 Consistency Levels in Practice

CLGuaranteesTypical Latency Impact
ONEAt least one replica acknowledges.Fastest; ~0.5 ms on SSD.
QUORUMMajority of replicas (⌈RF/2⌉) respond.Balanced; adds ~1 ms per extra replica.
LOCAL_QUORUMMajority within the local DC only.Ideal for multi‑DC setups; avoids cross‑DC latency.
ALLEvery replica must respond.Highest durability; latency spikes if any node lags.
SERIAL / LOCAL_SERIALUsed for lightweight transactions (LWT).Adds ~5‑10 ms due to Paxos round‑trip.

Example: A bee‑health alert service uses LOCAL_QUORUM for writes (RF = 3) to guarantee that at least two replicas in the same data center have persisted the alert, while reads use ONE to minimize latency for dashboards that poll data every few seconds.

3.2 Calculating Fault Tolerance

A cluster with RF = 3 can tolerate one node failure without losing availability at CL = QUORUM. With NetworkTopologyStrategy and a per‑DC RF of 3, the system can survive an entire rack outage while still serving reads at LOCAL_QUORUM. This mirrors the way a bee colony distributes critical tasks across many workers; losing a few individuals does not cripple the hive.

Cross‑link: For a detailed breakdown of consistency trade‑offs, see cassandra-consistency-levels.

4. Cluster Operations: Scaling, Adding & Removing Nodes

Cassandra’s elastic scalability is one of its strongest selling points. Adding or removing nodes is a non‑disruptive operation if performed correctly.

4.1 Adding a New Node

  1. Provision the Hardware – Ensure the new node matches the existing hardware profile (CPU, RAM, SSD). A typical production node might have 8 vCPU, 64 GiB RAM, and 4 TB NVMe SSDs, capable of ~250 k writes/sec.
  2. Configure cassandra.yaml – Set the same cluster_name, seed_provider (add existing seeds), and a unique listen_address.
  3. Set the Token – With vnode (default 256 tokens per node), you can let Cassandra auto‑assign tokens by simply starting the node. For manual token allocation, use nodetool move.
  4. Bootstrap – Start the node; it will stream the required data ranges from existing replicas. Streaming throughput can be limited with -Dcassandra.stream_throughput_outbound_megabits_per_sec=500 to avoid saturating the network.
  5. Verify – Run nodetool status to confirm the node shows UN (Up/Normal) and that token ownership percentages reflect the new distribution.

A typical bootstrap of a 500 GB data set on a 10‑node cluster completes in ≈30 minutes when limiting bandwidth to 1 Gbps per node.

4.2 Removing a Node (Decommission)

When decommissioning a node (e.g., hardware retirement), follow:

  1. Run nodetool decommission – Streams data to remaining replicas.
  2. Monitor with nodetool netstats – Ensure all pending streams finish.
  3. Update cassandra.yaml – Remove the node from the seed list and any load‑balancer configuration.

If a node fails before decommission finishes, you can replace it using nodetool replace_address to trigger a fresh bootstrap without data loss.

4.3 Scaling Across Data Centers

To add a new data center (e.g., a European edge for AI agents analyzing bee colonies), you:

  1. Deploy a separate set of nodes with endpoint_snitch set to GossipingPropertyFileSnitch.
  2. Define the new DC in the cassandra-rackdc.properties file.
  3. Adjust the keyspace replication using ALTER KEYSPACE ... WITH REPLICATION = {'class':'NetworkTopologyStrategy', 'US_EAST':'3', 'EU_WEST':'3'}.

After replication changes, repair each table (nodetool repair) to propagate existing data to the new DC. A full repair of a 10 TB keyspace across three data centers can take 12‑24 hours depending on network capacity; schedule it during low‑traffic windows.

Cross‑link: For step‑by‑step instructions on multi‑DC deployment, see cassandra-multi-dc.

5. Performance Tuning: Compaction, Caching, and the Read/Write Path

Even a perfectly modeled schema can suffer if the underlying storage engine is not tuned. Cassandra provides several knobs to control write amplification, read latency, and disk utilization.

5.1 Compaction Strategies

Compaction merges SSTables to reclaim space and improve read performance. The main strategies are:

StrategyWhen to UseProsCons
SizeTieredCompactionStrategy (STCS)Default for write‑heavy workloads.Low CPU overhead, good for bulk inserts.Can cause read amplification due to many overlapping SSTables.
LeveledCompactionStrategy (LCS)Read‑heavy workloads with many small rows.Predictable read latency (≤ 2 SSTables per read).Higher write amplification; more CPU.
TimeWindowCompactionStrategy (TWCS)Time‑series data (e.g., bee sensor logs).Groups SSTables by time window, reducing compaction churn.Requires careful window sizing (e.g., 1 day).

Real‑world example: A telemetry pipeline storing 10 TB of hourly bee temperature data switched from STCS to TWCS with a 24‑hour window. After the change, read latency dropped from 12 ms to 3 ms for the most recent day's data, while disk usage decreased by 15 % due to more efficient tombstone removal.

5.2 Caching Layers

Cassandra provides two caches:

  1. Key Cache – Stores partition keys and their locations. Default size is 5 % of heap (e.g., 3 GiB on a 64 GiB heap).
  2. Row Cache – Stores entire rows; useful for hot rows but memory‑intensive.

For a workload where 10 % of rows receive 80 % of reads (a classic Pareto distribution), enabling the row cache for those hot rows can reduce read latency from 1.2 ms to 0.3 ms. However, the row cache must be sized carefully to avoid GC pauses; a rule of thumb is to keep total heap usage below 75 % of the JVM heap.

5.3 Tuning the Read Path

When a read request arrives:

  1. Coordinator contacts replicas based on CL.
  2. Digest requests are sent to non‑primary replicas to compare checksums.
  3. Full data is returned by the fastest replica; the coordinator merges results.

You can reduce latency by:

  • Increasing read_request_timeout_in_ms only if you anticipate occasional spikes; otherwise keep it low (default 5 000 ms) to surface problems early.
  • Enabling read_repair_chance (default 0.1) to proactively repair inconsistencies. For critical tables (e.g., hive alert logs), set read_repair_chance = 1.0 to guarantee immediate repair at the cost of extra traffic.

5.4 Write Path Optimizations

Writes are fast because they are append‑only. Yet, you can boost throughput by:

  • Increasing concurrent_writes to match the number of available CPU cores (e.g., concurrent_writes: 128 on a 16‑core node).
  • Batching writes using unlogged batches for rows that share a partition key; this reduces network round‑trips without incurring the overhead of a logged batch.
  • Adjusting memtable_flush_writers (default 2) to 4 on SSD‑heavy nodes, allowing parallel flushes.

A benchmark on a 6‑node cluster (each node: 32 vCPU, 128 GiB RAM, 2 × 4 TB NVMe) showed 400 k writes/sec with a 10 ms latency target after applying the above settings, compared to 250 k writes/sec on the default configuration.

Cross‑link: For a deeper dive into compaction tuning, see cassandra-compaction.

6. Monitoring, Alerting, and Troubleshooting

Running a Cassandra cluster without observability is akin to managing a beehive blindfolded—problems surface only after the damage is done. The ecosystem offers a rich set of metrics, logs, and diagnostic tools.

6.1 Core Metrics (via JMX / Prometheus)

MetricDescriptionTypical Threshold
org.apache.cassandra.metrics.Storage.LiveDiskSpaceUsedDisk space actually used.< 80 % of disk capacity.
org.apache.cassandra.metrics.Compaction.PendingTasksNumber of compactions waiting.< 50 for most workloads.
org.apache.cassandra.metrics.ThreadPools.WriteStage.ActiveTasksActive write threads.Should not exceed 80 % of concurrent_writes.
org.apache.cassandra.metrics.ClientRequest.LatencyRequest latency histogram.95th percentile < 5 ms for reads.
org.apache.cassandra.metrics.Gossip.IncomingMessagesGossip traffic volume.Sudden spikes may indicate network issues.

Export these metrics to Prometheus and set alerts using Alertmanager. For example:

- alert: CassandraHighCompactionBacklog
  expr: cassandra_compaction_pending_tasks > 100
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: "Compaction backlog exceeds 100 tasks"
    description: "Compaction may cause read latency spikes. Consider increasing compaction throughput or adding nodes."

6.2 Log Analysis

Cassandra logs (system.log) are JSON‑structured when logback is configured. Look for:

  • ERROR entries indicating “Failed to flush memtable” – may point to disk I/O bottlenecks.
  • WARN messages about “Gossip failure detection” – could indicate network partitions.

Integrate logs with a centralized system (e.g., Elastic Stack) and apply machine‑learning anomaly detection to surface patterns like “increasing write latency over the past 24 h”.

6.3 Common Troubleshooting Scenarios

SymptomLikely CauseFix
Read latency spikes after node additionCompaction backlog caused by new data streaming.Run nodetool repair on affected tables; increase compaction_throughput_mb_per_sec.
Write timeouts (WriteTimeoutException)consistency_level too high for current RF (e.g., CL = ALL with a node down).Lower CL to QUORUM or adjust replication factor.
Stale data after a network partitionInconsistent repair across DCs.Run nodetool repair -pr on each DC; verify hinted_handoff_enabled is true.
High CPU usage on a single nodeUneven token distribution (hot partition).Re‑balance tokens using nodetool move or enable virtual nodes (vnodes).

For a real case, a bee‑tracking startup observed CPU spikes up to 95 % after a sudden surge of 2 M sensor writes per minute. Investigation revealed a single hot partition caused by a mis‑configured hive_id that grouped all sensors under one ID. The team added a bucket column (sensor_type) to the partition key, instantly flattening the load and bringing CPU back to 45 %.

Cross‑link: For a complete guide to monitoring best practices, see cassandra-monitoring.

7. Backup, Disaster Recovery, and Point‑in‑Time Recovery

Data loss is unacceptable when you’re tracking endangered pollinator populations. Cassandra provides multiple mechanisms to protect against hardware failures, operator errors, and catastrophic events.

7.1 Snapshot Backups

Running nodetool snapshot creates hard links to the current SSTables, producing a point‑in‑time copy with virtually no I/O overhead. Best practices:

  • Schedule snapshots daily for critical keyspaces (cron with nodetool snapshot -t daily-$(date +%F)).
  • Store snapshots on a different storage tier (e.g., S3, Glacier) using Cassandra‑S3 or a custom script that copies the snapshot directories.
  • Retain 7‑14 days of snapshots, depending on regulatory requirements.

A snapshot of a 5 TB keyspace takes roughly 5 minutes to copy to an S3 bucket with 2 Gbps bandwidth.

7.2 Incremental Backups

Enable incremental_backups: true in cassandra.yaml. This creates a copy of each flushed SSTable as it is written, allowing you to reconstruct any point‑in‑time between snapshots. Combine incremental backups with Cassandra‑Backup tools (e.g., Medusa, Cassandra Reaper) for automated cleanup and retention.

7.3 Restoring from Backup

To restore:

  1. Stop the node (nodetool stopdaemon).
  2. Delete the data directories (/var/lib/cassandra/data).
  3. Copy the snapshot (or incremental files) back into the data directory, preserving the directory layout (keyspace/table-UUID).
  4. Run nodetool refresh to make the node aware of the restored SSTables.

If you need to recover a single table (e.g., a hive health log), you can restore just that table’s snapshot without affecting other keyspaces.

7.4 Using Repair for Consistency

After a node rejoins a cluster after a failure, run nodetool repair to synchronize data. For large clusters, consider incremental repair (-inc) and parallel repair (-pr) to keep repair windows short. A full repair of a 20 TB cluster across three data centers can be completed in ≈48 hours with a 500 Mbps inter‑DC link, assuming repair throttling at 150 MB/s per node.

7.5 Point‑in‑Time Recovery (PITR) with Cassandra 4.0+

Cassandra 4.0 introduced PITR using commit log archiving. By archiving the commit log segments to durable storage (e.g., Azure Blob), you can replay mutations up to any desired timestamp. Steps:

  1. Set commitlog_archiving.properties with a cloud storage target.
  2. Enable commitlog_archiving: true.
  3. To recover, restore the latest snapshot and replay commit logs using the cassandra-replay tool until the target timestamp.

In a test, restoring a 2‑day‑old snapshot and replaying 48 hours of commit logs took ≈2 hours on a 4‑node cluster, providing a near‑instantaneous recovery option for critical data.

Cross‑link: For a full disaster‑recovery checklist, see cassandra-dr-plan.

8. Security, Authentication, and Access Control

Protecting the data that powers AI agents and bee‑conservation dashboards is non‑negotiable. Cassandra offers multiple layers of security.

8.1 Authentication

  • PasswordAuthenticator (default) stores credentials in the system_auth keyspace.
  • KerberosAuthenticator integrates with enterprise Kerberos for SSO.
  • DSE LDAP (DataStax Enterprise) enables LDAP directory authentication.

For a public‑facing API that ingests sensor data, enable PasswordAuthenticator and enforce bcrypt password hashing (cassandra.yaml: password_hashing_algorithm: BCRYPT). Rotate passwords every 90 days.

8.2 Authorization

Cassandra uses role‑based access control (RBAC). Example:

CREATE ROLE hive_reader WITH LOGIN = false;
GRANT SELECT ON KEYSPACE hive_data TO hive_reader;

CREATE ROLE hive_writer WITH LOGIN = false;
GRANT MODIFY ON KEYSPACE hive_data TO hive_writer;

CREATE ROLE api_user WITH PASSWORD = 's3cur3!';
GRANT hive_reader, hive_writer TO api_user;

Roles can be nested, allowing you to grant a set of permissions to a group of users (e.g., all AI agents). Use REVOKE ALL ON ALL KEYSPACES FROM hive_reader; to tighten access when needed.

8.3 Encryption

  • In‑Transit: Enable SSL/TLS with client_encryption_options and server_encryption_options. Use TLS 1.3 and AES‑256‑GCM cipher suites.
  • At‑Rest: Turn on transparent data encryption (TDE) with transparent_data_encryption_options. For compliance, store the encryption keys in a hardware security module (HSM) or a cloud KMS (e.g., AWS KMS).

A benchmark on a 5‑node cluster showed ~3 % latency increase for reads when enabling TLS 1.3, a small price for the security gain.

8.4 Auditing

Cassandra 4.0 provides audit logging via audit_logging_options. Configure it to log all DML statements for the hive_alerts table. Logs can be streamed to Kafka for real‑time analysis, enabling you to detect suspicious activity (e.g., a sudden surge of DELETE statements).

Cross‑link: For a step‑by‑step guide to securing a cluster, see cassandra-security.

9. Integration with Modern Ecosystems

Cassandra’s flexible data model and low‑latency reads make it a natural fit for AI pipelines and streaming platforms that power bee‑conservation initiatives.

9.1 Streaming Ingestion with Apache Kafka

A typical pattern:

  1. Sensors on hives publish JSON messages to a Kafka topic (hive.temperature).
  2. A Kafka Connect sink connector writes directly to Cassandra using the Cassandra Sink Connector (part of Confluent).
  3. The connector batches rows (default 500) and writes at ~200 k rows/sec per connector instance.

By scaling the connector horizontally, you can ingest >1 M events/sec with end‑to‑end latency under 200 ms, which is sufficient for near‑real‑time hive health monitoring.

9.2 AI Agents Querying Cassandra

AI agents (e.g., anomaly‑detection models) often need fast, deterministic reads. Using the DataStax Java Driver, you can set readConsistencyLevel = LOCAL_QUORUM and enable prepared statements for low‑overhead query execution.

Sample Java snippet:

PreparedStatement ps = session.prepare(
    "SELECT temperature FROM hive_temperature WHERE hive_id = ? AND day = ? AND hour = ?");
BoundStatement bs = ps.bind(uuid, LocalDate.now(), 14);
ResultSet rs = session.execute(bs);

The driver automatically retries failed nodes based on the configured retry policy, ensuring the agent receives results even during brief node outages.

9.3 GraphQL and REST APIs

Frameworks like Apollo Server or Spring Boot can expose a GraphQL endpoint that translates queries into CQL. By leveraging DataLoader for batching, you can reduce round‑trips to Cassandra, delivering sub‑second response times for dashboards that visualise hive metrics.

9.4 Edge Computing with Cassandra

For remote apiaries lacking reliable internet, a lightweight edge node running Cassandra with LocalStrategy can store recent sensor data locally. When connectivity resumes, the edge node streams the data to the central cluster, preserving continuity. This mirrors how bees use local caches of nectar before returning to the hive.

Cross‑link: For patterns on integrating Cassandra with streaming platforms, see cassandra-kafka-integration.

10. Best Practices & Common Pitfalls

10.1 Checklist for a Healthy Cluster

✅ ItemWhy It Matters
Uniform hardware across nodes (CPU, RAM, SSD)Prevents performance bottlenecks.
Enable virtual nodes (vnodes) (default 256)Guarantees even token distribution.
Set disk_failure_policy: stopStops a node from silently corrupting data.
Tune gc_grace_seconds (default 10 days)Controls tombstone expiration; lower for fast‑purge tables.
Regularly run nodetool repairKeeps replicas in sync, avoids read repair storms.
Monitor compaction backlogPrevents read latency spikes.
Back up snapshots dailyGuarantees recoverability.
Use LOCAL_QUORUM for multi‑DC writesBalances latency and durability.
Audit critical tablesDetects unauthorized data changes.
Document schema changesAvoids accidental schema drift.

10.2 Pitfalls to Avoid

PitfallConsequenceRemedy
Over‑provisioning memtable_total_space_in_mbCauses frequent flushes, higher I/O.Keep total memtable size ≤ 25 % of heap.
Setting read_repair_chance to 0Allows silent inconsistencies to accumulate.Keep at least 0.1 for critical tables.
Using ALL consistency on a multi‑DC clusterIncreases latency dramatically; fails on any node loss.Prefer LOCAL_QUORUM or QUORUM.
Storing large blobs (> 5 MB) in a single cellLeads to high read amplification and compaction overhead.Split blobs across multiple rows or use external object storage (e.g., S3) and store references.
Neglecting hinted_handoff_enabledWrite loss during network partitions.Keep it enabled unless you have a custom replication strategy.

Why it matters

Cassandra isn’t just a technology stack; it’s an engine of continuity. For bee‑conservation projects, the ability to collect, store, and retrieve massive streams of sensor data without interruption can mean the difference between early detection of a colony collapse and a missed warning. For AI agents that autonomously manage resources, Cassandra’s tunable consistency and fault‑tolerant design provide the reliable substrate they need to make decisions in real time. Mastering Cassandra database management—understanding its architecture, tuning its performance, and safeguarding its data—ensures that the digital hives we build are as resilient as the natural ones they protect.

Frequently asked
What is Cassandra Database Management about?
Cassandra has been called “the database that never sleeps.” Its origins lie in the need for a highly available, horizontally scalable store that could survive…
What should you know about 1. Cassandra Architecture at a Glance?
Cassandra’s architecture is deliberately decentralized . Every node in a cluster plays the role of both coordinator and replica; there is no single master that can become a bottleneck or a single point of failure. The core components are:
What should you know about 2. Data Modeling and Partitioning?
A well‑designed data model is the foundation of a performant Cassandra deployment. Unlike relational databases, Cassandra encourages denormalization and query‑driven modeling . Here are the key steps:
What should you know about 2.1 Choose the Primary Key Wisely?
The primary key consists of a partition key (determines node placement) and optional clustering columns (determine sort order within a partition).
What should you know about 2.2 Avoid Hot Partitions?
If a single partition receives more than a few hundred megabytes of data, compaction and read performance degrade. In the bee‑monitoring example, a wide row could exceed 2 GB if you store raw sensor streams per day. Mitigate this by bucketing time (e.g., hourly instead of daily) or sharding by an additional dimension…
References & sources
  1. Apiary Reading RoomOpen, cited knowledge base — funded to keep bee & practical research free.
From the Apiary Reading Room. Opinion & editorial — not financial advice. We don't overclaim.
More from the Reading Room