DynoTable vs DataGrip

DataGrip is JetBrains' IDE for relational and NoSQL databases, and DynamoDB is one of the 26 named on its home page. Since version 2023.3 you point a jdbc:dynamodb:// data source at a table, browse and edit items in the data editor, and write PartiQL in the code editor.

DynoTable is a DataGrip alternative for the DynamoDB half of that job. As a DynamoDB-only client, it runs the JOIN, GROUP BY and aggregates that PartiQL refuses, planning them client-side against your keys and GSIs. Facts below are as of October 2026.

FeatureDynoTableDataGrip
Purpose-built for DynamoDBYesMulti-database IDE
YesBrowse & edit in grid (open bugs: nested types, row delete)
PartiQL query editorYesYes
YesNo
Query plan preview (Scan/Query + RCU when available)YesNo
YesNo
Visual query/scan builderYesPartiQL only
YesNo
YesMCP server; consent prompts, no staged diff
YesNo
Table management (create/delete, GSIs, TTL, capacity)YesNo
DynamoDB Local supportYesYes
PricingFree read-only tier, from $9/mo billed annuallyFree non-commercial; from $9/mo billed annually (individual, 1st yr)

When to keep DataGrip vs switch to DynoTable

Your workflowChoose
SQL across Postgres, MySQL, and DynamoDB in one JetBrains IDEDataGrip
You already license DataGrip and touch DynamoDB occasionallyDataGrip
JOIN, GROUP BY, or aggregates over live DynamoDB tablesDynoTable
Stage DynamoDB edits and review a per-attribute diff before commitDynoTable
AI agent on your own AWS Bedrock keys with staged writesDynoTable

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). The same help page names the viewer the Data editor and viewer; JetBrains' tracker has open bugs on editing nested list and map values and on deleting rows (DBE-20629, DBE-21471).

That introspection line covers all the schema DynamoDB publishes. DescribeTable 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. 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 it can only pass on the PartiQL grammar, which is small. Each statement below went to DynamoDB Local 3.3 through ExecuteStatement; the responses are verbatim.

StatementResponse
SELECT * 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

DynamoDB cannot sort a result set by a non-key attribute. 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.

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 table's key schema.

A join needs the joined table keyed by the join attribute: the partition key of a table with no sort key, or the partition key of exactly one GSI. The Workbench rejects any other join rather than quietly scanning the joined table.

The cost model stays DynamoDB's. A GROUP BY with no partition-key equality, like the second row, is still a full Scan billed for every item, and aggregate columns show (partial) until every page is read. 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.

DataGrip 2026.1 added AI agents (Claude Agent, Codex) that reach databases through its MCP server, with consent prompts before they read or change data (What's New in DataGrip 2026.1). DynoTable's agent runs on Amazon Bedrock in your own AWS account and can only stage DynamoDB writes for you to review (AI chat docs).

DynoTable's staged-commit diff before anything is written to DynamoDB.
DynoTable's staged-commit diff before anything is written to DynamoDB.

AWS states that "Vector indexes are not accessible through PartiQL" (vector search requirements), and DataGrip's DynamoDB docs document no other vector surface. DynoTable creates the index (paid, on-demand tables only, not on DynamoDB Local) and searches it by a pasted vector, Find similar, or a typed sentence that spends Bedrock tokens on your account; see Vector search.

How to switch from DataGrip

  1. Download DynoTable for macOS (Apple Silicon), Windows or Linux and install it.
  2. For each jdbc:dynamodb:// data source, create a DynoTable profile on the same AWS profile and pick the region it used (its ?region= value, if it had one). Each profile pins its region; ⌘P switches profiles.
  3. A jdbc:dynamodb://localhost:8000 data source becomes a DynamoDB Local profile on port 8000. Your tables stay where they are, so there's nothing to migrate.
  4. Paste the PartiQL from a DataGrip query console into DynoTable's PartiQL editor. It is the same DynamoDB PartiQL, so it runs as written; an UPDATE, INSERT or DELETE gets a Commit changes or Stage changes button.
  5. Open the SQL Workbench and run the statements from the table above. The JOIN compiles when customers is keyed by customerId alone or has one GSI keyed on it; otherwise the Workbench says why before it runs.

DataGrip is free for non-commercial use. For commercial use by an individual, a license is $109 for the first year ($87 the second, $65 from the third) or $10.90 month-to-month, and an organization seat is $259 a year.

DynoTable's trial is free for 30 days, no credit card required. A paid seat is $9/mo billed annually ($108/yr) or $12 month-to-month; see pricing for Team rates. After the trial you stay on the Free plan, which needs a free DynoTable account and covers browsing, PartiQL SELECT, in-app exports and read-only MCP, with no time limit.

FAQ

Does DataGrip support DynamoDB?

Yes, since DataGrip 2023.3. You connect a jdbc:dynamodb:// data source, browse and edit items in the data editor, 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. DynamoDB itself returns that error, 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.

Last verified 2026-10-09 against JetBrains' DataGrip documentation, pricing and What's New pages, and the AWS PartiQL reference. The ValidationException responses were reproduced 2026-07-28 against DynamoDB Local 3.3.0 and re-run 2026-10-09 against DynamoDB Local 3.3.1 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.