Skip to content

How to Persist Zenoh Data Without Writing a Custom Storage Backend #329

@AnthonyCvn

Description

@AnthonyCvn

Topic: Zenoh

Reader: ROS 2 engineer who has adopted Zenoh as their RMW and now needs data to persist for replay, debugging, or ML training. Searches "zenoh persistent storage" or "zenoh storage backend".

The one question: Can I connect my Zenoh network to a persistent store without writing and maintaining a custom backend?

Why it matters now: Zenoh adoption in ROS 2 is accelerating. ROSCon 2025 had a full workshop. RMW-Zenoh is now official.

What exists and why this is still needed:
ZettaScale, Eclipse Foundation, and the Arm Learning Path all cover Zenoh as a protocol: pub/sub primitives, DDS comparison, multi-node setup on Raspberry Pi. ROSCon had a full hands-on workshop. All of it stops at the communication layer. None of it answers what happens to the data after the message is published. There is no article, tutorial, or guide that covers connecting a Zenoh network to a persistent queryable store.

Non-obvious insight: ReductStore is the first backend that speaks Zenoh natively. Write via Zenoh, query via HTTP, replay via SDKs or CLI.

How current stacks fail: Teams either write a custom Zenoh storage backend in Rust (weeks of work, fragile, unmaintained) or add an HTTP bridge between Zenoh and their storage (extra latency, extra failure point). Neither works on high-frequency ingestion at 50Hz cameras or 10Hz LiDAR.

Format: Tutorial with working code. Python publisher to Zenoh to ReductStore to HTTP query.

Next step: Docker Compose snippet + link to Zenoh integration docs.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions