Distributed SQL Engine
Project description
A query engine for your data, no database required
Documentation | Examples | Contributing | Blog
NOTE Opteryx is an alpha product. Alpha means different things to different people, to us, being alpha means:
- Some features you may expect from a Query Engine may not be available
- Some features may have undetected bugs in them
- Some features may not be tuned for performance
- Some previously working features may break
Opteryx has no server component, Opteryx just runs when you need it making it ideal for deployments to platforms like Kubernetes, GCP Cloud Run, AWS Fargate and Knative.
- Bug Reports GitHub Issues
- Feature Requests GitHub Issues
- Source Code GitHub
- Discussions GitHub Discussions
How Can I Contribute?
All contributions, bug reports, bug fixes, documentation improvements, enhancements, and ideas are welcome.
If you have a suggestion for an improvement or a bug, raise a ticket or start a discussion.
Want to help build mabel? See the contribution guidance.
What Opteryx is
How is it different to SQLite or DuckDB?
Opteryx is solving a different problem in the same space as these solutions. Opteryx avoids loading the dataset into memory unless there is no other option, as such it can query petabytes of data on a single, modest sized node.
This also means that queries are not as fast as solutions like SQLite or DuckDB.
How is it different to MySQL or BigQuery?
Opteryx is an ad hoc database, if it can read the files, it can be used to query the contents of them. This means it can leverage data files used by other systems.
Opteryx is read-only, you can't update or delete data, and it also doesn't have or enforce indexes in your data.
How is it differnt to Trino?
Opteryx is designed to run in a serverless environment where there is no persistent state. There is no server or coordinator for Opteryx, the Engine is only running when it is serving queries.
When you are not running queries, your cost to run Opteryx is nil (+). This is particularly useful if you have a small team accessing data.
This also means the Query Engine can scale quickly to respond to demand, running Opteryx in an environment like Cloud Run on GCP, you can scale from 0 to 1000 concurrent queries within seconds - back to 0 almost as quickly.
(+) depending on specifics of your hosting arrangement.
Security
See the project security policy for information about reporting vulnerabilities.
License
The foundational technologies in Opteryx are:
- Apache Arrow memory model and compute kernels for efficient processing of data
- Parts of PyArrow_Ops by Tom Scheffers has been integrated into the codebase to support handling Arrow structured data
- sqloxide is used to parse SQL queries to syntax trees
- cython
- numpy
- orjson
- [cityhash] is used for non-cryptographic hashing
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for opteryx-0.0.0a71-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1816c4f0aaf70e89dcbbfa4df2c5489f4033432284a41ff4652de63c1402b86d |
|
MD5 | 898859676a860c23654af93d390ce18a |
|
BLAKE2b-256 | 51a1a03bdca0d218d221e15bd7cc0af026c861ec955241e851ec2fc178685711 |
Hashes for opteryx-0.0.0a71-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff14652019c8198a8d329b37d68f7076ff1ebbb3944467f0f47c74f9d76cab9c |
|
MD5 | e202f77810ab528396a1e66e531c74ee |
|
BLAKE2b-256 | 6cd286f3af801fed082e91382daa947130fe9b2fae60317863543ea83409e9f6 |
Hashes for opteryx-0.0.0a71-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e527dcb8a8a679c695c8223957833162246fca08d0512ad3a7965c2a5ce355e2 |
|
MD5 | 8491d1fa8887eccf08a3c95835c90a04 |
|
BLAKE2b-256 | 76f85917cfdfa22d1ee2279eb817f0f7f28df99877008adf07cda768af0bde77 |
Hashes for opteryx-0.0.0a71-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a50a7336fd98345e5d28bda807a1c1d8d70c012d57f0a3f5ea66be24acef9de3 |
|
MD5 | 2d3ece9aef015f5b58c39b9543ac4df0 |
|
BLAKE2b-256 | 265619ef12889d4b03bbfc47709276458ca13cdc083b92a30d920b6b85689121 |
Hashes for opteryx-0.0.0a71-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf4d0c381c9a28d7e25a92bea29ac7e1944ce9b5ae55bb1dc00d5cacf905a89a |
|
MD5 | 136519fd2ab2ffaf449317db4334530d |
|
BLAKE2b-256 | c0fb7e0235c8fc5e0526aff45033f92e9fe0a0c0d47677eb197b5380e38af45d |
Hashes for opteryx-0.0.0a71-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cd2015bb4db4e6c25109f6451cd1a01c776ec5f99bea1462e73c9fa42a3dd54 |
|
MD5 | 552c7d6507af0a04aaeaa363ff650228 |
|
BLAKE2b-256 | d16a53492af9617074dd77c56516371886338f91542d4f680c8ff46fd343af66 |