It was always awkward to figure out what components you needed to build a development environment for it. It depended on having a virtual machine with a specific version of Greenplum Database running in it, but that version of the database wasn't easy to find. An open source Greenplum Database might make it easier to get started.
Pivotal Greenplum Database has been open sourced
41–50 of 52 posts
Re: Pivotal Greenplum Database has been open sourced
#42What's up with just a single commit since 2006? https://github.com/greenplum-db/gpdb/commits/master Why include all the really old commits, while squashing the most recent 10 years of commits into a single commit (6b0e52bead)?
The old source history is Postgres itself, the latest single commit is Greenplum. I wonder why it's based on Postgres 8.2 rather than a newer version?
That's what it was originally forked from.
Re: Pivotal Greenplum Database has been open sourced
#43Edit: There's a shiny website too -- http://greenplum.org/ We (Pivotal, for whom I don't speak in any official capacity) have also opensourced Apache HAWQ (incubating)[1], which is an SQL front-end for Hadoop that was extracted from Greenplum, as well as Apache Geode (incubating)[2] which was based on GemFire. This was part of a general announcement we made in February that our intention was to opensource our data pr…
Oh man this is huge. Are you guys opening Chorus and the Pivotal HD stuff too? I'd be shorting HP stock right now, because Vertica just lost all of its appeal. Teradata and it's Hadoop H-SQL or whatever must be shaking in their boots too. Are you guys going to attempt to upstream this or is it forked to the point of no return? I'd love to work on a project like this but I've got no PGSQL experience (though I have wor…
Re: Pivotal Greenplum Database has been open sourced
#44Re: Pivotal Greenplum Database has been open sourced
#45This might pair nicely with Metabase, our open source BI tool: http://www.metabase.com/
Re: Pivotal Greenplum Database has been open sourced
#46would like to see some benchmark vs Redshift, though the latter is a blackbox
What do you mean blackbox? It has explain analyze, it has rich query meta info, it has a web interface to query stats. You even know on what hardware it runs. Genuinely not sure what's blackbox about Redshift.
Re: Pivotal Greenplum Database has been open sourced
#47Earlier quoted context omitted.
Could you elaborate on the issues you have with ElasticSearch? Performance/Scaling? Usability?
I've attempted to load huge amounts of data into ElasticSearch. It is a bit fiddly to disable indexing and the sheer write performance is poor against dedicated databases. It is a testament to how good ElasticSearch is that people do use it as a database.
Things are getting better with the new transaction log, but it's still extremely prone to falling over and to getting consistency issues, and some of the built-in automation can bite you in the ass. Recently we had a node — fortunately an expendable testing box — run out of disk space. ES stopped working, which is fine, but when we restarted it, several of the shards were corrupt, and there was no way to get it working again without dropping the index and recreating it.
In another instance, we started getting client downtime because ES had suddenly detected low disk space on one node (its "high watermark" setting is extremely conservative and not based on a statistical regression of when it's going to run out), and had started relocating shards. When it was done, one of the shards were stuck in "RELOCATING" but marked as done; only restarting ES fixed that issue. When we freed up some disk space, it gave us more downtime when it decided to move the shards back. In theory, ES was behaving correctly, but the automation behaviour that kicked in was unnecessary and not desirable in that use case.
ES has lots of good parts, but it also has a surprising number of bad parts — ugly stuff you just won't find in Postgres, for example.
Re: Pivotal Greenplum Database has been open sourced
#48Earlier quoted context omitted.
Thanks, useful. I guess I was too subtle in my comment; what I mean is, this looks like geared towards long, periodic bulk loads and not granular OLTP/webapp-type workloads where lots of clients write small transactions. We're using ElasticSearch for analytics, and being able to write to any node is really nice. We stream events in real time, and only do bulk loads when we need to change the schema or reprocess the d…
Could you elaborate on the issues you have with ElasticSearch? Performance/Scaling? Usability?
By learn I mean that the first time it receives a document, it will guess the shape of the data and create a schema from it. You can't ever change mappings, only add new ones, which means that running in "dynamic" mode can (and, mostly, will) result in bad mappings.
This comes from (1) that ES' guesswork is by definition incomplete with regard to data types, (2) that ES can't, by definition, guess things like text analysis settings, and (3) sometimes input data is just inconsistent with itself.
#2 means that even if your data is completely consistent, if you submit a text field, it will get the default index settings. #1 means that, for example, if you have something you think is a date, which ES doesn't recognize as a date, then it will be assumed to be a string. Dates are among ES' weakest areas (though 2.x makes some improvements here).
You can mitigate some of these problems with the "_default_" mapping, which can catch fields and assign defaults based on name patterns. But it's not a complete solution.
Another problem is that for historical reasons, ES indexes share field names across all document types, and don't allow conflicting mappings. For example, if you have "articles" and "sections" and both have a "title" field, ES requires that the mapping be the same — because internally, they are stored in the same Lucene index. This is partly a feature (it allows you to search across all types on the field "title" and guarantee that it will work consistently) but really a principle-of-least-surprise-violating misfeature (you can accomplish the same thing with a synthetic field and "copy_to", which is more explicit and less surprising).
Another problem: Posting a conflicting mapping to ES does nothing; it will silently ignore it. There's no way to determine if your own mapping changes will have any effect or not. Here's why it's a problem: Say you made some changes to your app. You have an ES index in production. Now you want to determine if your new mappings can be applied without an index migration, or whether they will conflict. Turns out you can't. Some mapping properties (e.g. name, type, analyzer, store flag) cannot be changed and should conflict. Some don't. Since there's no set of rules encoded anywhere about what are conflicts and not, you can't progammatically diff your mappings.
This is exacerbated by the fact that ES will "collapse" mapping properties that equal the default. For example, let's say you post a mapping with the properties {"type": "object", "store": true}. If you read that back afterwards, it will be {"type": "object"}. Why? Because "store" is true by default. So if you try to "diff" a mapping, it will look like ES has different mappings than you have. ES tends to prefer implicit over explicit, which is a bad, bad design philosophy.
You can only give up and assume that anything that isn't an add (a new document type mapping) will require a migration. Which leads the next problem: ES can't migrate indexes. You're totally on your own. Which is ironic because by default, ES will store the original source (the "_source" field) of every document you index. There's no reason ES couldn't create a whole new index, based on new mappings, from a different index. But no, you have to write a client and run the data from ES into the client and then back again, just to do a mapping migration.
If I were to summarize this essay, it's that there's an icky impedance mismatch between mappings, logical ES indexes and physical Lucene indexes that have existed since the beginning, and whose consequences are increasingly felt. Lucene is used both for indexing and for document storage, and the distinction isn't adequately abstracted.
Here's an example of where an abstraction could have helped immensely. In ES, unlike relational databases, there's no such as "creating an index on a field". A field either has an index or it doesn't, and field names map directly to Lucene field names. There's no indirection. So if you set up a field "name", that also creates a Lucene inverted index called "name", and because the field is now tied to a physical index coding (e.g. tokenized strings), it can never be changed. You can't create more indexes on the same field, and you can't drop the index or change it.
The better solution would be to map it to an internal field name, and let each field support multiple indexes. For example: Say I have a field "name". Sometimes I want to search as tokenized text. Sometimes I want to treat the whole thing as a single token (e.g. when aggregating into buckets). If there were an indirection between document fields and indexes, I could accomplish this by creating two indexes on "name". ES could figure out which index to use from the query operators I used, and it could also offer a way to explicitly specify which index to use.
This type of indirection would solve the mapping strictness because ES would no longer be tied to a single type representation for every value.
I have other complaints about ES, but fortunately, some of them are being resolved in 2.0 (beta) and 2.1 — they are removing tons of cruft in the APIs, and seem to have realized that a lot of the design choices (especially the ones that promote implicit over explicit information) were a bad idea.
Re: Pivotal Greenplum Database has been open sourced
#49Earlier quoted context omitted.
I used greenplum until about three years ago when that employer replaced it. There is no way to describe it other than brittle and unsuited for production work. My peers discovered multiple ways to kill the db, all with data loss. Before you use it you should find a current user. It is one of a handful of techs on my personal "never again" list. Licensing was also ludicrously expensive, including an attempt to multip…
I'm curious as to what the replacement was and if you were happy with it.
we ported dremel to our heavily customized hadoop (it is, even now, at least 10x more performant than the public hadoop code, drawing from experiences of running on 5k+ physical nodes, plus yahoo is where software engineering goes to die)
we also ended up using spark
while neither of the above is as convenient as greenplum could be, they also didn't have 2+day outages every other month while hundreds of tb of data had to be regenerated and reloaded for the reporting powered by greenplum. They also didn't cost millions of dollars a year that emc wanted. Overall, I think we were very happy ending gp.