Skip to content

Comparison

How iq relates to other query tools. Its niche is narrow: a single static binary that gives NoSQL stores one jq-based query interface. The filter runs client-side over normalized JSON, so semantics are identical across backends.

By job

Job What people use today What iq changes
Query a live store from a shell redis-cli, mongosh, cqlsh, aws dynamodb, curl against Elasticsearch, each piped into jq one language and one config over all of them. The filter names the keys. Paging and normalization are handled
Inspect a backup redis-rdb-tools, bsondump, mongoexport files, DynamoDB export JSON, cqlsh COPY CSV, APOC JSON, each read by its own tool or by hand one reader over six formats, queryable, diffable, restorable, with no server
Copy or migrate between stores ad-hoc scripts, mongodump/mongorestore and elasticdump for one store at a time, Redpanda Connect or Bento for any-to-any (a YAML pipeline plus the Bloblang mapping language), Airbyte for a platform one command, a typed round-trip, an inline jq transform, cross-driver
Compare environments, watch schema drift export both sides, then diff, jd or jq by hand iq diff over data, stats, or inferred schema, with diff(1) exit codes for CI
Give an AI agent database access one MCP server per backend (MongoDB's own, Google's MCP Toolbox for Databases), each speaking its native dialect behind a server process one binary and one language for all of them. --explain as a dry run. A skill that any agent that reads the Agent Skills format can install. An MCP server, read-only by default (see AI agents)

What iq is not

  • Not an analytics engine. Pushdown differs by backend. Every server-side backend pushes equality, and all except Cassandra and HBase also push existence. Ranges push on MongoDB, CouchDB and Couchbase, and regex on MongoDB and CouchDB. Redis and file dumps have no server-side filter, so a client-side byte prefilter takes its place. Everything else runs as a client-side scan. An aggregate materializes the keyspace behind --unbounded. A heavy question belongs in the backend's own language through iq exec, or in a query engine.
  • Not a replacement for the native shell where the backend's own feature is the point: aggregation pipelines, relevance scoring, graph traversals, vector search. iq exec forwards those verbatim rather than modelling them.

Tools that unify many databases under one language

Legend: ● primary, ◐ partial, — none. Model is the shape the query language speaks. Footprint is what you run.

Tool Query language Relational NoSQL Files Data model Footprint
iq jq — ● ◐ document single binary
sq SLQ / SQL ● — ● tabular single binary
usql native SQL ● ◐ — tabular single binary (multiplexer)
OctoSQL SQL ● ◐ ● tabular single binary
DuckDB SQL ◐ — ● tabular in-process / CLI
SQL over files (dsq, trdsql) SQL — — ● tabular single binary
Trino / Presto SQL ● ● ● tabular (◐ JSON) server / engine
Apache Drill SQL ● ● ● schema-free (both) server / engine
Data virtualization (Denodo, Dremio, MindsDB) SQL ● ● ◐ virtual relational server
Universal clients (DBeaver, DataGrip, DBX, LazySQL) native per-backend ● ◐ ◐ client-side, per backend desktop app / TUI
Redpanda Connect Bloblang, a mapping language ◐ ● ◐ document single binary (YAML pipeline)
MCP Toolbox for Databases native per-backend, as MCP tools ● ● — per backend server

Placement is by each tool's primary targets. Several (Trino, Drill, OctoSQL, DuckDB) partially cover neighbouring columns via connectors or extensions. iq covers files the same way: a read-only file:// source over database dumps, not arbitrary files.

sq, the tool iq's command set is modelled on, unifies relational databases and files, and never covers NoSQL. Language specs and embedded libraries (PartiQL, SQL++ / N1QL, JSONiq, Apache Calcite, GraphQL federation) span nested and tabular data too. But they are specifications or components inside an engine, not something anyone runs instead of a CLI.

The takeaway is the NoSQL column paired with footprint. Among these tools, iq is the only single binary that gives NoSQL stores one query language. What covers more runs as a server (Trino, Drill, the virtualization platforms, the MCP Toolbox). What is as light either speaks each backend's own dialect (usql, the universal clients) or targets files and relational stores instead (sq, DuckDB, dsq). Redpanda Connect is a single binary too, but Bloblang maps records through a pipeline. It is not a query language you type at a shell.