On Wed, Mar 30, 2011 at 5:46 PM, Mike Oxford <moxf...@gmail.com> wrote: > I thought I understood Riak, then I ran across the fact that riak_core was > split out separately. > When would you use riak_core that you wouldn't use Riak?
Good question.
Riak Core is the distributed systems center that Riak is built around. Riak Core is not a standalone database, and in fact by itself it doesn't do data storage or even much of anything at all from the point of view of a client application.
You use Riak to store, query, and retrieve your data.
You use Riak Core to build something shaped a bit like Riak.
Another way of looking at this is that Riak Core is a bit more abstract, providing mechanisms for techniques such as vector clocks, gossip, and other useful parts of the servers in a robust and scalable system. Riak, the database, builds on that core by adding a client-facing storage and retrieval protocol, storage engines for placing data on disk, and so on.
I hope that this helps to clarify matters. If not, or even if you just have additional questions, please ask.
Riak (to be specific, riak-kv) it built atop riak-core. The Basho devs recognized that a lot of the things that made riak-kv great were more general than just key-value storage. This includes things like consistent hashing, virtual nodes, hinted handoff, etc. They built riak-core as a foundation to build Dynamo based apps. You could use riak-core to build a distributed computing cluster (i.e. no data, just for distributing work). One example, a pretty original one I might add too, is Rusty's BashoBanjo which uses riak-core to power a "distributed orchestra." [1]
I think riak-core has a lot of potential beyond it's current usage and I'm working on a small but not completely trivial example that I hope to illustrate with a blog post. Specifically, I want to focus on the mechanics of the "vnode" as this, AFAICT, is the main player when you want to leverage riak-core. Consider this a teaser to make sure I follow thru on my word :)
On Wed, Mar 30, 2011 at 8:46 PM, Mike Oxford <moxf...@gmail.com> wrote: > I thought I understood Riak, then I ran across the fact that riak_core was > split out separately.
> When would you use riak_core that you wouldn't use Riak? Is it more > ephemeral, with shared state > in an ETS ring compared to a storage-backed node?
"Dynamo based apps" is what is throwing me; Dynamo is a storage paradigm.
So what your'e saying, really, is that riak_core is basically a clustering configuration on top of OTP, and that Dynamo really doesn't have any play here?
On Wed, Mar 30, 2011 at 6:02 PM, Ryan Zezeski <rzeze...@gmail.com> wrote: > Mike,
> Riak (to be specific, riak-kv) it built atop riak-core. The Basho devs > recognized that a lot of the things that made riak-kv great were more > general than just key-value storage. This includes things like consistent > hashing, virtual nodes, hinted handoff, etc. They built riak-core as a > foundation to build Dynamo based apps. You could use riak-core to build a > distributed computing cluster (i.e. no data, just for distributing work). > One example, a pretty original one I might add too, is Rusty's BashoBanjo > which uses riak-core to power a "distributed orchestra." [1]
> I think riak-core has a lot of potential beyond it's current usage and I'm > working on a small but not completely trivial example that I hope to > illustrate with a blog post. Specifically, I want to focus on the mechanics > of the "vnode" as this, AFAICT, is the main player when you want to leverage > riak-core. Consider this a teaser to make sure I follow thru on my word :)
> On Wed, Mar 30, 2011 at 8:46 PM, Mike Oxford <moxf...@gmail.com> wrote:
>> I thought I understood Riak, then I ran across the fact that riak_core was >> split out separately.
>> When would you use riak_core that you wouldn't use Riak? Is it more >> ephemeral, with shared state >> in an ETS ring compared to a storage-backed node?
The weekly recap was just posted with a slide decks on riak_core. Excellent timing!
Is the Dynamo stuff in the riak-kv layer, then? Or is it still used for "workload distribution" somehow in riak_core? Or is the Dynamo storage concept not used "at all" in the riak_core?
On Wed, Mar 30, 2011 at 6:00 PM, Justin Sheehy <jus...@basho.com> wrote: > Hi, Mike.
> On Wed, Mar 30, 2011 at 5:46 PM, Mike Oxford <moxf...@gmail.com> wrote:
> > I thought I understood Riak, then I ran across the fact that riak_core > was > > split out separately. > > When would you use riak_core that you wouldn't use Riak?
> Good question.
> Riak Core is the distributed systems center that Riak is built around. > Riak Core is not a standalone database, and in fact by itself it > doesn't do data storage or even much of anything at all from the point > of view of a client application.
> You use Riak to store, query, and retrieve your data.
> You use Riak Core to build something shaped a bit like Riak.
> Another way of looking at this is that Riak Core is a bit more > abstract, providing mechanisms for techniques such as vector clocks, > gossip, and other useful parts of the servers in a robust and scalable > system. Riak, the database, builds on that core by adding a > client-facing storage and retrieval protocol, storage engines for > placing data on disk, and so on.
> I hope that this helps to clarify matters. If not, or even if you > just have additional questions, please ask.