Welcome to the home of the GQ-Fast, a fast in-memory SQL analytics on typed graphs.
Applications use GQ-Fast as an OLAP-oriented database that accompanies their original, transaction-oriented database. The following figure gives an overview of GQ-Fast's architecture. It has two main steps:
- GQ-Fast Database Generation. The GQ-Fast Loader receives loading commands, retrieves data from one or multiple relational databases, and creates GQ-Fast indices. When loading data into GQ-Fast database, users should specify
(i) columns to be indexed, where GQ-Fast builds lookup tables upon them. Then GQ-Fast organizes the values in other columns as fragments; (ii) encoding method for each column exclude indexed columns. Once a column is chosen to be encoded by an encoding method, then the fragments of it are all encoded by this encoding method.
- GQ-Fast Query Processing. The GQ-Fast Query Processor receives an SQL query and outputs its result. It consists of several subcomponents. The Algebra Translator translates an SQL query into a relational algebra expression, which is then transformed into a Relationship Query Normalized Algebra (RQNA) expression by the RQNA Normalizer using rewriting rules. The RQNA Normalizer also verifies whether an SQL query is a relationship query by checking the restrictions according to metadata. Afterwards, the Physical-plan Producer transforms the RQNA expression into a physical-level plan. The Code Generator consumes the physical plan and metadata and produces a C++ program, which is then compiled and ran on the GQ-Fast index to get final results. GQ-Fast also provides the ability to prepare a query statement once and to execute it multiple times (as JDBC does), changing the parameters each time.