<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: How we got rid of the database&#8211;part 4</title>
	<atom:link href="http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/</link>
	<description>Blog about architectural patterns, best practices, coding principles and techniques</description>
	<lastBuildDate>Wed, 22 May 2013 12:15:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
	<item>
		<title>By: Anonymous</title>
		<link>http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/#comment-489</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Thu, 21 Jun 2012 13:12:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/#comment-489</guid>
		<description> Normally you do not have different read models that need to be synchronized. Each read model, or may I rather say each projection or view model is constantly/continuously updated by the events that are (asynchronously) published by the domain (aggregates). There is no (and never should be) inter-dependency between different read models/projections.
And yes, in general the read model is only a tiny bit stale (in the range milliseconds to seconds).
Validating the credit card usually is be part of the (synchronous) transaction but this is not a requirement as long as you foresee compensating actions in case of failure...</description>
		<content:encoded><![CDATA[<p> Normally you do not have different read models that need to be synchronized. Each read model, or may I rather say each projection or view model is constantly/continuously updated by the events that are (asynchronously) published by the domain (aggregates). There is no (and never should be) inter-dependency between different read models/projections.<br />
And yes, in general the read model is only a tiny bit stale (in the range milliseconds to seconds).<br />
Validating the credit card usually is be part of the (synchronous) transaction but this is not a requirement as long as you foresee compensating actions in case of failure&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wayne M</title>
		<link>http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/#comment-488</link>
		<dc:creator>Wayne M</dc:creator>
		<pubDate>Thu, 21 Jun 2012 11:30:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/#comment-488</guid>
		<description>So basically you do small enough commands that you can assume it succeeds and act as though it does, but maybe send a notice later to the customer (let&#039;s go with an e-com example as that&#039;s what I&#039;m familiar with) if there was a problem?  Let&#039;s use a real-world example.  My company lets people book freight shipments online and choose what carrier they want to pick it up, and pay for it all online - the quote then goes to our backoffice system where an agent follows up with the carrier to make sure the shipment is handled and keeps in contact with the customer.  The idea here would be to handle each of those things (e.g. getting the quote, paying for the quote, etc.) as events, without worrying if the customer&#039;s credit card couldn&#039;t be charged (bad example though as we kind of have to wait for that) or if the carrier they chose is available?  So if they choose ABC Freight and later on something happens whereby ABC Freight can&#039;t  service the request (this part is handled in the backoffice system), the agent would initiate that event and either that or more likely the agent would notify the customer to let them know?

So is the idea to have one read model for the different applications, or would the frontend have a different read model than the backoffice system?  I guess that part comes down to specifics; it might be okay to replicate data or it might be okay to use the same depending on the actual data needed?Also, I&#039;d like to know how you deal with synchronizing the data.  It seems the overall idea here is to only use a true database for the commands, and use a file or object DB or something that isn&#039;t an RDBMS for the read-model, but that data has to be synced at constant intervals so the read model data is only a little bit stale.  I suppose that would be a good use case for SSIS or to a lesser extent some kind of batch script that runs to take data from the RDMBS and update the read model?</description>
		<content:encoded><![CDATA[<p>So basically you do small enough commands that you can assume it succeeds and act as though it does, but maybe send a notice later to the customer (let&#8217;s go with an e-com example as that&#8217;s what I&#8217;m familiar with) if there was a problem?  Let&#8217;s use a real-world example.  My company lets people book freight shipments online and choose what carrier they want to pick it up, and pay for it all online &#8211; the quote then goes to our backoffice system where an agent follows up with the carrier to make sure the shipment is handled and keeps in contact with the customer.  The idea here would be to handle each of those things (e.g. getting the quote, paying for the quote, etc.) as events, without worrying if the customer&#8217;s credit card couldn&#8217;t be charged (bad example though as we kind of have to wait for that) or if the carrier they chose is available?  So if they choose ABC Freight and later on something happens whereby ABC Freight can&#8217;t  service the request (this part is handled in the backoffice system), the agent would initiate that event and either that or more likely the agent would notify the customer to let them know?</p>
<p>So is the idea to have one read model for the different applications, or would the frontend have a different read model than the backoffice system?  I guess that part comes down to specifics; it might be okay to replicate data or it might be okay to use the same depending on the actual data needed?Also, I&#8217;d like to know how you deal with synchronizing the data.  It seems the overall idea here is to only use a true database for the commands, and use a file or object DB or something that isn&#8217;t an RDBMS for the read-model, but that data has to be synced at constant intervals so the read model data is only a little bit stale.  I suppose that would be a good use case for SSIS or to a lesser extent some kind of batch script that runs to take data from the RDMBS and update the read model?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Morning Brew - Chris Alcock &#187; The Morning Brew #1129</title>
		<link>http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/#comment-487</link>
		<dc:creator>The Morning Brew - Chris Alcock &#187; The Morning Brew #1129</dc:creator>
		<pubDate>Thu, 21 Jun 2012 08:34:12 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/#comment-487</guid>
		<description>[...] How we got rid of the database - part 4 - Gabriel Schenker continues his discussion of how he does CQRS and event souring looking in this part at the concepts of eventual consistency, discussing its important role in how a CQRS / Event sourcing way of working. [...]</description>
		<content:encoded><![CDATA[<p>[...] How we got rid of the database &#8211; part 4 &#8211; Gabriel Schenker continues his discussion of how he does CQRS and event souring looking in this part at the concepts of eventual consistency, discussing its important role in how a CQRS / Event sourcing way of working. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Martin</title>
		<link>http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/#comment-486</link>
		<dc:creator>Chris Martin</dc:creator>
		<pubDate>Thu, 21 Jun 2012 04:57:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/gabrielschenker/2012/06/20/how-we-got-rid-of-the-databasepart-4/#comment-486</guid>
		<description>I can echo everything you&#039;ve said in this post. 

I&#039;ts refreshing to see this model of application being used by more people. We&#039;ve built our application on top of Lokad.Cqrs going on two years now. It&#039;s very stable and with some creativity, very powerful.</description>
		<content:encoded><![CDATA[<p>I can echo everything you&#8217;ve said in this post. </p>
<p>I&#8217;ts refreshing to see this model of application being used by more people. We&#8217;ve built our application on top of Lokad.Cqrs going on two years now. It&#8217;s very stable and with some creativity, very powerful.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
