DynoTable vs DataGrip
DataGrip has connected to DynamoDB since version 2023.3: you point a
jdbc:dynamodb:// data source at a table, browse items in the data editor, and
write PartiQL in the code editor. DynoTable, a DynamoDB-only client, runs the
JOIN, GROUP BY and aggregates that PartiQL refuses, planning them client-side
against your keys and GSIs. This page compares the two as DynamoDB clients, as
of July 2026.
When to keep DataGrip vs switch to DynoTable
| Your workflow | Choose |
|---|---|
| SQL across Postgres, MySQL, and DynamoDB in one JetBrains IDE | DataGrip |
| Browse DynamoDB with the official PartiQL grammar in a code editor | DataGrip |
JOIN, GROUP BY, or aggregates over live DynamoDB tables | DynoTable |
| Staged item edits with a reviewable diff before commit | DynoTable |
| AI agent on your own AWS Bedrock keys with staged writes | DynoTable |
Is DynoTable a DataGrip alternative for DynamoDB?
Yes, for the DynamoDB half of the job. DataGrip is JetBrains' IDE for relational and NoSQL databases, and DynamoDB is one of roughly twenty it connects to. A client that only has to be right about one database has room to do more with it, which is the trade this page is really about.
What DataGrip gives you on a DynamoDB connection
Three things, per JetBrains' release note for 2023.3: the data viewer, PartiQL in
the code editor, and "Tables with keys and indexes are now introspected."
Connections take three documented forms — jdbc:dynamodb://localhost:8000 for a
local instance, jdbc:dynamodb:// for a named AWS profile, and
jdbc:dynamodb://?region=eu-west-1 to pin a region
(DataGrip docs).
Read that introspection line closely, because it is not a partial implementation.
DescribeTable is the only schema DynamoDB publishes, and it returns key
attributes only. Here it is for a table whose items also carry plan, seats,
active, tags and meta:
"AttributeDefinitions": [
{"AttributeName": "pk", "AttributeType": "S"},
{"AttributeName": "sk", "AttributeType": "S"}
]Five attributes are missing because DynamoDB never recorded them. Keys and indexes are the whole schema there is to introspect; anything else a client knows about your table, it learned by reading items and inferring.
Where a SQL habit stops
What you buy an IDE like DataGrip for is that it understands your SQL. Against
DynamoDB the ceiling is not the IDE's, it is the grammar's, and the grammar is
small. Each statement below went to a DynamoDB endpoint through
ExecuteStatement; the responses are verbatim.
| Statement | Response |
|---|---|
FROM orders o JOIN customers c ON o.customerId = c.customerId | ValidationException: Only select from a single table or index is supported. |
SELECT status, SUM(amount) FROM orders GROUP BY status | ValidationException: Unsupported clause: GROUP BY |
SELECT COUNT(*) FROM orders | ValidationException: Unexpected path component at 1:8:5 |
SELECT DISTINCT status FROM orders | ValidationException: Unsupported token in expression: DISTINCT |
SELECT * FROM orders ORDER BY amount DESC | ValidationException: Must have WHERE clause in the statement when using ORDER BY clause. |
SELECT * FROM orders WHERE orderId = '1' ORDER BY amount DESC | ValidationException: Variable reference amount in ORDER BY clause must be part of the primary key |
The last two are the ones that catch people. Sorting a result set by an ordinary
attribute is not a slow query in DynamoDB, it is not a query. AWS's published
SELECT grammar allows one FROM table or index, an optional WHERE, and an
ORDER BY restricted to a hash or sort key
(PartiQL SELECT reference).
DataGrip hands your statement to that grammar rather than compiling around it, so
the ceiling you hit is the grammar's.
Closing that gap yourself means writing the join, the grouping and the sort in
application code. DynoTable's SQL Workbench compiles them instead, down to native
Query and Scan calls planned against your keys and GSIs, and it rejects a join
whose right-hand table cannot be reached by a partition key rather than quietly
scanning it. SQL for DynamoDB covers what it emits.


The AI agent is the other thing DataGrip has no counterpart for; it runs on your own AWS Bedrock credentials rather than a vendor endpoint, and the AI chat docs spell out that account boundary and the per-action approvals.
How to switch from DataGrip
- Download DynoTable for macOS, Windows or Linux and install it.
- Add a connection with the same AWS profile your
jdbc:dynamodb://data source used. DynoTable reads the standard AWS credential chain, so profile and region carry over. - Point it at the same region and tables. Your data stays in DynamoDB, so there's nothing to migrate.
- Open the SQL Workbench and run any of the six statements above. All six compile, provided the join's right-hand table is reachable by a partition key or a GSI partition key; the Workbench says so when it isn't.
The trial is free for 30 days, no credit card required. Paid Individual seats start at $9/mo billed annually ($108/yr); see pricing for monthly and Team rates. DynoTable stays on the Free plan after the trial — browsing, PartiQL SELECT, exports and MCP schema/item reads, with no time limit.
FAQ
Does DataGrip support DynamoDB?
Yes, since DataGrip 2023.3. You connect a jdbc:dynamodb:// data source, browse
items in the data viewer, and run the subset of PartiQL DynamoDB supports. JOIN,
GROUP BY, DISTINCT and aggregate functions are outside that subset, so DynamoDB
returns a ValidationException for them.
Can you run a JOIN in DataGrip against DynamoDB?
No. A two-table SELECT comes back as
ValidationException: Only select from a single table or index is supported.
That is DynamoDB's answer, not DataGrip's, so no PartiQL client can work around it.
DynoTable's SQL Workbench compiles the join client-side against your keys and GSIs.
Can you sort a DynamoDB query by a non-key attribute?
Not in PartiQL. ORDER BY on an ordinary attribute returns
ValidationException: Variable reference amount in ORDER BY clause must be part of the primary key,
and omitting WHERE entirely fails first. Sorting on anything but a key has to
happen after the rows arrive, in your client or your code.
Pricing snapshot
DataGrip is sold as part of JetBrains’ IDE subscriptions (All Products Pack / DataGrip standalone — check JetBrains pricing for current seats). DynoTable is priced per seat for the DynamoDB workbench alone: see /pricing for the live Personal and Team numbers. If your team already pays for DataGrip for Postgres/MySQL and only occasionally touches DynamoDB, keeping DataGrip plus a DynamoDB-native client can be cheaper than forcing every DynamoDB workflow through JDBC. If DynamoDB is the daily driver, a dedicated client with staged commits and a DynamoDB-aware Workbench usually wins on time-to-fix.
Related
- Browse the full comparison hub for every DynoTable alternative.
- Prefer a native client with a relational feel? See the TablePlus comparison.
- See also DynoTable as a DynamoDB GUI and the Dynobase comparison.
- Build queries fast with the free DynamoDB Expression Builder.
Last verified 2026-08-28 against JetBrains' DataGrip documentation and the AWS
PartiQL reference. The ValidationException responses were reproduced the same day
against DynamoDB Local 3.3.0 via ExecuteStatement; the strings are quoted
verbatim. DataGrip is a trademark of JetBrains s.r.o.; referenced here for
identification only.





