logicalclocks / rondb

This is RonDB, a distribution of NDB Cluster developed and used by Hopsworks AB. It also contains development branches of RonDB.
https://www.rondb.com
Other
585 stars 45 forks source link

RONDB-589 Pushdown Aggregation - 24.10-main #477

Closed KernelMaker closed 4 months ago

KernelMaker commented 4 months ago

Description:

  1. API provides interfaces to write assembly-style code programs for aggregation queries.
  2. API pushes the program with a scan request to RonDB data nodes.
  3. Data nodes scan the rows from a specific table, for each row it gets, executing the pushed down program to generate the aggregation results locally.
  4. when the scan is done on data nodes, they send the local result back to API.
  5. API gathers and merges the results to get the final aggregation results.

Current abilities: a.Supported column type:

  1. TINYINT
  2. TINYINT UNSIGNED
  3. SMALLINT
  4. SMALLINT UNSIGNED
  5. MEDIUMINT
  6. MEDIUMINT UNSIGNED
  7. INT
  8. INT UNSIGNED
  9. BIGINT
    1. BIGINT UNSIGNED
    2. FLOAT
    3. DOUBLE
    4. DECIMAL(Partially supported. Pushdown interpreter can load and parse DECIMAL column and try to convert it to BIGINT/BIGINT UNSIGNED/DOUBLE dynamically)

b.Supported arithmetic operator:

  1. Addition
  2. Subtraction
  3. Multiplication
  4. Division (DIV operator is supported. TODO: support / operator)
  5. Modulus

c. Support group by operation

d. Support working with pushdown filter

e. Support working with table-scan, index-scan( and range-scan).

KernelMaker commented 4 months ago

DONE