SpaceCurve: A Unique and Fast Geospatial Database
jandrewrogers.com
jandrewrogers.com
Nice to see HPC learning being used outside the field. Many people horrifically underestimate or simply overlook the cost of fetching data from outside your NUMA node.
In fact, debugging an HPC code on a Cray machine late one night, staring at large dumps of binary coded hyper-rectangles, was where I first noticed the deep bit-wise patterns in some types of spatial representations that SpaceCurve now exploits. It allows computation on hyper-rectangle primitives to be nearly as fast as integer primitives on ordinary silicon, which was not the case with earlier versions of my work.
A prior discussion here suggests what holds it back is cultures. The HPC people keep to themselves and don't try to make anything useful outside the field. The cloud projects act like they're the only thing going on. And so on. Bridging the gap may never happen but I always encourage upstarts to dig into the HPC literature on their topics as they might find gold. One of few cases an ACM/IEEE fee is worthwhile. ;)
Personal example was trying to find a patent-resistant, NUMA architecture to use for security-enhanced SPARC CPU's. Stumbled upon the MIT Alewife machine that did NUMA up to 512 nodes using (a) SPARC processor modified for quick context-switching & message passing; (b) a single, custom chip to handle NUMA aspects. Making cheap, COTS hardware NUMA w/ open design would take one ASIC development using that architecture. Just cuz I studied supercomputing once and remembered to look it up. :)
One of the professors at my institution is big in that field.
In SpaceCurve, all points are represented as hyper-rectangles. Literally everything is a hyper-rectangle. It is the most unusual part of the whole thing. There is no linearization on a space-filling curve.
It was evocative while being vague. People only started associating it with space-filling curves in the last year or two once those started becoming trendy again among programmers.
Unfortunately it relies on efficiently representing and querying the set of volumes built up during the query process and the data structure used in the paper is ridiculously impractical. I haven't seen an implementation yet that managed to tame the constant factors. Perhaps seeing how the OP models volumes/constraints would help.
I expect plenty more to come from this.
Then when it comes to net I/O there is still the problem of the IRQ coming to a specific core (or maybe a random core depending on the OS) which is not the core of your thread (if you have a shared nothing architecture).
Lots of claims in this post.
Anybody know how a relational join algorithm like this would work?
The capability of these generalized parallel ad hoc join algorithms where demonstrated on a supercomputer circa 2009.
Is this external work? If so, do you have any pointers to it?
The only people at the time that immediately grokked the broad implications and had a deep interest in the theory behind it were computer science researchers at certain government agencies. Hence why so much of the early computer science was verified on supercomputers instead of commodity clusters. Unlike today, you could not rent a cluster for this type of thing back then.
None of the early research produced public results.
* Not open source
* Not a single benchmark
This is just an ad for a commercial product.
The OP may not answer every question but this is obviously serious work, so it deserves a fair treatment, not a glib dismissal—especially since the people working on it are here answering questions. This is deeply interesting stuff and there's no excuse for unsubstantive discussion.
Nevermind, it's not open source.
At the time it was really frustrating to here comments like yours since the MongoDB solution was superficially similar to the consumer, but was basically worse on every measurable dimension if you knew what you were doing. I hadn't heard of SpaceCurve before today, but I skimmed the linked article and some other stuff on the blog and it looks like this guy knows what he's talking about. My guess is it's a much better geospatial architecture than MongoDB's.