I am looking to use Riak as a data store for events in our system.
Namely, I have a handful of event types now and anticipate much more
later.
Consider the following "event":
{
"type" : "bws.stats",
"host" : "10.1.55.101",
"description" : "human friendly description",
"details" : "string or Object",
"timestamp" : 1234567890,
"status" : "SUCCESS|FAIL"
}
A JavaScript client will retrieve events and display them on a webpage
and filter the data based on:
1) show just one event type
2) show all events for a given host
3) show all events for last Wednesday
4) show all events that had a status of SUCCESS
5) show the 10 events before a specific FAIL that matches the same host and type
There are other ways that we plan to query the data, but I think you
get the idea.
The event data payload is flexible if the above is not optimal for Riak.
Thoughts on how to best implement in Riak?
I've considered several approaches...
A) Store all events in one bucket and build out extensive,
parameterized map/reduce functionality in order to return specialized
data sets as described above
B) Store all events in separate buckets (based on type?)... but where
does that leave me when needing to pivot on other fields
C) Have as many buckets as I want to build data sets and duplicate
data across the buckets... i.e. a "type" bucket, "host" bucket, and
"status" bucket... except this starts to get a bit painful in order to
populate buckets that I didn't anticipate
D) Store all events in one bucket and have categorical buckets whose
entries are NOT duplicate, but rather link to the main "event" bucket
_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com