Video summary
Kurt Westerfeld introduces Floe as a startup venture fully funded by Yellowbrick that operates in the data warehouse and query service market with a distinct focus on lakehouse architectures. Drawing from his background at Yellowbrick, where they built petabyte-scale MPP databases known for predictable performance using Postgres technology, Kurt explains the significant challenges emerging in the industry's shift toward open table formats like Iceberg or Delta Lake. He notes that while achieving high-end OLAP success was easier with controlled hardware appliances, the modern lakehouse environment involves multiple writers and readers creating an "untamed" ecosystem where maintaining enterprise-scale concurrency, predictability, and auditable results is incredibly difficult without a unified approach to integration.
To address these complexities, Floe adopts a strategy centered on solving fundamental integration problems rather than just optimizing isolated database components. The solution relies heavily on two new open-source projects: Flowcat, which acts as an advanced catalog system similar to Postgres but extensible across various engines and cloud providers, and Flowscan, designed specifically to handle the indexing problem at petabyte scale by generating necessary statistics for data skipping and read planning. These tools feed into a query planner derived from Yellowbrick's technology that utilizes metadata from Flowcat to optimize execution plans, effectively turning what is often an integration nightmare into a manageable workflow through centralized control of statistics and schema information.
The architecture further ensures stability and security by running the heavy lifting on dedicated tenant-isolated compute clusters managed via Kubernetes with Istio for traffic steering and microservice protection. Kurt highlights that this setup supports both stateless services and pinned query lifecycle stages, allowing queries to pass through authentication layers using OAuth and mTLS before executing optimized code generated from Abstract Syntax Trees (AST). A critical component of their system is Flow WLM, a workload management tool that provides administrators with granular control over resource utilization, isolation, fairness, and prioritization. This capability is essential for taming agentic workloads characterized by massive joins and ad-hoc SQL generation, ensuring that unpredictable user behavior does not degrade performance or compromise the integrity of financial planning data.
In conclusion, Floe aims to deliver a platform where customers can expect the same level of predictable cost and performance they enjoyed with Yellowbrick's traditional appliances but within an open ecosystem. Kurt emphasizes that while many enterprises are still struggling to operationalize their lakehouse implementations after moving data there, Floe provides the necessary infrastructure to succeed in this new reality by combining robust query planning with advanced workload management. The presentation ends on a personal note where Kurt shares his journey from studying music theory to becoming a software engineer, illustrating how he leveraged his love for jazz and live music alongside his coding skills to build tools that solve tough problems in the evolving data landscape.
Read the full video transcript
Um, and I'm going to give an
introduction [snorts] to Flow. Um, as
Andy said, we're an offshoot, um, fully
funded by Yellowbrick, um, and we're,
you know, operating in startup mode and
focusing on a different part of the data
warehouse and, um, query service, uh,
market. So, let's let me let me talk a
little bit about what, um, what
Yellowbrick has done in the past, so I
can relate it to what we're going to try
to do for the lakehouse.
Um, we built a petabyte scale MPP
database, um, focusing on predictable
performance, um, a lot of systems
engineering. We we first delivered it as
a as a hardware appliance with dedicated
flash, um, uh, compute, and, um, moved
that to cloud, um, when I say around uh,
2020.
Um, and have have operated both for for
different, uh, kinds of customers,
different kinds of workloads, customers
doing both at the uh, you know, at the
same time, etc. Um, and what we've
realized is that as the market has has
sort of started to move towards open
table formats and open catalogs, that
really achieving the the the degree of
success we had with the high end of the
OLAP, um, space with Yellowbrick is
incredibly challenging. And I'm going to
talk about a number of those challenges
today. Um, we've we've got I, you know,
really clear plans on how we're going to
solve a lot of these challenges, but
some of them we're still, you know, in
the process of solving. Um, and I think
that's kind of an exciting place to be.
Um, certainly building stuff is fun. Um,
solving tough problems is is what we we
love. Um,
and and so what we did was we started to
to to take a look at, you know,
on this lakehouse architecture, um,
we're no longer, um, sort of the owner
of, uh, the right path.
And we still need to achieve, you know,
enterprise scale concurrency
predictability, auditable results for
financial workloads, something that is
maybe non-obvious but related to, you
know, getting accurate statistics for
planning, um, in in kind of subtle ways.
Um, have the same level of ecosystem
interoperability, try to do better
actually. Um, so we're Postgres-based,
um, we haven't changed that. Um, and
then and really we know what's happening
in the industry, you know, in the last
year, especially kind of speeding up in
the last 6 months, is we have these
agentic workloads. Um, we see what they
do to a data warehouse, um, writing, you
know, really kind of crap code, um, for
SQL at times, sometimes, um, you know,
massive joins that, you know, aren't
easy to plan. Um, and so we know that
what our customers want is they they're
moving data to kind of a central place
with open table formats and and, um,
there's many writers, many readers, but,
um, there's a lot of untamed sort of
feel to this, right? There's there's a a
fair amount of, um, you know,
ad hoc aspects to it that make it
incredibly hard. And and so this is the
the the place that we knew as we
succeeded with Yellowbrick with these ad
hoc workloads, um, with, you know,
humans, that we know that we can kind of
apply some of the same, um, technologies
to solve this problem. Um, and then and
so looking at, you know, what what does
it mean a closed system, an open system?
Um, obviously databases are open,
anybody can connect to them, but, um,
when you have a a multiple writer kind
of dynamic going on, um, it's it's
incredibly challenging in ways that I
don't think are very comfortable for
database engineers. Um,
it's it's really about instead of, uh,
you know, optimizing, you know, this
particular, uh, you know, part of the
database, it's it's really kind of
looking at, well, this thing is
essentially an integration problem. Um,
it it of course has other aspects to it,
but if you don't embrace the idea that
that integration is key to your success,
you won't you won't achieve much. Um,
execution engines are are all over the
place, um, but query planning on the
lakehouse is an incredibly hard problem.
Um, it turns out that, you know, the
Parquet spec, for example, has mixed up
the word should and must, um, in terms
of what statistics are written. Um, and
so because you don't control who's
writing the data, you really can't know,
okay,
there's a few things you can know, the
the number of rows, some basic
statistics are are knowable by looking
at Parquet files, but in order to do
this at the at the scale that we want to
achieve,
we have to sort of re sort of engaged at
the level of statistics that we need to
build, so, um, and and and maintain, um,
for data skipping. Um, and this really
kind of drives back to our our
customers' demand of us, you know,
predictable cost and performance. And so
when we look at a Yellowbrick customer
that is moving, you know, they're
they're kind of in that that that slow,
yeah, we want to get there, uh, mode
that many enterprises are. Um, but once
they land there, their expectation is
what Yellowbrick is already delivering
to them. So, we're sort of doing this
now as a in in in a different, you know,
approach, so that we can sort of meet
them when they when they get there in a
lot of ways. Um,
and and we've we also had, uh, our CTO
and our chief product officer, you know,
go to the the Iceberg Summit last week.
And and what we're what we're hearing is
customers are really kind of still
struggling right now with the right
path. Um, they haven't really even
gotten to the point where they're trying
to operate operationalize the the data
once it lands. Um, so this is sort of an
interesting place to be. Um, and, um, so
we we're really excited to be doing this
with Flow right now.
Uh, sorry. Next slide.
So, let me just break down how we're
doing it. Um,
first of all, we decided that the the
kind of this integration hub, if you
will, is an incredibly important thing.
So, we're we we decided, well, the
catalog of catalogs pattern, where we
embrace many different open table
formats, many different cloud providers
providing that, um, is sort of front
front and center. So, we're we've
open-sourced Flowcat. Um, and Flowcat
basically is, if you think of what uh,
Postgres is today, it's it's kind of
like PG catalog on steroids. Um,
essentially, um, we'll be, uh,
extensible to different personality
engines. We talked about that last week.
Um, that's been recorded. I don't want
to go too much into this. Um, you can
actually download and use it today. Um,
we'd love to to to get more contributors
on it. Um, anybody that wants to, um,
surely can, uh, start to use it now. Um,
an adjunct to that is something we call
Flowscan. Um, this is, uh, part of Flow,
uh, an extension to Flowcat to to deal
with the indexing problem that I
mentioned. Um, this is a not only an
indexer but a read planning farm. It
turns out that if you're at petabyte
scale, the the the indices, the stats,
everything about, you know, doing a
large scale plan over huge fact tables
is itself a data, uh, big data problem.
Um, so we're we're we're actually sort
of in this this research and and
development mode right now building
this. Um, but the the the basic gist of
this is this component performs the the
the table scan pruning for our compute
clusters. Um,
coming from Yellowbrick tech, um, so
those two things are new. Um,
Yellowbrick technology, um, we have our
query planner. Um, it's it's started
with a hard PG fork. Um, we had to add a
number of
uh, really important optimizations for
MPP,
uh, along the lines of, uh, data
distribution. Um,
it uses the statistics and the metadata
from Flowcat, um, and it it, um,
it also encompasses Flow SQL that that
is, um, our query execution pipeline,
um, that turns AST,
um, parse parse trees into, uh, object
code. And and that runs on dedicated
tenant isolated compute, um, uses the
Yellowbrick executor. Um, and then
finally, the thing that, uh, we know
will help tame agentic workloads, um,
WLM, Flow WLM handles, um, isolation,
fairness, prioritization. And, um, this
is sort of the primary administrator
tuning area where they can tune resource
utilization, uh, lots of knobs, um, and
ability to to, uh, control their
workloads. And, uh, finally, I'm going
to show how we're deploying this. Um,
each one of these areas is sort of, if
you read, uh, left to right, uh, with
me, we have a couple different database
clients. Um, we, as I mentioned, we're
Postgres compatible, so we have a libpq
database client entry, but it's it's
sibling, um, is also Arrow Flight SQL,
um, going to shared, uh, service
infrastructure. Um, we're deploying on,
uh,
you know, a Kubernetes, uh, control
plane. Um,
uh, we have a a number of different open
source components that are used to to
not only steer traffic, um, using Istio,
but all and and protect, um, components,
you know, uh, or control authorization
between, um, these microservices, but
also, um, isolate, um, compute where the
data the data touch point is for, um,
uh, the you know, the the external
object storage. And that's what is
depicted in this this sort of green
area. Um, query lifecycle would would
land with our terminator Arrow Flight
SQL, uh, authentication with a session
service that speaks OAuth, um, mTLS, um,
uses personal access tokens instead of
passwords, all controlled through an
account, um, user interface, um, that
the customer interacts with. Um, we have
tenant affinitized services and we have
stateless services. So, this is uh,
pretty important. Um, there's areas of
the of the query life cycle that are
that are sort of pinned and then there's
areas that are that are stateless.
A query goes through a number of
transforms before it lands on our
compute cluster
and
executes there. Results are returned in
internally in in in either flat arrow
format or row optimized for a row weight
oriented client. And And that's
that's what I prepared for today. I know
I had about 10 minutes and I'm right up
against that
and would be happy to answer questions,
Andy.
All right. Round of applause.
All right. Any questions? Okay.
Yes. I have a non-database related
question if that's allowed. I guess.
Maybe.
Um was there a reason you started out as
music theory and then switched to CS?
>> [laughter]
>> Yeah, that's a great question. I It
turns out I'm not a very good musician.
>> [laughter]
>> I did have a love for it. I
you know, in in high school went to to
music school part-time.
Still a huge huge jazz fan and love live
music.
But
you know, just didn't
It also turned out that I I learned I
was a really good coder. And and so when
I when I realized I would be an average
musician but a pretty darn good software
engineer, it was a pretty obvious
choice.