Nano

Migrate from SQLite

Move a SQLite-backed application onto HeliosDB Nano. Nano is an independent engine and does not open .sqlite files, so this is an export and reload with real schema and code adaptation — static column types instead of SQLite's dynamic affinity, and different INSERT OR REPLACE semantics.

Migration steps →
Lite

Migrate from MySQL

Complete migration guide from MySQL/MariaDB to HeliosDB-Lite. Includes data type mapping, query translation, mysqldump export, and application code adaptation for Python, TypeScript, and Go.

97%
Cost Reduction
69% faster
Performance
Migration Guide →
Lite

Migrate from MongoDB

Migrate from MongoDB Atlas to HeliosDB-Lite with JSONB document storage. Covers schema strategies (document-preserving, normalized, hybrid), aggregation pipeline translation, and JSONB operators.

96%
Cost Reduction
83% faster
Performance
Migration Guide →
Lite

Migrate from DynamoDB

Replace DynamoDB single-table designs with normalized SQL schemas. Eliminate RCU/WCU capacity planning, throttling, and auxiliary services like OpenSearch and Redshift.

94%
Cost Reduction
Full SQL
JOINs + Aggregations
Migration Guide →
Lite

Migrate from PostgreSQL

PostgreSQL-compatible -- minimal migration needed. HeliosDB-Lite speaks the PostgreSQL wire protocol natively. Most applications require only a connection string change.

See Use Cases →
Enterprise

Migrate from Oracle

Enterprise migration assistance from Oracle databases to HeliosDB with full SQL compatibility.

Contact Sales →
Enterprise

Migrate from SQL Server

Enterprise migration assistance from SQL Server to HeliosDB with T-SQL compatibility layer.

Contact Sales →

Three separate transitions

Changing engine, changing deployment mode, and changing product tier are three different moves with three different risk profiles. Do them one at a time.

1 · Engine migration

SQLite → HeliosDB Nano

Nano is not a SQLite build. It is an independent engine with a SQLite-dialect compatibility layer, and it does not open .sqlite files directly. Plan an export and reload, not a file swap, and budget for application changes — this is not a drop-in.

The workflow

  1. Export schema and data from the SQLite file.
  2. Adapt the schema to static column types (see below), then create it on a fresh Nano data directory.
  3. Load the data.
  4. Verify before trusting it — compare row counts per table, and checksum the columns you actually care about.
  5. Re-run your application's queries and transactions against Nano, and keep the SQLite file until they pass.

Adaptations you will actually have to make

  • Type affinity. Nano is statically typed; SQLite's affinity rules are dynamic and will happily store a string in an INTEGER column. Inserts that SQLite accepted can error on Nano. Find these before the load, not after cutover.
  • INSERT OR REPLACE is not the same statement. Nano accepts the syntax and rewrites it to an in-place upsert (ON CONFLICT DO UPDATE, setting the columns you listed). SQLite's REPLACE deletes the conflicting row and inserts a new one — columns you did not list revert to their defaults, the rowid changes, and delete triggers fire. If your code leans on that behaviour, rewrite it explicitly. The rewrite also needs a parenthesised column list; without one the statement stays a plain INSERT and a duplicate key raises a uniqueness error.
  • Extensions, custom collations and user-defined functions do not carry over. Anything built on a loadable SQLite extension needs a different plan.
On tooling

A converter script lives in the Nano repository under tools/. It reads a SQLite file and derives the target schema, but it is not packaged, not on PyPI, and its load path into the engine is still being wired up — today it is a starting point for your own tooling rather than a turnkey converter. For a production move, talk to us first.

Nano vs SQLite → Python SQLite-compat adapter →
2 · Deployment transition

Nano embedded → Nano server

Same engine, same data directory, different access path. This is a stop-then-start handoff, not a live cutover and not a mode you run both halves of at once — two processes opening the same embedded data directory is a locking hazard, not a hybrid deployment.

  1. Stop the embedded process cleanly. Nothing else should hold the data directory open.
  2. Keep the Nano version identical across the switch. Do not combine a mode change with a version bump — upgrades have their own release notes and their own failure modes, and debugging both at once is how a switchover turns into an outage.
  3. Start the server against the same data directory and configure a real authentication method. The database is a network surface now; it needs to be treated as one.
  4. Change the application code. Embedded calls become a PostgreSQL or MySQL client connection. This is real client work, not a connection-string edit.
  5. Validate the new path end to end — connect, read, write, transact — before you decommission the embedded one.
HeliosDB Nano →
3 · Product-tier transition

Nano → Lite or Full

Lite and Full are separate products with their own storage and deployment models. Your client code is largely portable, because the wire surface is shared — but a shared protocol says nothing about a shared on-disk format, and we do not publish an automated import path from a Nano store into either tier.

If you are sizing this move, talk to us and we will scope it against what your deployment actually looks like rather than guessing at it here.

Contact Sales →

Need help migrating?

Our team can help you plan and execute your migration to HeliosDB.

Contact Sales Get Started