HeliosDB Full is a licensed SQL database whose PostgreSQL, MySQL and Oracle listeners read and write the same tables, including JSONB document columns. MongoDB wire compatibility for HeliosDB Full is Planned in the Release and Capability Matrix, so move MongoDB data in over the PostgreSQL wire protocol today. Like MongoDB, HeliosDB Full is licensed SSPL-1.0.
Last updated
Keep MongoDB when your application reads and writes through MongoDB drivers: MongoDB wire compatibility for HeliosDB Full is planned. Choose HeliosDB Full when you are ready to move documents into JSONB columns and query them over the PostgreSQL, MySQL or Oracle wire protocol, with HTTP vector stores in the same licensed engine; time travel, branching and SQL vector indexes for HeliosDB Full are planned.
MongoDB pioneered the document database, and its 2018 relicensing to SSPL sent part of the ecosystem looking for alternatives: AWS built DocumentDB and FerretDB built a protocol translator. HeliosDB Full is a SQL engine, and MongoDB wire compatibility is planned for it (Planned in the Release and Capability Matrix), and so are GridFS and capped collections (compatibility notes). What works today is the SQL path: store documents as JSONB rows and query them from PostgreSQL, MySQL or Oracle clients. HeliosDB Full is itself source-available under SSPL-1.0 and distributed to licensed customers, so it is not a way to leave SSPL behind.
| Feature | MongoDB 7 | HeliosDB Full |
|---|---|---|
| License | SSPL | SSPL-1.0 (commercial license available) |
| MongoDB wire protocol | Native OP_MSG | Planned |
| Document queries | find and aggregation pipelines (35+ stages) | SQL over JSONB (WHERE, GROUP BY, JOIN, window functions, CTEs); pipelines over the MongoDB protocol planned |
| ACID transactions | Multi-document | Multi-statement SQL transactions with MVCC |
| Vector search | Atlas-only ($vectorSearch) | Self-hosted HNSW vector stores with hybrid search over the HTTP gateway; SQL vector indexes with Product Quantization planned |
| NL queries | Not available | Planned (NL-to-SQL) |
| Intelligent indexing | Atlas Performance Advisor (paid) | Planned |
| Schema optimization | Manual validation rules | Planned |
| Change streams | Yes | Planned |
| GridFS | Yes | Not supported; planned |
| Capped collections | Yes | Not supported; planned |
| Authentication | SCRAM-SHA-256 / x.509 | SCRAM-SHA-256 for PostgreSQL clients |
| SQL access | Not available | PostgreSQL, MySQL and Oracle wire protocols and an HTTP SQL gateway |
| Full-text search | $text / Atlas Search | Native @@ operator in SQL |
| Time-travel queries | Not available | Planned (the current release accepts AS OF but does not read historical snapshots) |
| Data branching | Not available | Planned (the current release accepts the syntax but does not create branches) |
| Encryption at rest | Encrypted Storage Engine (Enterprise) | Planned (with key rotation and cloud KMS) |
| TLS on the listener | Yes | Not terminated by the listeners today; use a TLS proxy (native PostgreSQL TLS planned) |
| Deployment | mongod + mongos + config servers | Single server, provided during onboarding; clustering planned |
| Minimum HA | 3 nodes (replica set) | Replication and clustering planned |
| Other protocols | MongoDB only | PostgreSQL, MySQL and Oracle on the shared tables, Redis and an HTTP gateway; Cassandra and SQL Server planned |
| Anomaly detection | Atlas alerts (threshold) | Planned (in-database anomaly detection) |
| Production cost | Atlas M30: $370/month | Annual license, custom-priced (pricing) |
FerretDB translates the MongoDB wire protocol into SQL on PostgreSQL or SQLite. HeliosDB Full is a SQL engine with HTTP vector stores and PostgreSQL, MySQL and Oracle listeners; MongoDB wire compatibility, including reading and writing documents, aggregation pipelines, change streams, GridFS and capped collections, is planned (compatibility notes). If you are moving the data into SQL anyway, HeliosDB Full serves it over the PostgreSQL, MySQL and Oracle listeners and keeps embeddings in HTTP vector stores; SQL vector indexes, time travel and branching for HeliosDB Full are planned.
FerretDB Architecture:
+------------------+ +------------------+
| MongoDB Client |---->| FerretDB |---> PostgreSQL / SQLite
| (mongosh, etc.) | | (protocol proxy) | (external dependency)
+------------------+ +------------------+
HeliosDB Full Architecture (today):
+------------------+ +---------------------------------------------+
| MongoDB Client |- - >| HeliosDB Full |
| (mongosh, etc.) | | |
+------------------+ | MongoDB wire compatibility: planned |
| (document reads and writes, pipelines, |
| GridFS and capped collections) |
+------------------+ | |
| SQL Client |---->| PostgreSQL / MySQL / Oracle listeners |
| (psql, JDBC ...) | | Read and write the shared tables |
+------------------+ | |
| SQL Core Engine |
| JSONB documents in tables |
| HTTP vector stores (HNSW, hybrid search) |
| MVCC + ACID transactions |
| LSM storage (no external DB) |
+---------------------------------------------+
| Capability | FerretDB | HeliosDB Full |
|---|---|---|
| Approach | Protocol translator (proxy to external DB) | SQL engine; MongoDB wire compatibility planned |
| External database required | Yes (PostgreSQL or SQLite) | No (built-in LSM storage) |
| Document reads and writes over the MongoDB protocol | Yes | Planned |
| Aggregation stages | ~10 basic stages | Planned over the MongoDB protocol; SQL equivalents today |
| Change streams | Not available | Planned |
| GridFS | Partial | Not supported; planned |
| Vector search | Not available | HNSW vector stores over the HTTP gateway; SQL vector indexes planned |
| SQL access | Backend-dependent | PostgreSQL, MySQL and Oracle wire protocols |
| Multi-protocol | MongoDB only | PostgreSQL, MySQL and Oracle on the shared tables; Redis; HTTP gateway; MongoDB, Cassandra and SQL Server planned |
On the HTTP gateway: HeliosDB Full serves vector stores with hybrid search, embeddings, chat completions and agent memory there; SQL vector indexes with Product Quantization, NL-to-SQL and in-database model training are planned. Their MongoDB-protocol forms, such as $vectorSearch inside an aggregation pipeline, depend on MongoDB wire compatibility, which is planned too. Load documents over SQL and keep their embeddings in a vector store (compatibility notes).
MongoDB Atlas offers vector search in the cloud, through Atlas Search. HeliosDB Full serves self-hosted HNSW vector stores with hybrid search over its HTTP gateway (POST /api/v1/vectors/stores/{store}/search/hybrid); vector search in SQL and through $vectorSearch over the MongoDB protocol are planned.
// MongoDB Atlas: $vectorSearch (cloud-only, requires Atlas)
db.products.aggregate([
{
$vectorSearch: {
index: "vector_index",
path: "embedding",
queryVector: [0.12, -0.45, 0.89, /* ... */],
numCandidates: 100,
limit: 10
}
},
{ $project: { name: 1, score: { $meta: "vectorSearchScore" } } }
]);
Not over the MongoDB protocol yet: MongoDB wire compatibility for HeliosDB Full, including aggregation pipelines, is planned. Today, write the pipeline as SQL over the PostgreSQL wire; the common stages map directly:
| Stage | MongoDB 7 | HeliosDB Full SQL today |
|---|---|---|
| $match | Yes | WHERE (JSONB containment with @>) |
| $group | Yes | GROUP BY + aggregate functions |
| $sort | Yes | ORDER BY |
| $project / $addFields | Yes | SELECT list and computed columns |
| $limit / $skip | Yes | LIMIT / OFFSET |
| $unwind | Yes | jsonb_array_elements() or UNNEST() |
| $lookup (joins) | Yes | JOIN |
| $count | Yes | COUNT(*) |
| $facet | Yes | One query per facet, or CTEs |
| $setWindowFields | Yes | Window functions (OVER (PARTITION BY ...)) |
| $vectorSearch | Atlas-only | Hybrid search on the HTTP vector-store API; SQL vector search planned |
-- psql -h heliosdb-host -p 5432 -d mydb
CREATE TABLE users (
id TEXT PRIMARY KEY,
doc JSONB NOT NULL
);
INSERT INTO users (id, doc) VALUES
('u1', '{"name": "Alice", "age": 30, "dept": "Engineering", "tags": ["admin", "dev"]}'),
('u2', '{"name": "Bob", "age": 25, "dept": "Marketing", "tags": ["viewer"]}'),
('u3', '{"name": "Carol", "age": 35, "dept": "Engineering", "tags": ["admin"]}');
-- MongoDB: db.users.find({ dept: "Engineering" }).sort({ age: -1 })
SELECT doc->>'name' AS name, (doc->>'age')::int AS age
FROM users
WHERE doc @> '{"dept": "Engineering"}'
ORDER BY age DESC;
// MongoDB: multi-stage pipeline with $facet
db.orders.aggregate([
{ $match: { date: { $gte: ISODate("2026-01-01") } } },
{
$facet: {
byDepartment: [
{ $group: { _id: "$department", revenue: { $sum: "$total" } } },
{ $sort: { revenue: -1 } }
],
topCustomers: [
{ $group: { _id: "$customer_id", spent: { $sum: "$total" } } },
{ $sort: { spent: -1 } },
{ $limit: 10 },
{ $lookup: {
from: "customers",
localField: "_id",
foreignField: "_id",
as: "customer"
}},
{ $unwind: "$customer" },
{ $project: { name: "$customer.name", spent: 1 } }
]
}
}
]);
-- HeliosDB Full: one query per facet, over the PostgreSQL wire
-- byDepartment
SELECT doc->>'department' AS department,
SUM((doc->>'total')::numeric) AS revenue
FROM orders
WHERE (doc->>'date')::timestamptz >= '2026-01-01'
GROUP BY 1
ORDER BY revenue DESC;
-- topCustomers: $group + $lookup + $unwind become GROUP BY + JOIN
SELECT c.doc->>'name' AS name, t.spent
FROM (
SELECT doc->>'customer_id' AS customer_id,
SUM((doc->>'total')::numeric) AS spent
FROM orders
WHERE (doc->>'date')::timestamptz >= '2026-01-01'
GROUP BY 1
ORDER BY spent DESC
LIMIT 10
) t
JOIN customers c ON c.id = t.customer_id
ORDER BY t.spent DESC;
Keep the documents in tables and their embeddings in an HTTP vector store, then retrieve with POST /api/v1/vectors/stores/{store}/search/hybrid. Vector columns and HNSW indexes in SQL are planned for HeliosDB Full.
MongoDB session transactions are planned with MongoDB wire compatibility. In SQL, one multi-statement transaction covers the same transfer:
BEGIN;
UPDATE accounts SET balance = balance - 500 WHERE name = 'Alice';
UPDATE accounts SET balance = balance + 500 WHERE name = 'Bob';
INSERT INTO transfers (from_name, to_name, amount, created_at)
VALUES ('Alice', 'Bob', 500, NOW());
COMMIT;
These limits apply to HeliosDB Full, the edition this page compares. If you are looking at the embedded HeliosDB Nano instead, note that in the stock Nano server, row-level security is enforced through the embedded API and the REPL; SQL CREATE POLICY and enforcement for REST and wire clients are planned (Nano deployment modes).
Moving from MongoDB to HeliosDB Full today is a move to SQL: export the collections, load them as JSONB rows over the PostgreSQL wire protocol, then rewrite driver calls as SQL. The MongoDB migration guide covers schema choices and import scripts. Pointing MongoDB drivers at HeliosDB Full becomes an option once MongoDB wire compatibility ships (compatibility notes).
# Export each collection as a JSON array
mongoexport --uri="mongodb://mongodb-host:27017/mydb" \
--collection=users --out=users.json --jsonArray
import json
import psycopg2
conn = psycopg2.connect("host=heliosdb-host port=5432 dbname=mydb user=app")
cur = conn.cursor()
cur.execute("""
CREATE TABLE IF NOT EXISTS users (
mongo_id TEXT PRIMARY KEY,
doc JSONB NOT NULL
)
""")
with open("users.json", encoding="utf-8") as f:
for doc in json.load(f):
raw_id = doc.pop("_id")
mongo_id = raw_id.get("$oid", "") if isinstance(raw_id, dict) else str(raw_id)
cur.execute(
"INSERT INTO users (mongo_id, doc) VALUES (%s, %s::jsonb)",
(mongo_id, json.dumps(doc)),
)
conn.commit()
-- Compare with db.users.countDocuments() on MongoDB
SELECT COUNT(*) FROM users;
-- Compare with db.users.aggregate([{ $group: { _id: "$status", count: { $sum: 1 } } }])
SELECT doc->>'status' AS status, COUNT(*)
FROM users
GROUP BY 1;
Replace find, insert, update and aggregate calls with SQL through a PostgreSQL driver, using the stage mapping above. For vector search, keep embeddings in an HTTP vector store and query it with POST /api/v1/vectors/stores/{store}/search/hybrid; vector indexes in SQL are planned for HeliosDB Full.
| Tier | MongoDB Atlas | HeliosDB |
|---|---|---|
| Free tier | M0: 512MB, shared, no vector search | None for Full (HeliosDB Nano is free, Apache 2.0) |
| Development | M10: $57/month ($684/yr) | Annual license, custom-priced |
| Production | M30: $370/month ($4,440/yr) | Annual license, custom-priced |
| Production + Vectors | M30 + Atlas Search: ~$500/month | Vectors included in the license |
| Enterprise | M50+: $1,000+/month | Annual license, custom-priced |
| Managed service | Atlas metered pricing | Coming soon (see pricing) |
| Support | $15,000+/year (Enterprise) | Through HeliosDB sales |
| Dimension | MongoDB 7 | FerretDB | HeliosDB Full |
|---|---|---|---|
| License | SSPL | Apache-2.0 | SSPL-1.0 |
| MongoDB wire compatibility | Native | Yes (proxy) | Planned |
| Aggregation | 35+ stages | ~10 stages | SQL today; MongoDB pipelines planned |
| Vector search | Atlas-only (cloud) | No | HNSW vector stores over HTTP (self-hosted); SQL vector indexes planned |
| NL queries | No | No | Planned |
| Intelligent indexing | Atlas Advisor (paid) | No | Planned |
| SQL access | No | Backend-dependent | Yes (PostgreSQL, MySQL and Oracle wire) |
| Change streams | Yes | No | Planned |
| Transactions | Multi-document | Backend-dependent | Multi-statement SQL transactions + MVCC |
| Time-travel | No | No | Planned |
| Encryption | Enterprise only | Backend-dependent | Planned |
| Deployment | Multi-component | Proxy + backend | Licensed single server (clustering planned) |
| Best for | Established MongoDB shops | License compliance (minimal) | Document data moved into SQL, with HTTP vector stores |
| Production cost | $370+/month (Atlas) | $0 + backend cost | Annual license (sales) |
MongoDB defined the document database category, and FerretDB offers an Apache-2.0 translation layer over PostgreSQL or SQLite. HeliosDB Full makes a different trade: one SSPL-1.0 licensed engine where documents live as JSONB rows next to HTTP vector stores, queried over the PostgreSQL, MySQL or Oracle wire protocol; time travel, branching and SQL vector indexes for HeliosDB Full are planned. MongoDB wire compatibility for it is planned, so check the compatibility notes before you plan a cutover that keeps MongoDB drivers.
HeliosDB Nano, built from source with these features, adds CREATE EXTENSION hdb_code for SQL-callable LSP, the WITH CONTEXT clause for grounded RAG, eight ingestion adapters (incl. Docling-backed PDF / Office / audio / image), an in-process embedder, and a native MCP server reachable from Claude Code, Cursor, Continue, Codex, and Aider. Equivalents for HeliosDB Lite and Full are planned. Learn more →
HeliosDB Full is licensed through sales under SSPL-1.0. HeliosDB Nano is open source under Apache 2.0 and free to use.