GPU database engine
Cuda C C++ Yacc Other
Latest commit d05ecdf Nov 17, 2016 @antonmks Updated Q7 of TPCH
Permalink
Failed to load latest commit information.
Makefile - Fixed an exception, occurs when executed with no arguments May 11, 2016
MurmurHash2_64.cu switched to mGPU 2.0 Apr 22, 2016
alenka.h switched to mGPU 2.0 Apr 22, 2016
atof.cu switched to mGPU 2.0 Apr 22, 2016
atof.h switched to mGPU 2.0 Apr 22, 2016
bison.cu Added "no encoding" option for columns Nov 14, 2016
bison.tab.c Added "no encoding" option for columns Nov 14, 2016
bison.tab.h Added "no encoding" option for columns Nov 14, 2016
bison.y Added "no encoding" option for columns Nov 14, 2016
callbacks.c switched to mGPU 2.0 Apr 22, 2016
callbacks.h switched to mGPU 2.0 Apr 22, 2016
cm.cu Fix for a memory leak Nov 16, 2016
cm.h Fix for a memory leak Nov 16, 2016
compress.cu switched to mGPU 2.0 Apr 22, 2016
filter.cu Fix for a memory leak Nov 16, 2016
filter.h switched to mGPU 2.0 Apr 22, 2016
fl.l Added "no encoding" option for columns Nov 14, 2016
how_to_run_tpch.txt Added a guide to running TPCH queries Oct 20, 2016
lex.yy.c Added "no encoding" option for columns Nov 14, 2016
main.cu - Fixed an exception, occurs when executed with no arguments May 11, 2016
merge.cu Added support for grouping on functions Nov 7, 2016
merge.h switched to mGPU 2.0 Apr 22, 2016
operators.cu Added "no encoding" option for columns Nov 14, 2016
operators.h Added "no encoding" option for columns Nov 14, 2016
readme.md Update readme.md Mar 16, 2016
select.cu Bug fix Nov 17, 2016
select.h Added support for grouping on functions Nov 7, 2016
sorts.cu Fixed a bug with already sorted segments Oct 19, 2016
stdint.h switched to mGPU 2.0 Apr 22, 2016
strings.cu switched to mGPU 2.0 Apr 22, 2016
strings.h switched to mGPU 2.0 Apr 22, 2016
strings_join.cu switched to mGPU 2.0 Apr 22, 2016
strings_sort_device.cu switched to mGPU 2.0 Apr 22, 2016
strings_sort_host.cu switched to mGPU 2.0 Apr 22, 2016
strings_type.h switched to mGPU 2.0 Apr 22, 2016
tpch.zip Updated tpch.zip Oct 20, 2016
tpch_load_scripts.zip Added a guide to running TPCH queries Oct 20, 2016
tpch_queries.zip Updated Q7 of TPCH Nov 17, 2016
zone_map.cu Fixed a bug with already sorted segments Oct 19, 2016
zone_map.h switched to mGPU 2.0 Apr 22, 2016

readme.md

Welcome to Alenka - GPU database engine

What is this?

This is a GPU based database engine written to use vector based processing and high bandwidth of modern GPUs

Requirements

  • CUDA (nvcc) + Nvidia GPU
  • bison
  • flex
  • Modern GPU Library (included as submodule)

How to build?

git clone --recursive https://github.com/antonmks/Alenka.git
cd Alenka
make

Features :

  • Vector-based processing
    CUDA programming model allows a single operation to be applied to an entire set of data at once.

  • Smart compression
    Ultra fast compression and decompression on GPU. Database operations on compressed data.

  • Column-based storage
    Minimizes disk I/O by only accessing the relevant data.

  • Data skipping
    Better performance without indexes.

  • Fast Loading
    Gpu based CSV parser loads the data into database at very high speed.

How to use it ?

Create your data files :

Run scripts load_orders.sql, load_lineitem.sql and load_customer.sql to create your database files.

Run your queries from a command prompt or use Alenka JDBC driver from Technica Corporation

Step 1 - Filter data

OFI := FILTER orders BY o_orderdate < 19950315;

CF := FILTER customers BY c_mktsegment == "BUILDING";

LF := FILTER lineitem BY shipdate > 19950315;

Step 2 - Join data

OLC := SELECT o_orderkey AS o_orderkey, o_orderdate AS o_orderdate, o_shippriority AS o_shippriority, price AS price, discount AS discount FROM LF JOIN OFI ON orderkey = o_orderkey JOIN CF ON o_custkey = c_custkey;

Step 3 - Group data

F := SELECT o_orderkey AS o_orderkey1, o_orderdate AS orderdate1, o_shippriority AS priority, SUM(price*(1-discount)) AS sum_revenue, COUNT(o_orderkey) AS cnt
FROM OLC GROUP BY o_orderkey, o_orderdate, o_shippriority;

Step 4 - Order data

RES := ORDER F BY sum_revenue DESC, orderdate1 ASC;

Step 5 - Save the results

STORE RES INTO 'results.txt' USING ('|') LIMIT 10;