Vertica 5.0 is coming out today, and delivering the down payment on Vertica’s analytic platform strategy. In Vertica lingo, there’s now a Vertica SDK (Software Development Kit), featuring Vertica UDT(F)s* (User-Defined Transform Functions). Vertica UDT syntax basics start:
- In this release, Vertica UDTFs can only be written in C++. Other UDTF languages are promised.
- Otherwise, Vertica UDTFs sound pretty flexible; in particular:
- They can ingest and emit any number of rows.
- Their assumed schemas can be defined programmatically (both input and output).
- Vertica UDTFs go in the SELECT clause, not the FROM clause. I must confess to not grasping Vertica’s argument as to why this provides great and important flexibility.
- UDTF syntax mirrors SQL 99 Analytics pretty closely.
*It looks like the “F” is in the official name, but will often be dropped colloquially.
Other Vertica analytic platform highlights include:
- Proper integrated UDT workload management is promised, and there’s a little bit of UDT workload management already.*
- Vertica is delivering some prebuilt functions for aggregation, statistics, etc.
- Vertica has cool temporal and time series features.
- Vertica’s geospatial support seems pretty basic (circles and rectangles).
- Vertica’s NDA plans moving forward are pretty much as one would hope.
*Vertica’s UDT workload management is RAM-only, and “honor system” — i.e., it assumes that the UDTFs declare their resource usage correctly, which Vertica says is the right way to handle in-process C++ routines.
Vertica also argues that fast-performing SQL in and of itself can amount to analytic functionality. For example, Vertica has tried to ensure that it offers great performance in the kinds of self-joins that are used in graph analysis. Since Vertica has plenty of customers among the kinds of Web and telco companies that use graph analysis today, I’m inclined to grant some benefit of the doubt here. That said, Vertica thinks 3 hops is plenty for most kinds of graph analysis people want to do, and I can think of applications (e.g. anti-terrorism) where that’s surely not the case.