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.

FeatureDynoTableDataGrip
Purpose-built for DynamoDBYesRelational-first
Browse & edit DynamoDB itemsYesYes
PartiQL query editorYesYes
YesNo
Query plan preview (Scan/Query + RCU when available)YesNo
YesNo
Visual query/scan builderYesPartiQL only
YesNo
YesNo
Table management (create/delete, GSIs, TTL, capacity)YesNo
Works offline (DynamoDB Local)YesYes
PricingFree read-only tier, from $9/mo billed annuallyFrom $9/mo

When to keep DataGrip vs switch to DynoTable

Your workflowChoose
SQL across Postgres, MySQL, and DynamoDB in one JetBrains IDEDataGrip
Browse DynamoDB with the official PartiQL grammar in a code editorDataGrip
JOIN, GROUP BY, or aggregates over live DynamoDB tablesDynoTable
Staged item edits with a reviewable diff before commitDynoTable
AI agent on your own AWS Bedrock keys with staged writesDynoTable

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.

StatementResponse
FROM orders o JOIN customers c ON o.customerId = c.customerIdValidationException: Only select from a single table or index is supported.
SELECT status, SUM(amount) FROM orders GROUP BY statusValidationException: Unsupported clause: GROUP BY
SELECT COUNT(*) FROM ordersValidationException: Unexpected path component at 1:8:5
SELECT DISTINCT status FROM ordersValidationException: Unsupported token in expression: DISTINCT
SELECT * FROM orders ORDER BY amount DESCValidationException: Must have WHERE clause in the statement when using ORDER BY clause.
SELECT * FROM orders WHERE orderId = '1' ORDER BY amount DESCValidationException: 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 DynoTable SQL Workbench compiling a JOIN with GROUP BY into Query and Scan calls.
The DynoTable SQL Workbench compiling a JOIN with GROUP BY into Query and Scan calls.
DynoTable's staged-commit diff before anything is written to DynamoDB.
DynoTable's staged-commit diff before anything is written to DynamoDB.

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

  1. Download DynoTable for macOS, Windows or Linux and install it.
  2. 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.
  3. Point it at the same region and tables. Your data stays in DynamoDB, so there's nothing to migrate.
  4. 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.

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.

Work with DynamoDB without the Console

A fast DynamoDB desktop client that runs the real SQL DynamoDB can’t — JOINs, GROUP BY, aggregates — with visual editing and an AI agent on your own Bedrock keys.

Free 30-day trial, no credit card — then the Free plan with no time limit.