<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.thinkbeforecoding.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
  <title>Think Before Coding  - Comments</title>
  <link>http://thinkbeforecoding.com/</link>
  
  <description />
  <language>en</language>
  <pubDate>Tue, 17 Aug 2010 02:26:03 +0200</pubDate>
  <copyright>(c)2009 Jérémie Chassaing</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.thinkbeforecoding.com/ThinkBeforeCoding-Comments" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="thinkbeforecoding-comments" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
    <title>Uniqueness validation in CQRS Architecture - Jérémie</title>
    <link>http://thinkbeforecoding.com/post/2009/10/28/Uniqueness-validation-in-CQRS-Architecture#c8926940</link>
    <guid isPermaLink="false">urn:md5:6446d94041d41ab07748b59e4c08e1c1</guid>
    <pubDate>Sun, 25 Jul 2010 20:10:48 +0200</pubDate>
    <dc:creator>Jérémie</dc:creator>
    
    <description>&lt;p&gt;You should check the likeliness of conflicts (you can reduce them by
validating uniqueness on the client/read side before sending the command) and
the cost of conflicts.&lt;br /&gt;
If you can structuraly dismiss conflicts (like the company =&amp;gt; boss case, or
when unicity is inside an aggregate), do it !&lt;br /&gt;
In other cases, unicity should not affect the domain, and there's a good reason
for it :&lt;br /&gt;
your unicity crosses aggregate boundaries. If your boudaries are well defined,
a temporary breaking of unicity should be ok, since consistency cannot be
garanteed accross boundaries.&lt;br /&gt;
If not... move your boundaries.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/gsQV6SKAvrI" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Uniqueness validation in CQRS Architecture - CraigCav</title>
    <link>http://thinkbeforecoding.com/post/2009/10/28/Uniqueness-validation-in-CQRS-Architecture#c8917193</link>
    <guid isPermaLink="false">urn:md5:488f112fbb9b979601d39d5ff0bf1026</guid>
    <pubDate>Wed, 14 Jul 2010 00:19:06 +0200</pubDate>
    <dc:creator>CraigCav</dc:creator>
    
    <description>&lt;p&gt;Hi Jérémie,&lt;/p&gt;
&lt;p&gt;I've really enjoyed reading this series of posts, and this one was no
exception! I particularly like the idea that there is no such thing as global
scope, and the company=&amp;gt;boss example is perfect to demonstrate this.&lt;/p&gt;
&lt;p&gt;This post really got me thinking.&lt;/p&gt;
&lt;p&gt;&amp;quot;Instead of having a UserName property on the Employee entity, why not have
a UserNames key/value collection on the Company that will give the Employee for
a given user name ?&amp;quot;&lt;/p&gt;
&lt;p&gt;If I've understood Udi's posts on CQRS, I think he'd probably advocate the
collection of Usernames being part of the Query-side, rather than the Command
side. I've heard him mention before that the query side is often used to
facilitate the process of choosing a unique username - the query store checks
the username as the user is filling in the &amp;quot;new user&amp;quot; form, identifying that a
username already exists and suggesting alternatives.&lt;/p&gt;
&lt;p&gt;Of course this approach isn't bullet-proof, and it will still remain the
responsibility of another component to handle the enforcing of the
constraint.&lt;br /&gt;
The choice of WHERE to put this logic is a question that is commonly
debated.&lt;/p&gt;
&lt;p&gt;Some argue that since uniqueness of usernames is required for technical
reasons (identifing a specific user) rather than for business reasons this
logic falls outside of the domain to handle.&lt;/p&gt;
&lt;p&gt;Others may argue that this logic should fall in the domain - perhaps under a
bounded context of managing user accounts.&lt;/p&gt;
&lt;p&gt;In either case, since we have a technical problem (concurrecy conflicts) and
we have several possible solutions, the decision of whether on not they are
suitable will probably constrained by the expected frequency of the problem
occuring. This sounds to me like the kind of thing that would appear in a
SLA.&lt;/p&gt;
&lt;p&gt;I guess then the solution chosen to enforcing the uniqueness constraint will
depend on the agreed SLA. Perhaps it is acceptable that a command may fail hard
(due to the RDBMS failing) on the few cases of concurrency conflicts - it might
only be on a 0.0001% of cases.&lt;/p&gt;
&lt;p&gt;Alternatively we may decide that it is unacceptable to allow this to occur
due to the frequency of this occuring. We could choose to maintain the list of
usernames in the Company aggregate, but scale out our system such that all &amp;quot;new
user&amp;quot; requests in the username range A-D are handled by a specific server. If
we decide to enforce this constraint outside of our domain, we can offload this
work to the command handler.&lt;/p&gt;
&lt;p&gt;What do you think?&lt;/p&gt;
&lt;p&gt;Craig&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/vBKc2b8kHQw" height="1" width="1"/&gt;</description>
  </item>
      
    <item>
    <title>[ping] Event Sourcing and CQRS, Events Deserialization - Scott Banwart's Blog</title>
    <link>http://thinkbeforecoding.com/post/2010/04/25/Event-Sourcing-and-CQRS-Events-Deserialization#c8881319</link>
    <guid isPermaLink="false">urn:md5:3454dd7e1a447ab7b2050c0f060fa923</guid>
    <pubDate>Fri, 04 Jun 2010 16:46:50 +0200</pubDate>
    <dc:creator>Scott Banwart's Blog</dc:creator>
    
    <description>&lt;p&gt;&lt;a href="http://rogue-technology.com/blog/?p=842"&gt;Distributed Weekly 48&lt;/a&gt;&lt;/p&gt;
    &lt;!-- TB --&gt;

&lt;p&gt;Architecture Event Sourcing and CQRS, Events Deserialization * REST REST from scratch A RESTful Client Side Framework for Jersey WS-REST 2010 Proceedings Nestful: A Simple Ruby HTTP/REST Client Library The Open Data Protocol .NET Framework Client...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/9LDxMJCq5l0" height="1" width="1"/&gt;</description>
  </item>
    
      
    
    <item>
    <title>Event Sourcing and CQRS, Events Deserialization - jeremie</title>
    <link>http://thinkbeforecoding.com/post/2010/04/25/Event-Sourcing-and-CQRS-Events-Deserialization#c8857171</link>
    <guid isPermaLink="false">urn:md5:0126ec5343047094cc39bba277f9eadf</guid>
    <pubDate>Fri, 07 May 2010 11:32:01 +0200</pubDate>
    <dc:creator>jeremie</dc:creator>
    
    <description>&lt;p&gt;I have one, but this is quite borring code, and I won't push the code open
sourced now. Consider this as an excercise ;-)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/E5F9RWeg9Tk" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Events Deserialization - Dennis Doomen</title>
    <link>http://thinkbeforecoding.com/post/2010/04/25/Event-Sourcing-and-CQRS-Events-Deserialization#c8856392</link>
    <guid isPermaLink="false">urn:md5:3230bc0d10feb7c55d3d2c3d55248af8</guid>
    <pubDate>Thu, 06 May 2010 07:53:40 +0200</pubDate>
    <dc:creator>Dennis Doomen</dc:creator>
    
    <description>&lt;p&gt;Excellent idea. Do you happen to have a concrete example of how you propose
to do that in .NET?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/iYRXks5z9Pk" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Udi Dahan talks on CQRS in Paris - Olav Rask</title>
    <link>http://thinkbeforecoding.com/post/2009/11/17/Udi-Dahan-talks-on-CQRS-in-Paris#c8846753</link>
    <guid isPermaLink="false">urn:md5:efced66be13fc6c916f35c629af2fa76</guid>
    <pubDate>Tue, 20 Apr 2010 13:03:33 +0200</pubDate>
    <dc:creator>Olav Rask</dc:creator>
    
    <description>&lt;p&gt;Sweet - thanks :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/hElo7XAm8Vk" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Bounded Contexts - jeremie</title>
    <link>http://thinkbeforecoding.com/post/2010/04/17/Event-Sourcing-and-CQRS-Bounded-Contexts#c8846680</link>
    <guid isPermaLink="false">urn:md5:2315ad433f9592313ce972531f461230</guid>
    <pubDate>Tue, 20 Apr 2010 11:34:08 +0200</pubDate>
    <dc:creator>jeremie</dc:creator>
    
    <description>&lt;p&gt;@Hendry Luk&amp;gt; You can also split Query BCs, but based on Query
requirements. A single Query BC will usually gather information from serveral
Command BCs. Because presentation applications often display crossed
informations from different part of your domain.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/qm2PgoeDorE" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Udi Dahan talks on CQRS in Paris - jeremie</title>
    <link>http://thinkbeforecoding.com/post/2009/11/17/Udi-Dahan-talks-on-CQRS-in-Paris#c8846674</link>
    <guid isPermaLink="false">urn:md5:1ac3f8f1a26da5b6aab1ef97beaa7aa1</guid>
    <pubDate>Tue, 20 Apr 2010 11:21:07 +0200</pubDate>
    <dc:creator>jeremie</dc:creator>
    
    <description>&lt;p&gt;@Olav&amp;gt; yes, it should.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/yuxZt0_TuLs" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Bounded Contexts - Hendry Luk</title>
    <link>http://thinkbeforecoding.com/post/2010/04/17/Event-Sourcing-and-CQRS-Bounded-Contexts#c8846382</link>
    <guid isPermaLink="false">urn:md5:eb942bb439cb92b64890e72667bb2a4e</guid>
    <pubDate>Tue, 20 Apr 2010 04:54:10 +0200</pubDate>
    <dc:creator>Hendry Luk</dc:creator>
    
    <description>&lt;p&gt;&amp;quot;Actually the Inventory BC itself will not display lists, because the BC is
part off the Command side.&amp;quot;&lt;/p&gt;
&lt;p&gt;Ah now I see... I thought each BC would have both command and query
sub-BCs.&lt;br /&gt;
In many applications, a BC is a whole complete application by itself with its
own UI and sometimes storage. I was thinking that inventory BC is an
inventory-management application which includes its GUI client, hence the
necessity of displaying the list of books, their publishers, authors, and
perhaps borrowers (albeit not good example).&lt;br /&gt;
I didnt realise that BCs separation only happens within command-side of thing.
Most of my readings have always led to understanding that each BC will wrap a
command-component, and a query component.&lt;br /&gt;
So, for the sake of dicussion, in the case that inventory has its own separate
UI application, were you saying that this will then listen to all various
events (PublisherAdded, AuthorsModified, BorrowerSignedUp) and maintain its own
set of &amp;quot;master-data&amp;quot;, so when it receives a BookRegisteredEvent it knows how to
create a flat denormalised view-model out of it?&lt;br /&gt;
Cheers&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/rk3JBV1HRRc" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Udi Dahan talks on CQRS in Paris - Olav Rask</title>
    <link>http://thinkbeforecoding.com/post/2009/11/17/Udi-Dahan-talks-on-CQRS-in-Paris#c8846169</link>
    <guid isPermaLink="false">urn:md5:a809114d85bf45055d19ea70d0957bde</guid>
    <pubDate>Mon, 19 Apr 2010 21:32:48 +0200</pubDate>
    <dc:creator>Olav Rask</dc:creator>
    
    <description>&lt;p&gt;Jérémie &amp;gt; Thanks for your reply.&lt;/p&gt;
&lt;p&gt;I'm sorry for beeing thick. I get that data should be stored for
presentation. That's what UsersWithRoleName is for. But when a &amp;quot;UserCreated&amp;quot;
event arrives, i need to get the associated role name from somewhere, in order
to fill in all the fields in that table.&lt;/p&gt;
&lt;p&gt;So besides the &amp;quot;UsersWithRoleName&amp;quot; table you would have a &amp;quot;Role&amp;quot; table on
the read side, to get the role names from, when new users arrive?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/f9BVO-H7I7w" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Udi Dahan talks on CQRS in Paris - Jérémie</title>
    <link>http://thinkbeforecoding.com/post/2009/11/17/Udi-Dahan-talks-on-CQRS-in-Paris#c8845952</link>
    <guid isPermaLink="false">urn:md5:aaa347f608da33082656816796a3c388</guid>
    <pubDate>Mon, 19 Apr 2010 19:10:38 +0200</pubDate>
    <dc:creator>Jérémie</dc:creator>
    
    <description>&lt;p&gt;@Olav&amp;gt; To show the data on the read side. So you'll have all that data in
the database. This is where you'll find names and descriptions.&lt;br /&gt;
One difference with your domain model is that it will be stored with
presentation in mind instead of transactions.&lt;br /&gt;
The other difference is that you can rebuild it from your event log.&lt;/p&gt;
&lt;p&gt;Hope it helps&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/VQ-KmqqmQVg" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Udi Dahan talks on CQRS in Paris - Olav Rask</title>
    <link>http://thinkbeforecoding.com/post/2009/11/17/Udi-Dahan-talks-on-CQRS-in-Paris#c8845893</link>
    <guid isPermaLink="false">urn:md5:fef726099bdb30f9ab20c81083743427</guid>
    <pubDate>Mon, 19 Apr 2010 17:36:07 +0200</pubDate>
    <dc:creator>Olav Rask</dc:creator>
    
    <description>&lt;p&gt;Hi Guys&lt;/p&gt;
&lt;p&gt;If anybody is stil following comments here, can someone elaborate a bit on
the answers for Clément Bouillier?&lt;/p&gt;
&lt;p&gt;Say I assign a user a role, resulting in a UserAssignedRole event containing
the UserId and RoleId. When i go to update my &amp;quot;UsersWithRoleName&amp;quot; read-side
table, am i suppose to have the roles stored seperately on the read side, in
order to find the role name, to put in?&lt;/p&gt;
&lt;p&gt;This could potentialy mean storing the entire model as well as the
denormalized tables on the read side.. ..would you guys recommend this or do
you have an alternate approache?&lt;/p&gt;
&lt;p&gt;Kind regards&lt;br /&gt;
Olav&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/T0PmataWxag" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Bounded Contexts - jeremie</title>
    <link>http://thinkbeforecoding.com/post/2010/04/17/Event-Sourcing-and-CQRS-Bounded-Contexts#c8845742</link>
    <guid isPermaLink="false">urn:md5:a384ced5d4ff4dd469bc7121b38002a1</guid>
    <pubDate>Mon, 19 Apr 2010 14:20:14 +0200</pubDate>
    <dc:creator>jeremie</dc:creator>
    
    <description>&lt;p&gt;@Hendry Luk&amp;gt; Actually the Inventory BC itself will not display lists,
because the BC is part off the Command side.&lt;br /&gt;
To display lists, the web application (or web service, or...) will build a
persistent view model. There will be a service that will handle Domain events a
populate a denormalized view of the model, probably in a SQL table. The web
site will simply display this list.&lt;br /&gt;
This service will be in charge to listen to events from all BCs to update
Persitent View Models (usually one per page).&lt;/p&gt;
&lt;p&gt;This is important because display screen often gather information from
several contexts. But the contexts themselves don't have to know this, since
these aggregations are only for display (Querying/Reporting) purpose.&lt;/p&gt;
&lt;p&gt;So, the Inventory BC doesn't know about borrowers names, the Relationship BC
doesn't know about books names, but the denormalizers listen to both and can
prepare the persitent view model.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/ZFMBgNd9onA" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Bounded Contexts - Hendry Luk</title>
    <link>http://thinkbeforecoding.com/post/2010/04/17/Event-Sourcing-and-CQRS-Bounded-Contexts#c8845579</link>
    <guid isPermaLink="false">urn:md5:4764cfd0ec07eb3ba3c2d7da81a6dbe1</guid>
    <pubDate>Mon, 19 Apr 2010 09:21:03 +0200</pubDate>
    <dc:creator>Hendry Luk</dc:creator>
    
    <description>&lt;p&gt;Just to associate with your example...&lt;br /&gt;
Command BC issues this event: ReturnedLateToShelf { Book : bookId, By :
borrowerId, After : 20 days, LateBy : 6 days }&lt;br /&gt;
Relationship BC catches it, and it will want to inform the user
(customer-service rep) about who the borrower is. It can't just tell the user:
Borrower: #1534.&lt;br /&gt;
It needs to tell the user the name and email address of the borrower. Full-name
and email aren't part of the participating events , but they certainly are part
of the Borrower entity in this BC. This BC thus has BorrowerRepository I
figure, but im not sure how it's then able to retrieve the complete aggragate
root of Borrower entity?&lt;br /&gt;
If I intepret correctly, you tend to lean toward having this BC having its own
storage of all borrowers? (And publisher, authors, etc)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/lA2HAHV8d3A" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Bounded Contexts - Hendry Luk</title>
    <link>http://thinkbeforecoding.com/post/2010/04/17/Event-Sourcing-and-CQRS-Bounded-Contexts#c8845576</link>
    <guid isPermaLink="false">urn:md5:bf8a3170755502fc9f541dcae8dff524</guid>
    <pubDate>Mon, 19 Apr 2010 09:07:21 +0200</pubDate>
    <dc:creator>Hendry Luk</dc:creator>
    
    <description>&lt;p&gt;Thanks Jeremie for great explanation.&lt;br /&gt;
Some things are still not clear to me though.&lt;br /&gt;
Let's take this into your example. Your inventory reporting BC displays list of
lent and returned books, along with the name of the borrowers.&lt;br /&gt;
If you change your implementation to be more realistic by using BorrowerID in
the event (instead of fullname), then how would this inventory BC retrive the
view-models of the borrower?&lt;br /&gt;
It can subscribe to BorrowerRegistered event and store its own data of all
borrowers that it can use for reporting purpose, but it would start to get
messy.&lt;br /&gt;
It makes sense for inventory BC to keep its own view of Books concept
(query-optimised view of Book), and manage the data based on BookRegistered,
BookReturned, and BookLent events. But it does not make so much sense for it to
also keep track of Borrowers, and BorrorwerRegistered/BorrowerTerminate events.
They're beyond the UL of inventory BC.&lt;br /&gt;
And we probably have many other BC that requires borrower's full-name (e.g.
late-book-notifier). And we have all other concepts like Publisher, Author,
Genre, Country/Town, etc that are used in almost every BC. (ie, perhaps 80% of
the time, a book, in any BC, is described by its title, publisher, and author's
name). Yet you only propagate all these information (events) merely by their
IDs.&lt;br /&gt;
How do other (querying) BCs understand these IDs? They need a complete
descriptive information of the entity, not just the ID. Do they make a
web-service call to a central BC to get these information? Who maintains these
information?&lt;br /&gt;
Or alternatively does each of the BCs master its own set of storage for each of
these entity-types by subscribing to e.g. AuthorAdded, AuthorModified,
PublisherAdded, BorrowerMovedTown, etc?&lt;br /&gt;
If you could explain a bit of how you would implement book-borrower scenario
into your example, that would help a great deal.&lt;br /&gt;
Thanks again :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/gtBE3vuWCaY" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Let's use it. - Hendry Luk</title>
    <link>http://thinkbeforecoding.com/post/2009/11/02/Event-Sourcing-and-CQRS-Lets-use-it#c8844674</link>
    <guid isPermaLink="false">urn:md5:732ba72cc38bc919cb04c974d9f0ad74</guid>
    <pubDate>Sat, 17 Apr 2010 05:57:32 +0200</pubDate>
    <dc:creator>Hendry Luk</dc:creator>
    
    <description>&lt;p&gt;Great article Jeremie.&lt;br /&gt;
Just 1 question, you represent borrower in events as a simple full-name string.
Is there any reason or just for sake of simplicity for example?&lt;br /&gt;
Supposed I'm using borrowerId, how would that work in other BC, say
LateBookNotifier (let's assume its a separate BC). How does this BC shows the
name of the borrower? Does it communicate directly with command BC using ACL?
Or does it also subscribe to BorrowerRegistered event as well (hence every BC
would have duplicate data of each of the borrowers, just like they do each of
the books)?&lt;br /&gt;
In real-world app, like the one I'm dealing with, it's rarely simply command
and query BCs. I have multiple BCs, in this particular case can be:
LibarianCounter BC (register,lend,return book), Inventory BC (status of each
book and its borrower), and Administration (get notified of late books, impose
fine). So each BC will have its own storage of all books and borrowers? When
more entities come into play, wouldnt this get very messy?&lt;br /&gt;
Thanks&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/XGX3reUYucU" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Uniqueness validation in CQRS Architecture - Clément</title>
    <link>http://thinkbeforecoding.com/post/2009/10/28/Uniqueness-validation-in-CQRS-Architecture#c8816898</link>
    <guid isPermaLink="false">urn:md5:0d2cfc8dca215858a527af97e217c5b3</guid>
    <pubDate>Mon, 08 Mar 2010 00:27:15 +0100</pubDate>
    <dc:creator>Clément</dc:creator>
    
    <description>&lt;p&gt;Hi Jeremy,&lt;/p&gt;
&lt;p&gt;I remember talking about this with you. Crowling over the web about CQRS
trying to understand more deeply the concepts, I re-read this post. I also read
you discussion in DDD Yahoo group about &amp;quot;A possible solution for uniqueness
validation in CQS&amp;quot;. (&lt;a href="http://tech.groups.yahoo.com/group/domaindrivendesign/message/16462" title="http://tech.groups.yahoo.com/group/domaindrivendesign/message/16462" rel="nofollow"&gt;http://tech.groups.yahoo.com/group/...&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I agree with you with most arguments, but one let me sceptical: it is about
how do you implement &amp;quot;&lt;a href="http://thinkbeforecoding.com/post/2009/10/28/..." title="..." rel="nofollow"&gt;...&lt;/a&gt;keep the directory on
disk&lt;a href="http://thinkbeforecoding.com/post/2009/10/28/..." title="..." rel="nofollow"&gt;...&lt;/a&gt;&amp;quot; (just before your conclusion) or
&amp;quot;&lt;a href="http://thinkbeforecoding.com/post/2009/10/28/..." title="..." rel="nofollow"&gt;...&lt;/a&gt;May be one of these new key-value stores
could help with that.&lt;a href="http://thinkbeforecoding.com/post/2009/10/28/..." title="..." rel="nofollow"&gt;...&lt;/a&gt;&amp;quot; (as bodrin writes in
DDD list) ? Particularly when using Event Sourcing ? Is it several indexes
managed by your AR repository ? Does it mean that it is CommandHandler that
calls your Repository, or does your Company has access to the Repository or
somewhat else... ? Could you be more precise on this point please ?&lt;/p&gt;
&lt;p&gt;Note : I see a solution around Udi comment on the DDD list: rely on the
constraint violation management of the store (event or state in fact). It seems
really simple using a RDBMS system but I am wondering if you were using
something that fakes the same constraint violation management in a custom event
store...&lt;/p&gt;
&lt;p&gt;Clément&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/Plis9gYCa9U" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Snapshots ! - Jérémie</title>
    <link>http://thinkbeforecoding.com/post/2010/02/25/Event-Sourcing-and-CQRS-Snapshots#c8814293</link>
    <guid isPermaLink="false">urn:md5:4ee519fb9e8427ef7db64fb45c9d2337</guid>
    <pubDate>Wed, 03 Mar 2010 14:40:08 +0100</pubDate>
    <dc:creator>Jérémie</dc:creator>
    
    <description>&lt;p&gt;@Leonardo&amp;gt; State used for deciding state changes is usually not that big,
I think at least what is most needed to run your domain logic can fit in
memory, even on large applications. The rest will stay in the event store
(because it was published once), and in the query context in denormalized
views, but your aggregate root won't need it for transactionality.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/n2y8GQN2_RY" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Snapshots ! - Leonardo</title>
    <link>http://thinkbeforecoding.com/post/2010/02/25/Event-Sourcing-and-CQRS-Snapshots#c8812314</link>
    <guid isPermaLink="false">urn:md5:81a1720450633003d64d623b2242f27c</guid>
    <pubDate>Sat, 27 Feb 2010 17:27:48 +0100</pubDate>
    <dc:creator>Leonardo</dc:creator>
    
    <description>&lt;p&gt;Thanks for the answer in an entire post, Jérémie.&lt;br /&gt;
Having snapshots is a good idea to solve that problem.&lt;br /&gt;
Now, what I don't fully understand is what you say about having the model
entirely in memory. I'm being reluctant to believe that an entire model can fit
in memory, taking into account that CQRS is meant for scalable applications
with very big, perhaps cross countries applications, with tons and tons of
data. I'll try to have an open mind if you try to convince me the other
way.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/W3xUCwFExcM" height="1" width="1"/&gt;</description>
  </item>
      
    
    <item>
    <title>Event Sourcing and CQRS, Let's use it. - Jérémie</title>
    <link>http://thinkbeforecoding.com/post/2009/11/02/Event-Sourcing-and-CQRS-Lets-use-it#c8810922</link>
    <guid isPermaLink="false">urn:md5:85583b87fdc12c6d7a29749476d0d199</guid>
    <pubDate>Thu, 25 Feb 2010 10:46:03 +0100</pubDate>
    <dc:creator>Jérémie</dc:creator>
    
    <description>&lt;p&gt;@leonardo&amp;gt; I made a new post to answer the question : &lt;a href="http://thinkbeforecoding.com/post/2010/02/25/Event-Sourcing-and-CQRS-Snapshots" title="http://thinkbeforecoding.com/post/2010/02/25/Event-Sourcing-and-CQRS-Snapshots" rel="nofollow"&gt;
http://thinkbeforecoding.com/post/2...&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThinkBeforeCoding-Comments/~4/aTuN8_usPIY" height="1" width="1"/&gt;</description>
  </item>
      
</channel>
</rss>
