Description
Velox is a C++ database acceleration library which provides reusable,
extensible, and high-performance data processing components. These components
can be reused to build compute engines focused on different analytical
workloads, including batch, interactive, stream processing, and AI/ML.
Velox was created by Meta and it is currently developed in partnership with
Intel, ByteDance, and Ahana.
In common usage scenarios, Velox takes a fully optimized query plan as input
and performs the described computation. Considering Velox does not provide a
SQL parser, a dataframe layer, or a query optimizer, it is usually not meant
to be used directly by end-users; rather, it is mostly used by developers
integrating and optimizing their compute engines.
Velox alternatives and similar software solutions
Based on the "Analytics" category.
Alternatively, view velox alternatives based on common mentions on social networks and blogs.
-
Superset
DISCONTINUED. Apache Superset is a Data Visualization and Data Exploration Platform [Moved to: https://github.com/apache/superset] -
Metabase
The simplest, fastest way to get business intelligence and analytics to everyone in your company :yum: -
Redash
Make Your Company Data Driven. Connect to any data source, easily visualize, dashboard and share your data. -
PostHog
๐ฆ PostHog provides open-source product analytics, session recording, feature flagging and A/B testing that you can self-host. -
Piwik
Empowering People Ethically with the leading open source alternative to Google Analytics that gives you full control over your data. Matomo lets you easily collect data from websites & apps and visualise this data and extract insights. Privacy is built-in. Liberating Web Analytics. Star us on Github? +1. And we love Pull Requests! -
GoAccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser. -
Plausible
Simple, open source, lightweight (< 1 KB) and privacy-friendly web analytics alternative to Google Analytics. -
Countly
Countly is a product analytics platform that helps teams track, analyze and act-on their user actions and behaviour on mobile, web and desktop applications. -
Fathom Analytics
Fathom Lite. Simple, privacy-focused website analytics. Built with Golang & Preact. -
ThinkUp
ThinkUp gives you insights into your social networking activity on Twitter, Facebook, Instagram, and beyond. -
Open Web Analytics
Official repository for Open Web Analytics which is an open source alternative to commercial tools such as Google Analytics. Stay in control of the data you collect about the use of your website or app. Please consider sponsoring this project. -
Chartbrew
Open-source web platform used to create live reporting dashboards from APIs, MongoDB, Firestore, MySQL, PostgreSQL, and more ๐๐ -
Socioboard
Socioboard is world's first and open source Social Technology Enabler. Socioboard Core is our flagship product. -
Mixpost
Self-hosted social media management. Schedule and organize your social content. Built with Laravel Framework. -
Rakam
๐ Collect customer event data from your apps. (Note that this project only includes the API collector, not the visualization platform) -
IG Monitoring
DISCONTINUED. ๐จ DISCONTINUED๐จ IGMonitoring - Free, self hosted Instagram Analytics and Stats -
Tellery
Tellery lets you build metrics using SQL and bring them to your team. As easy as using a document. As powerful as a data modeling tool. -
Matomo
Leading open-source analytics platform that gives you more than just powerful analytics, formerly known as Piwik.
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Velox or a related project?
README
Velox is a C++ database acceleration library which provides reusable, extensible, and high-performance data processing components. These components can be reused to build compute engines focused on different analytical workloads, including batch, interactive, stream processing, and AI/ML. Velox was created by Facebook and it is currently developed in partnership with Intel, ByteDance, and Ahana.
In common usage scenarios, Velox takes a fully optimized query plan as input and performs the described computation. Considering Velox does not provide a SQL parser, a dataframe layer, or a query optimizer, it is usually not meant to be used directly by end-users; rather, it is mostly used by developers integrating and optimizing their compute engines.
Velox provides the following high-level components:
- Type: a generic typing system that supports scalar, complex, and nested types, such as structs, maps, arrays, tensors, etc.
- Vector: an Arrow-compatible columnar memory layout module, which provides multiple encodings, such as Flat, Dictionary, Constant, Sequence/RLE, and Bias, in addition to a lazy materialization pattern and support for out-of-order writes.
- Expression Eval: a fully vectorized expression evaluation engine that allows expressions to be efficiently executed on top of Vector/Arrow encoded data.
- Function Packages: sets of vectorized function implementations following the Presto and Spark semantic.
- Operators: implementation of common data processing operators such as scans, projection, filtering, groupBy, orderBy, shuffle, hash join, unnest, and more.
- I/O: a generic connector interface that allows different file formats (ORC/DWRF and Parquet) and storage adapters (S3, HDFS, local files) to be used.
- Network Serializers: an interface where different wire protocols can be implemented, used for network communication, supporting PrestoPage and Spark's UnsafeRow.
- Resource Management: a collection of primitives for handling computational resources, such as memory arenas and buffer management, tasks, drivers, and thread pools for CPU and thread execution, spilling, and caching.
Velox is extensible and allows developers to define their own engine-specific specializations, including:
- Custom types
- Simple and vectorized functions
- Aggregate functions
- Operators
- File formats
- Storage adapters
- Network serializers
Examples
Examples of extensibility and integration with different component APIs [can be found here](velox/examples)
Documentation
Developer guides detailing many aspects of the library, in addition to the list of available functions can be found here.
Getting Started
We provide scripts to help developers setup and install Velox dependencies.
Get the Velox Source
git clone --recursive https://github.com/facebookincubator/velox.git
cd velox
# if you are updating an existing checkout
git submodule sync --recursive
git submodule update --init --recursive
Setting up on macOS
Once you have checked out Velox, on an Intel MacOS machine you can setup and then build like so:
$ ./scripts/setup-macos.sh
$ make
On an M1 MacOS machine you can build like so:
$ CPU_TARGET="arm64" ./scripts/setup-macos.sh
$ CPU_TARGET="arm64" make
You can also produce intel binaries on an M1, use CPU_TARGET="sse"
for the above.
Setting up on Linux (Ubuntu 20.04 or later)
Once you have checked out Velox, you can setup and build like so:
$ ./scripts/setup-ubuntu.sh
$ make
Building Velox
Run make
in the root directory to compile the sources. For development, use
make debug
to build a non-optimized debug version, or make release
to build
an optimized version. Use make unittest
to build and run tests.
Note that,
- Velox requires C++17 , thus minimum supported compiler is GCC 5.0 and Clang 5.0.
- Velox requires the CPU to support instruction sets:
- bmi
- bmi2
- f16c
- Velox tries to use the following (or equivalent) instruction sets where available:
- On Intel CPUs
- avx
- avx2
- sse
- On ARM
- Neon
Building Velox with docker-compose
If you don't want to install the system dependencies required to build Velox, you can also build and run tests for Velox on a docker container using docker-compose. Use the following commands:
$ docker-compose build ubuntu-cpp
$ docker-compose run --rm ubuntu-cpp
If you want to increase or decrease the number of threads used when building Velox
you can override the NUM_THREADS
environment variable by doing:
$ docker-compose run -e NUM_THREADS=<NUM_THREADS_TO_USE> --rm ubuntu-cpp
Contributing
Check our [contributing guide](CONTRIBUTING.md) to learn about how to contribute to the project.
Community
The main communication channel with the Velox OSS community is through the the Velox-OSS Slack workspace. Please reach out to [email protected] to get access to Velox Slack Channel.
License
Velox is licensed under the Apache 2.0 License. A copy of the license [can be found here.](LICENSE)
*Note that all licence references and agreements mentioned in the Velox README section above
are relevant to that project's source code only.