Aww man! I had sent a response last night detailing a small example of this
and it went POOF! apparently! RABBLE RABBLE!!!

Ok. Let's try this again.

First off now I see that I misread Ade's question. Even though I mentioned
this whole event sourcing-ish thing I was fixated on Mongo and didn't even
realize what Ade was really asking. MAH BAD Ade. Sorry!

This is all based on my Archaeologist app I had running during Alt.NET 2011
which can still be viewed here:
http://archaeologist.heroku.com/
github: https://github.com/jcbozonier/Archaeologist

Basic idea was it data mined twitter "in real time" and provided you with
interesting visualizations. It served its purpose and won Ryan Riley and I
the github sponsored AppHarbor contest so i consider it a success. :)

There was a Rackspace Cloud service that ran every minute to update and
precompute the data.

Ruby service that aggregates and precomputes data collections.
https://gist.github.com/1343209

JSON data service to provide a graph of different tweeters talking to one
another
https://gist.github.com/1342527

Using cached tweets to calculate a word cloud on demand
https://gist.github.com/1342528

The main take away I think is that rather than waiting until my user viewed
the web page, a lot of the data was computed as tweets happened. In this
app I consider an event to be a tweet. Since Twitter can't push to my
service my service needed to poll Twitter.

The whole event sourcing thing can be most accurately described as...
Normally we transform our data model based on our users' actions and then
save that. In event sourcing, instead of doing that we record our users'
actions and compute different data views of those events. If you need you
can precompute those data views (something not unlike what we call caching)
or you can just do it on demand when perf ain't no thang.

I learned a lot of what I know about this stuff from Robert Ream for any of
you with access to fist his mind hole. I very much recommend that.

Feel free to ask more questions! Sorry for my confusion which stemmed from
my lack of reading comprehension skills. :D


-Bozo

On Sun, Nov 6, 2011 at 9:07 AM, Matt Hornsby <[email protected]> wrote:

> I, too, am interested in hearing more about how you are doing this
> Justin. I've spent a lot of time looking into the whole eventual
> consistency/CQRS thing, but I'm still not clear enough on how to work
> towards this architecture. I'm also curious about how everyone is
> using NoSql but moreso about how the authorization story looks. Is it
> not a big deal to not be able to use the ASP.NET Membership
> Providers?
>
>
> On Nov 5, 6:37 pm, Justin Bozonier <[email protected]> wrote:
> > So in Ruby the MongoDb driver just takes dictionaries. I'm not sure how
> the
> > C# side differs.
> >
> > When you say architecture, that confuses me because it sounds so BDUF.
> Not
> > ring snarky, that's just my knee jerk reaction.
> >
> > Sent from my iPhone
> >
> > On Nov 5, 2011, at 7:07 PM, Ade Miller <[email protected]> wrote:
> >
> >  Hi Justin,
> >
> > Can you point me at an example of the MongoDB based architecture you
> > describe. I’m busy putting together a project with Mongo for fun and
> that’s
> > probably the next thing to consider. Thus far I have a set of extensions
> to
> > the Mongo driver for C# that supports expressions and an implementation
> of
> > the MembershipProvider (Yuck).
> >
> > Cheers,
> >
> > Ade
> >
> >  *From:* Justin Bozonier <[email protected]>
> > *Sent:* Saturday, November 05, 2011 2:58 PM
> > *To:* [email protected]
> > *Subject:* Re: NoSql, what's your defaults these days?
> >
> >  For prototypes I default to an in memory dictionary in Heroku.
> >
> > For more robustness I start to store that dictionary in Mongo.
> >
> > To scale beyond there my preference is to push data into Mongo and have
> > separate concurrent services work to digest/aggregate/cache views on that
> > data. I'm good with eventual consistency.
> >
> > Good question! Looking forward to more answers.
> >
> > Sent from my iPhone
> >
> > On Nov 5, 2011, at 2:45 PM, Adron Hall <[email protected]> wrote:
> >
> >   Hello ALT.NETters
> >
> > So I've been messing around a lot more with NoSQL solutions, mainly from
> > the perspective of getting prototypes faster with the increased
> > flexibility.  My defaults have been the following as of late:
> >
> > 1. If I'm stuck with SQL Server, (i.e. some Corporate IT Limitation or
> > something) I've often tried to go the SisoDb Route, in other words, I try
> > to design my architecture where it is not limited by the relational and
> > column concerns of an RDBMS. This is, primarily being that I'm trying to
> do
> > more rapid prototyping of applications.
> > 2. MongoDb is my other go to for a real NoSQL Solution. So far the reason
> > has been because of the extensive support and what appears to be greater
> > usage of the solutions available on the market. This doesn't in any way
> > mean that MongoDb is the best solution, just the path with the least
> > resistance. Getting a solution running with Ruby on Rails, .NET, or
> > whatever is usually the stack that is utilizing the database is generally
> > extremely easy - more so than setting up a SQL Server by an order of
> > magnitude (at least from a time perspective).
> >
> > Another thing that I've found myself using for fast prototyping of an
> > application, and for local server caching of data, is to use bin
> deployable
> > SQL CE. With .NET MVC it's crazy simple to get something out the door. If
> > your dev environment is already setup one can usually get a CRUD app out
> > the door in about a half hour of fiddling.  <-  Very nice.
> >
> > Some others I want to try out really soon are Riak, Neo4j, and Redis. The
> > link posted looks really good for some comparisons too, pretty helpful
> (the
> > one Ben posted athttp://
> kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
> > )
> >
> > My questions are...
> >
> >    - What are other people using for prototyping applications?
> >    - What are other people using for reporting solutions? Like BI, etc?
> >    - What are other people using for high row/document/data or "big data"
> >    storage?  ( > Terabytes of data, multiple millions of rows/documents
> of
> >    data)
> >    - What solutions do you find the most flexible out of the options that
> >    are market these days? (such as HBase, Cassandra, Neo4j, Redis, Riak,
> etc)
> >
> > Thanks!
> > --
> > *Adron B Hall*
> >
> > *Tech*:http://compositecode.com
> > *Transit*:  http://transitsleuth.com
> > *Twitter*:http://www.twitter.com/adron
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Seattle area Alt.Net" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group athttp://
> groups.google.com/group/altnetseattle?hl=en.
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Seattle area Alt.Net" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group athttp://
> groups.google.com/group/altnetseattle?hl=en.
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Seattle area Alt.Net" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group athttp://
> groups.google.com/group/altnetseattle?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Seattle area Alt.Net" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/altnetseattle?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Seattle area Alt.Net" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/altnetseattle?hl=en.

Reply via email to