﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Ayende Rahien commented on Raven &amp; Event Sourcing</title><description>Greg,
  
Agreed. Version numbering with Raven is a bit interesting, basically you need a separate document to do the versioning, but it is pretty easy all around.
</description><link>http://ayende.com/4530/raven-event-sourcing#comment22</link><guid>http://ayende.com/4530/raven-event-sourcing#comment22</guid><pubDate>Wed, 16 Jun 2010 06:14:41 GMT</pubDate></item><item><title>Greg Young commented on Raven &amp; Event Sourcing</title><description>to be clear the problem is actually shown in your sample events. you have two with the same timestamp (create/add) and providing deterministic ordering in such a case is problematic.
</description><link>http://ayende.com/4530/raven-event-sourcing#comment21</link><guid>http://ayende.com/4530/raven-event-sourcing#comment21</guid><pubDate>Mon, 14 Jun 2010 22:09:05 GMT</pubDate></item><item><title>Greg Young commented on Raven &amp; Event Sourcing</title><description>Oren, 
  
  
Looks good but generally I would run far far away from using TimeStamps to order and would instead use version numbers.
  
  
Cheers,
  
  
Greg
</description><link>http://ayende.com/4530/raven-event-sourcing#comment20</link><guid>http://ayende.com/4530/raven-event-sourcing#comment20</guid><pubDate>Mon, 14 Jun 2010 21:08:43 GMT</pubDate></item><item><title>Ayende Rahien commented on Raven &amp; Event Sourcing</title><description>Demis
  
Versioning is actually pretty easy, you just maintain the old index and deploy a new dll with the new index under a different name.
  
The code needs to be written to be able to handle all users, but in practice, what we are doing is only re-executing the documents for the current user, not for all users.
  
The reason that the code is written this way is that wew want to allow ourselves the option to do major optimizations down the road, where we can just shove data through this without having to do sorting up front.
  
</description><link>http://ayende.com/4530/raven-event-sourcing#comment19</link><guid>http://ayende.com/4530/raven-event-sourcing#comment19</guid><pubDate>Sun, 30 May 2010 19:54:46 GMT</pubDate></item><item><title>Demis Bellot commented on Raven &amp; Event Sourcing</title><description>That's a pretty sweet and elegant example, hard to get it done with any less effort. 
  
  
Though I'm not sure about modifying the Raven Process with custom application logic .dll's - seems like a pretty fragile/state-full approach that would cause some pain during deployment, versioning, backing up, upgrading etc.
  
  
Just trying to work out how efficient this solution is since I can't see the optimal code-path, i.e. when a user adds an Item to an existing cart does it rebuild the entire aggregate for all users shopping carts or just the one modified? or is that what the 'GroupByExtraction' lambda is for?
</description><link>http://ayende.com/4530/raven-event-sourcing#comment18</link><guid>http://ayende.com/4530/raven-event-sourcing#comment18</guid><pubDate>Sun, 30 May 2010 19:47:34 GMT</pubDate></item><item><title>Ayende Rahien commented on Raven &amp; Event Sourcing</title><description>Tobi,
  
Take a look at my other posts on the subject.
  
Look at the NoSQL category
</description><link>http://ayende.com/4530/raven-event-sourcing#comment17</link><guid>http://ayende.com/4530/raven-event-sourcing#comment17</guid><pubDate>Sun, 30 May 2010 18:42:41 GMT</pubDate></item><item><title>tobi commented on Raven &amp; Event Sourcing</title><description>Ok, I get it for event processing, but I am more interested in the day to day work of users, orders, products... Some of us still have to get their hand dirty with boring stuff to pay the rent ;-)
</description><link>http://ayende.com/4530/raven-event-sourcing#comment16</link><guid>http://ayende.com/4530/raven-event-sourcing#comment16</guid><pubDate>Sun, 30 May 2010 18:36:14 GMT</pubDate></item><item><title>Ayende Rahien commented on Raven &amp; Event Sourcing</title><description>Tobi,
  
Try writing something like this on a relational backend.
  
The performance difference would be pretty big. 
  
Moreover, the amount of effort that you'll have to go through to get things done is extremely non trivial. 
  
  
Then try to add three new events, and see what happens.
</description><link>http://ayende.com/4530/raven-event-sourcing#comment15</link><guid>http://ayende.com/4530/raven-event-sourcing#comment15</guid><pubDate>Sun, 30 May 2010 18:11:41 GMT</pubDate></item><item><title>tobi commented on Raven &amp; Event Sourcing</title><description>And I want to add that this series is really starting to get my attention! This project is certainly having a pragmatic lead.
</description><link>http://ayende.com/4530/raven-event-sourcing#comment14</link><guid>http://ayende.com/4530/raven-event-sourcing#comment14</guid><pubDate>Sun, 30 May 2010 18:10:03 GMT</pubDate></item><item><title>tobi commented on Raven &amp; Event Sourcing</title><description>Could you comment a bit more on why you prefer using raven in a document oriented way instead of in a relational way? It seems to me that it would result in less code if you were to keep everything normalized and dry. I know that performance might not be that good but disregarding that I think it would be a superior approach. You would just define indexes for all access path' to the data that you have so it still would be lightning fast. (you might notice that development speed is my major concern because I do not develop apps with huge data sizes. This is certainly a common scenario that might justify a dedicated post... ;-) ).
  
</description><link>http://ayende.com/4530/raven-event-sourcing#comment13</link><guid>http://ayende.com/4530/raven-event-sourcing#comment13</guid><pubDate>Sun, 30 May 2010 18:08:45 GMT</pubDate></item><item><title>Ayende Rahien commented on Raven &amp; Event Sourcing</title><description>Thomas,
  
This runs in Raven's process.
  
Yes, Raven has a plugin mechanism, drop a dll to Plugins/, and everything works.
  
Defining indexes via the web interface:
  
[www.ravendb.net/documentation/docs-http-indexes](http://www.ravendb.net/documentation/docs-http-indexes)</description><link>http://ayende.com/4530/raven-event-sourcing#comment12</link><guid>http://ayende.com/4530/raven-event-sourcing#comment12</guid><pubDate>Sun, 30 May 2010 17:29:19 GMT</pubDate></item><item><title>Ayende Rahien commented on Raven &amp; Event Sourcing</title><description>Tobi,
  
Yes, the index update on every new commit, and it is updated in an efficient incremental manner.
  
In your case, it would only update the current day. 
</description><link>http://ayende.com/4530/raven-event-sourcing#comment11</link><guid>http://ayende.com/4530/raven-event-sourcing#comment11</guid><pubDate>Sun, 30 May 2010 17:27:58 GMT</pubDate></item><item><title>zihotki commented on Raven &amp; Event Sourcing</title><description>Yes, this code is beautiful, really beautiful. And my sql oriented brain almost blew up when I tried to understand the process.
</description><link>http://ayende.com/4530/raven-event-sourcing#comment10</link><guid>http://ayende.com/4530/raven-event-sourcing#comment10</guid><pubDate>Sun, 30 May 2010 16:38:05 GMT</pubDate></item><item><title>Rob commented on Raven &amp; Event Sourcing</title><description>Beautiful.
</description><link>http://ayende.com/4530/raven-event-sourcing#comment9</link><guid>http://ayende.com/4530/raven-event-sourcing#comment9</guid><pubDate>Sun, 30 May 2010 15:15:38 GMT</pubDate></item><item><title>Thomas Krause commented on Raven &amp; Event Sourcing</title><description>In which process does this view-generator run? Since raven needs to keep the index up to date, I'm assuming it has to run in raven's process?
  
  
If so, do you have something like a plugin/extension system where you drop some dll somewhere or how does it work?
  
  
How would you define this index using ravens webinterface?
  
  
I have to add, that I never tried raven or looked at the code and so I don't have a lot of knowledge of its internal structures besides the post of yours. I'm just curious ;-)
</description><link>http://ayende.com/4530/raven-event-sourcing#comment8</link><guid>http://ayende.com/4530/raven-event-sourcing#comment8</guid><pubDate>Sun, 30 May 2010 14:54:04 GMT</pubDate></item><item><title>tobi commented on Raven &amp; Event Sourcing</title><description>I'd be interested in what amount of information in the materialized view/index will be recalculated if the underlying "table" changes. Say, we were to use raven for logging all of our http requests and we had an index  "count of requests per day". Would the index be updated incrementally?
</description><link>http://ayende.com/4530/raven-event-sourcing#comment7</link><guid>http://ayende.com/4530/raven-event-sourcing#comment7</guid><pubDate>Sun, 30 May 2010 13:19:16 GMT</pubDate></item><item><title>Ayende Rahien commented on Raven &amp; Event Sourcing</title><description>Uriel,
  
It isn't, really. It is just a different way to build the index, that is all.
</description><link>http://ayende.com/4530/raven-event-sourcing#comment6</link><guid>http://ayende.com/4530/raven-event-sourcing#comment6</guid><pubDate>Sun, 30 May 2010 12:33:27 GMT</pubDate></item><item><title>Uriel Katz commented on Raven &amp; Event Sourcing</title><description>So what is the difference between this and a regular raven index?
</description><link>http://ayende.com/4530/raven-event-sourcing#comment5</link><guid>http://ayende.com/4530/raven-event-sourcing#comment5</guid><pubDate>Sun, 30 May 2010 11:13:06 GMT</pubDate></item><item><title>Ayende Rahien commented on Raven &amp; Event Sourcing</title><description>Markus,
  
Yeah, pretty much. There is a much more extensive example that does it in a manner that is much nicer that is currently working up.
  
This is just to show how things are working
</description><link>http://ayende.com/4530/raven-event-sourcing#comment4</link><guid>http://ayende.com/4530/raven-event-sourcing#comment4</guid><pubDate>Sun, 30 May 2010 11:03:37 GMT</pubDate></item><item><title>Ayende Rahien commented on Raven &amp; Event Sourcing</title><description>Uriel,
  
All of Raven's indexes are similar to materialized views
</description><link>http://ayende.com/4530/raven-event-sourcing#comment3</link><guid>http://ayende.com/4530/raven-event-sourcing#comment3</guid><pubDate>Sun, 30 May 2010 11:02:23 GMT</pubDate></item><item><title>Markus Zywitza commented on Raven &amp; Event Sourcing</title><description>This is really cool and tips my balances in favor of RavenDB against NH again.
  
I have one remark though: You should mention that you violate OCP voluntarily to keep the code simple and that in production the switch statement should be replaced by an extensible approach, i.e visitor or strategy patterns.
</description><link>http://ayende.com/4530/raven-event-sourcing#comment2</link><guid>http://ayende.com/4530/raven-event-sourcing#comment2</guid><pubDate>Sun, 30 May 2010 10:37:30 GMT</pubDate></item><item><title>Uriel Katz commented on Raven &amp; Event Sourcing</title><description>this is something like couchdb materialized views?
  
</description><link>http://ayende.com/4530/raven-event-sourcing#comment1</link><guid>http://ayende.com/4530/raven-event-sourcing#comment1</guid><pubDate>Sun, 30 May 2010 09:37:12 GMT</pubDate></item></channel></rss>