Without wishing to pre-empt any official response from InterSystems to
your very pertinent questions, perhaps I can offer a few independent
observations and responses. I'm not an InterSystems person - simply a
long-term user and advocate of Global-storage based technologies of
which GT.M, Cache and now GlobalsDB are members, and someone who has
long believed that it's a significantly under-valued database
technology, and unfortunately and sadly not known about or understood
sufficiently in the wider database/IT world. However, the rise of
NoSQL has provided some renewed chance of rediscovery by a wider
community of developers, which I'm keen to encourage.
With respect to a comparison with BigTable etc, I guess all of us in
the Global-storage technology user communities have looked at many of
the new NoSQL technologies and thought it's deja vu all over
again :-) Perhaps this paper that I co-authored might help to at
least provide a comparative positioning against the "mainstream" NoSQL
databases (apologies if you've already read it):
http://www.mgateway.com/docs/universalNoSQL.pdf
As we note in the paper, full-blown Cache and GT.M provide many of the
mechanisms needed for high-end scalability, though, as you point out,
many of these appear to be lacking in GlobalsDB, at least in its
current (and relatively early) incarnation.
Regarding a comparison of GlobalsDB and GT.M, at the core data storage
level, there's little difference: they both use Globals for data
storage, so the use cases will be similar. As you note, whilst
GlobalsDB is free but proprietary, GT.M is free open source. I guess
the biggest differences are:
- GlobalsDB is essentially the core database engine from Cache, but
with many of the features of Cache, in particular its native language
(M) turned off. The concept in GlobalsDB is that it will be accessed
via APIs from other mainstream languages, instead of being primarily
accessed via the M language as is the norm in, say, GT.M
- the GlobalsDB APIs are in-process rather than via, say, a TCP
interface. As such it should be significantly faster to access from a
non-M scripting language such as Java or Javascript/Node.js than would
be GT.M. I've not tried it out yet myself, as I'm very much a
Javascript person these days and keen to try out their planned Node.js
APIs. I should be able to report back some performance comparisons
when I get my hands on the Node.js-compatible version.
I suspect one way things will pan out over coming months will be:
- if you want a fully open source Global-based database technology
with all the bells and whistles, then GT.M is probably the answer, but
its interfacing to other languages will be bottlenecked by TCP
networking limits and indirection (the M equivalent of, eg
Javascript's eval() function)
- If you want the ultimate in performance and willing to sacrifice
open source and the high-end scalability options, but remain free,
then GlobalsDB will be a good choice
- If you want the former but are willing to pay for the extra high-end
scalability technologies, then full-blown Cache will be your choice.
The nice thing is that it will be straightforward to engineer
applications that can be easily migrated between these three options
with a minimum of change being needed at the application level.
Regarding your question "is GlobalsDB written in M/ Mumps?" The answer
is no - I believe it's all C code internally - as is GT.M.
Anyway, I hope this goes some way to answering some of your questions,
at least in terms of my perspective on things. Personally, I think
GlobalsDB is a great thing and nice to see InterSystems venturing into
a new direction: I think that's only to be encouraged and can only
help the NoSQL community. I can't wait to try it out once that
Node.js interface is ready :-)
Rob
On May 10, 5:34 pm, Matt Hoffman <
ninethi...@gmail.com> wrote:
> Obviously, a lot of superlatives there...so much so that I wrote this off as
> a joke originally.
>
> But it looks like Globals is a real product, so perhaps you want to expand a
> bit?
>
> Like:
>
> - Since your subject line is "the best NoSQL database available
> today"...can you compare it to any other NoSQL database? At least a
> comparison to Gt.M may be helpful, since it's also built on MUMPS and
> hierarchical, but open source (aGPL). I'd be interested in your take on
> pros and cons vs. other leading schemaless, BigTable-based or key-value
> databases as well.
> - You said "outrageous scalability" -- scalable how? I see nothing on
> the website about how it scales. Does it partition across nodes by index?
> If so, which index? The first? How does it handle consistency between
> nodes? C, A, or P? For that matter, it sounds like there's no
> configuration (it's always deployed to the default location?) so how do you
> configure the ports that different nodes communicate on?
> - I'm assuming that it does actually cluster multiple nodes, since you
> mentioned scalability ... but now that I'm looking at the
> website, I don't
> see any mention of clustering. I can't fathom what you'd mean by
> "outrageous scalability" if, in fact, it doesn't scale beyond
> one machine.
> For that matter, is it limited by available memory on one node,
> or does it
> overflow to disk? Does it always persist to disk? What's the
> performance
> hit in that overflow to disk?
> - Globals is obviously being made free to drive users to your
> commercial products -- Caché, specifically, from what I can tell. I don't
> think there's anything wrong with that as a strategy. But do you think that
> a customer could go live with just Globals? From browsing the website, I
> see in some comments that it doesn't support hot backup and restore, and
> doesn't offer tools for operational use, and is designed as a "very simple"
> persistence framework for Java. As such, one could argue that it's somewhat
> feature-poor compared to other databases. Do you really envision products
> going live on Globals, or do you envision it as "Caché developer edition"?
>
> - For background: is Globals written in M / MUMPS? Is there any plan to
> open source the code itself?
>
> I'm not trying to be combative -- I hope it doesn't come off that way. I'm
> just trying to give you the opportunity to hype your product in a little
> more detail.
>
> To preempt a couple common arguments that cause me, personally, to glaze
> over and move to the next thread (not that you would use these
> specifically...they just happen a lot in these kinds of threads):
> - "Just download the product and try it out for yourself" is _not_ a valid
> argument -- there are over 100 "NoSQL" databases listed on
>
nosql-database.org, and more on Wikipedia. Busy developers are looking for
> reasons why they should invest their free time in one over any other.
> - "Comparing this to [other product] is apples and oranges" is also not an
> argument. People say this all the time, but all it actually communicates
> is, "these products are different." But of course they're different. That's
> why we're comparing them. If they were identical, there'd be no point. To
> keep with the metaphor, consider the question to be "when would I want this
> fruit, and not a different one?" and go from there.
>
> matt
>