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 throughiq 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 execforwards 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.