@@ -5,6 +5,30 @@ by storing data in tiles: group of column values. It allows to reduce deform tup
5
5
Please look at tpch.sql example which shows how VOPS can be used to increase speed of TPC-H Q1/Q6 queries
6
6
more than ten times.
7
7
8
+ How to use VOPS? First of all you need to somehow load data in VOPS.
9
+ It can be done in two ways:
10
+ 1 . Load data from existed table. In this case you just need to create VOPS projection of this table (using VOPS types instead
11
+ of original scalar types) and copy data to it using VOPS populate(...) function.
12
+ 2 . If you data is not yet loaded in the database, you can import it directly from CSV file into VOPS table using VOPS import(...) function.
13
+
14
+ Ok, now you have data in VOPS format. What you can do with it? VOPS manual (vops.html) explains many different ways of running
15
+ VOPS queries. VOPS provides set of overloaded operators which allows you to write queries in more or less standard SQL.
16
+ Operators which can not be overloaded (and, or, not, between) are handled by VOPS executor hook.
17
+
18
+ VOPS is able to efficiently execute filter and aggregation queries. What about other kinds of queries? For examples queries with
19
+ joins? There are once again two choices:
20
+ 1 . You can use original table (if any) for such queries.
21
+ 2 . You can use VOPS foreign data wrapper (FDW) to present VOPS table to PostgreSQL as normal table (with scalar column types).
22
+ The parts of query which can be efficiently executed by VOPS (filtering and aggregation) will be pushed by Postgres query optimizer
23
+ to VOPS FDW and will be executed using VOPS operators. Other query nodes will fetch data from VOPS as standard tuples
24
+ and process them in the same way as in case of normal tables. VOPS FDW provides statistic (you need to do ANALYZE for FDW table)
25
+ so query execution plan should be almost the same as for normal tables. The only exception is parallel processing:
26
+ parallel processing is not currently supported by VOPS FDW.
27
+
28
+ So what finally you get? By creating of VOPS projection of existed data or storing data in VOPS table you can speed-up execution
29
+ of some queries more than ten times (mostly analytic queries with aggregation and without joins). And still be able to execute
30
+ all other queries using VOPS FDW.
31
+
8
32
Chinces version of VOPS documantation can be found here:
9
33
https://github.com/digoal/blog/blob/master/201702/20170225_01.md
10
34
0 commit comments