We're pairing Redis and Riak too - Riak for the 'proper' persistence, and Redis for a cache of what's in use right now - Redis has all sorts of handy bits which play really nicely for this purpose.
Catherine On Thu, Jul 19, 2012 at 4:59 PM, Alexander Sicular <sicul...@gmail.com>wrote: > I have always paired Riak with Redis for exactly this issue. Redis > provides the data structures that Riak lacks. Pagination schemes via Redis > are fairly trivial. To obviate the SPOF issue you should replicate Redis > but what I do in addition is persist Redis keys to Riak on some frequency. > Of course, YMMV based on your own specific needs. > > -Alexander Sicular > > @siculars > > On Jul 19, 2012, at 10:33 AM, Alex Thompson wrote: > > > I agree, but sometimes you make sacrifices. ;) > > > > Alternatively, you could use something like redis or memcache to hold > keylists, either populated dynamically with key lists, or loaded with data > on startup. You might even be able to get away with just some reasonably > complex send-current-and-refresh style page caching and a script to warm > your caches from a cold start. > > > > Riak is a wonderful, scalable database, but unless you're holding lots > data in ram _somewhere_, your service is never really going to run at > interactive speeds. This is true of all data systems, not just riak, > consider highly random access to a traditional RDBMS with data > ram and no > indexes. > > > > - Alex > > > > ----- Original Message ----- > > From: "Martin Stabenfeldt" <mar...@stabenfeldt.net> > > To: riak-users@lists.basho.com > > Sent: Thursday, July 19, 2012 3:15:25 AM > > Subject: Re: Pagination with Ripple > > > > > > > > Hi, > > > > > > We´re also in the hundreds of thousands scale. So loading everything is > unfortunately not possible. > > Would be nice if one could settle for one database, instead of mixing > different types. Nice to only care about scaling and providing redundancy > for Riak, instead of Riak and PostgreSQL :-) > > > > > > If anyone has implemented pagination using Ripple or other solutions > with Ruby, I´d love to see it! > > > > > > > > > > Cheers, > > > > > > Martin Stabenfeldt > > > > > > > > On Wednesday, 18 July 2012 at 16:24, Alex Thompson wrote: > > > > > > > > > > > > My 2c: > > > > > > 1000s of subscribers per list isn't a problem. Just have a data object > which represents the subscriber list, store a list of subscriber ids in the > subscriber list object. Load the whole list every time, and sort/paginate > in your app code. > > > > > > Unless you're planning on shuffling the lists a lot, that will be the > most direct way to implement it. > > > > > > Caveats: > > Unless you're planning on running into the object size limit with > subscriber ids or planning on being able to handle thousands of > simultaneous subscriptions to the same list, but don't want to handle > conflict resolution. > > > > > > My solution: > > I ran into this same problem with my app, but with hundreds of thousands > to millions of uuids per list. I tried a couple of Riak based solutions > with different data formats, but I wasn't really satisfied with any of > them. I ended up just having a uuid to uuid lookup table in a postgres > database to handle internal item to item relations using the uuid datatype > for efficient indexing. > > > > > > I'm not sure if there are any good support libraries for handling > polyglot consistency in ruby, or if you could blend database ActiveRecord > and ripple models in the same app (I mean, you probably can, right? You'd > just have objects inherit from different base classes? There are probably > some unhandled relation-chaining edge cases though... although ActiveRecord > can be magic sometimes.) > > > > > > - Alex > > > > > > ----- Original Message ----- > > From: "Martin Stabenfeldt" < mar...@stabenfeldt.net > > > To: riak-users@lists.basho.com > > Sent: Wednesday, July 18, 2012 2:54:35 AM > > Subject: Pagination with Ripple > > > > > > > > > > Dear List, > > > > > > > > > > I´m planning to use Riak as my primary DB for my Rails app. > > > > > > > > > > The first issue I´ve encountered is pagination. > > > > > > > > > > I got a SubscriberList which may contain 1000´s of Subscribers. Any > suggestion on how I can implement pagination? My plan was to use > will_paginate . > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > class Subscriber > > include Ripple :: Document > > > > > > > > > > # Belongs to a SubscriberList > > one :subscriber_list > > property :subscriber_list_key , String > > property :email , String > > property :referer , String > > timestamps! > > > > > > > > > > validates_presence_of :email > > end > > > > > > > > > > > > > > > > > > > > > > > > > > class SubscriberList > > include Ripple :: Document > > one :user > > property :user_key , String > > > > > > > > > > # Has_many Subscribers > > many :subscribers , :using => :reference > > # Used by User to find which SubscriberList he has > > property :subscriber_key , String > > property :title , String > > property :deleted , Boolean > > timestamps! > > > > > > > > > > validates_presence_of :user > > end > > > > > > > > > > -- > > Martin Stabenfeldt > > Tlf: +47 93441707 > > > > > > _______________________________________________ > > riak-users mailing list > > riak-users@lists.basho.com > > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > > > > > > _______________________________________________ > > riak-users mailing list > > riak-users@lists.basho.com > > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > > > > _______________________________________________ > > riak-users mailing list > > riak-users@lists.basho.com > > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > > > _______________________________________________ > riak-users mailing list > riak-users@lists.basho.com > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com >
_______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com