<?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: Kevin Closson doesn&#8217;t like MPP</title>
	<atom:link href="http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/</link>
	<description>Choices in data management and analysis</description>
	<lastBuildDate>Mon, 01 Mar 2010 19:09:32 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Kevin Closson</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95657</link>
		<dc:creator>Kevin Closson</dc:creator>
		<pubDate>Mon, 25 Aug 2008 22:15:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95657</guid>
		<description>&quot;That said, the actual discussion suggested there were some extreme acts going on to massage the data to make it rapidly queryable later.&quot;

 Curt,

   That isn&#039;t going to cut it. You can tell us old fuddy-duddy Oracle guys get peaved when a claim such as &quot;Oracle took longer than 24 hours&quot; and DATAllegro and Neteeza both took 2-3 minutes and you come back with some claims about how they messaged the data for queries. Let&#039;s stick to the point.

   The claim is that Oracle couldn&#039;t ingest 100 million call detail records (CDR) in 24 hours. Even if they tested Oracle on a laptop and were limited to an ingest rate of 1MB/sec that would be  
84GB with of 24hr load bandwidth...and, by the way, budget for 100 million CDRs of 900 bytes--which would be a HUGE CDR.

   Please, for you reader&#039;s sake, let&#039;s see a little more intellectual curiosity go into these claims.  If you think Oracle on any platform is limited to a bulk data load rate less than 1MB/s please, by all means come out and say it and then tell us what that has to do with an Oracle to Netezza/DATAllegro comparion.

   If you can get something done in 1/700th the time, you&#039;re either not doing the same thing (and I mean an apples to mucous comparison) or using 700 fold the resources. It&#039;s as simple as that. 

   When it comes to getting records into a database elegance can only get you so much and much, much less than 700 fold. If not elegance, than brute force which can get 700 fold performance increase, but do us a favor and cite the configuration detail.

   OK, I&#039;m back to my work performance tuning a CDR loading exercise on my Pentium II laptop running Oracle Lite on Knoppix.</description>
		<content:encoded><![CDATA[<p>&#8220;That said, the actual discussion suggested there were some extreme acts going on to massage the data to make it rapidly queryable later.&#8221;</p>
<p> Curt,</p>
<p>   That isn&#8217;t going to cut it. You can tell us old fuddy-duddy Oracle guys get peaved when a claim such as &#8220;Oracle took longer than 24 hours&#8221; and DATAllegro and Neteeza both took 2-3 minutes and you come back with some claims about how they messaged the data for queries. Let&#8217;s stick to the point.</p>
<p>   The claim is that Oracle couldn&#8217;t ingest 100 million call detail records (CDR) in 24 hours. Even if they tested Oracle on a laptop and were limited to an ingest rate of 1MB/sec that would be<br />
84GB with of 24hr load bandwidth&#8230;and, by the way, budget for 100 million CDRs of 900 bytes&#8211;which would be a HUGE CDR.</p>
<p>   Please, for you reader&#8217;s sake, let&#8217;s see a little more intellectual curiosity go into these claims.  If you think Oracle on any platform is limited to a bulk data load rate less than 1MB/s please, by all means come out and say it and then tell us what that has to do with an Oracle to Netezza/DATAllegro comparion.</p>
<p>   If you can get something done in 1/700th the time, you&#8217;re either not doing the same thing (and I mean an apples to mucous comparison) or using 700 fold the resources. It&#8217;s as simple as that. </p>
<p>   When it comes to getting records into a database elegance can only get you so much and much, much less than 700 fold. If not elegance, than brute force which can get 700 fold performance increase, but do us a favor and cite the configuration detail.</p>
<p>   OK, I&#8217;m back to my work performance tuning a CDR loading exercise on my Pentium II laptop running Oracle Lite on Knoppix.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Closson</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95655</link>
		<dc:creator>Kevin Closson</dc:creator>
		<pubDate>Mon, 25 Aug 2008 21:47:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95655</guid>
		<description>&quot;But in practice the benefit of MPP is going to be lost unless you have a whole lot of channels communicating data from disks to processors at once. And so far, that equates to shared-nothing.&quot;

Curt,

   I couldn&#039;t agree with you more about balancing the pipes from I/O-&gt;CPU. And if you read as much of my blog as I yours, you&#039;d know my position about trying to feed a huge hungry compute tier--be it a huge monolithic SMP or 50 RAC nodes or whatever--with little I/O tiny pipes.

   So, Curt, when it comes down to it I suspect you are more biased toward BALANCED systems configurations than shared nothing or MPP...and it is for that reason the fangs remain concealed.</description>
		<content:encoded><![CDATA[<p>&#8220;But in practice the benefit of MPP is going to be lost unless you have a whole lot of channels communicating data from disks to processors at once. And so far, that equates to shared-nothing.&#8221;</p>
<p>Curt,</p>
<p>   I couldn&#8217;t agree with you more about balancing the pipes from I/O-&gt;CPU. And if you read as much of my blog as I yours, you&#8217;d know my position about trying to feed a huge hungry compute tier&#8211;be it a huge monolithic SMP or 50 RAC nodes or whatever&#8211;with little I/O tiny pipes.</p>
<p>   So, Curt, when it comes down to it I suspect you are more biased toward BALANCED systems configurations than shared nothing or MPP&#8230;and it is for that reason the fangs remain concealed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Curt Monash</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95626</link>
		<dc:creator>Curt Monash</dc:creator>
		<pubDate>Mon, 25 Aug 2008 18:15:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95626</guid>
		<description>Greg,

I agree that the TEOCO figure makes no sense on the surface.  And indeed in the interests of time I often pass through claims without carefully vetting each one, but rather being careful about how I attribute them and the evidence (such as it is) for them.  That said, the actual discussion suggested there were some extreme acts going on to massage the data to make it rapidly queryable later.

CAM</description>
		<content:encoded><![CDATA[<p>Greg,</p>
<p>I agree that the TEOCO figure makes no sense on the surface.  And indeed in the interests of time I often pass through claims without carefully vetting each one, but rather being careful about how I attribute them and the evidence (such as it is) for them.  That said, the actual discussion suggested there were some extreme acts going on to massage the data to make it rapidly queryable later.</p>
<p>CAM</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Rahn</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95621</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Mon, 25 Aug 2008 17:37:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95621</guid>
		<description>@Curt

I apologize in advance for asking, but I have not found any &quot;hardcore technical arguments&quot; on why Oracle can not run well at these scales on your blog.  Can you provide a few specific links?

I do realize this is a database analyst blog and not a database engineering blog, but some of your customer examples do not really seem well researched to me.

Let me give you &lt;a href=&quot;http://www.dbms2.com/2008/05/23/data-warehouse-appliance-power-user-teoco/&quot; rel=&quot;nofollow&quot;&gt;one example&lt;/a&gt; of such a report: &lt;blockquote&gt;&quot;after extensive engineering...Oracle couldn’t get the load time for 100 million call detail records (CDRs) below 24 hours...DATAllegro and Netezza both handled it in 2-3 minutes.&quot;&lt;/blockquote&gt;  
I find it completely bizarre that it does not seem that you even question why there is over a 480x-720x difference in load times (over 1440 mins vs. 2-3 mins).  Do you think that DATAllegro/Netezza do something so unique and so revolutionary in loading data that it warrants a 480x-720x difference w/o even wondering why?  I don&#039;t have a Ph.D. in Mathematics, but something certainly does not add up to me.  I for one think this has absolutely nothing to do with the database software.  Do you agree, or is this simply just a case of: &quot;&lt;em&gt;This is what I was told and it fits my position on Oracle so I print it&lt;/em&gt;&quot;?</description>
		<content:encoded><![CDATA[<p>@Curt</p>
<p>I apologize in advance for asking, but I have not found any &#8220;hardcore technical arguments&#8221; on why Oracle can not run well at these scales on your blog.  Can you provide a few specific links?</p>
<p>I do realize this is a database analyst blog and not a database engineering blog, but some of your customer examples do not really seem well researched to me.</p>
<p>Let me give you <a href="http://www.dbms2.com/2008/05/23/data-warehouse-appliance-power-user-teoco/"  rel="nofollow">one example</a> of such a report:<br />
<blockquote>&#8220;after extensive engineering&#8230;Oracle couldn’t get the load time for 100 million call detail records (CDRs) below 24 hours&#8230;DATAllegro and Netezza both handled it in 2-3 minutes.&#8221;</p></blockquote>
<p>I find it completely bizarre that it does not seem that you even question why there is over a 480x-720x difference in load times (over 1440 mins vs. 2-3 mins).  Do you think that DATAllegro/Netezza do something so unique and so revolutionary in loading data that it warrants a 480x-720x difference w/o even wondering why?  I don&#8217;t have a Ph.D. in Mathematics, but something certainly does not add up to me.  I for one think this has absolutely nothing to do with the database software.  Do you agree, or is this simply just a case of: &#8220;<em>This is what I was told and it fits my position on Oracle so I print it</em>&#8220;?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Curt Monash</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95529</link>
		<dc:creator>Curt Monash</dc:creator>
		<pubDate>Mon, 25 Aug 2008 02:06:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95529</guid>
		<description>Kevin,

I apologize again for the error re your posting date.  Thanks for taking it so calmly.

As for whether MPP equates to shared-nothing -- in theory, of course it doesn&#039;t.  But in practice the benefit of MPP is going to be lost unless you have a whole lot of channels communicating data from disks to processors at once.  And so far, that equates to shared-nothing.

The problem is even more acute when you&#039;re talking about RAM caches, and the speed of light comes seriously into play. To quote an old T-shirt, 3 x 10^10 cm/sec isn&#039;t just a good idea. It&#039;s the law.

Best regards,

CAM</description>
		<content:encoded><![CDATA[<p>Kevin,</p>
<p>I apologize again for the error re your posting date.  Thanks for taking it so calmly.</p>
<p>As for whether MPP equates to shared-nothing &#8212; in theory, of course it doesn&#8217;t.  But in practice the benefit of MPP is going to be lost unless you have a whole lot of channels communicating data from disks to processors at once.  And so far, that equates to shared-nothing.</p>
<p>The problem is even more acute when you&#8217;re talking about RAM caches, and the speed of light comes seriously into play. To quote an old T-shirt, 3 x 10^10 cm/sec isn&#8217;t just a good idea. It&#8217;s the law.</p>
<p>Best regards,</p>
<p>CAM</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Closson</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95258</link>
		<dc:creator>Kevin Closson</dc:creator>
		<pubDate>Fri, 22 Aug 2008 22:25:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95258</guid>
		<description>oops, I meant ...Oracle has (and never has) no problem working with MPP...</description>
		<content:encoded><![CDATA[<p>oops, I meant &#8230;Oracle has (and never has) no problem working with MPP&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Closson</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95257</link>
		<dc:creator>Kevin Closson</dc:creator>
		<pubDate>Fri, 22 Aug 2008 22:24:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95257</guid>
		<description>I still think you guys are missing the entire point (devil&#039;s advocate here). Curt found an old post where I was discussing shared nothing verses shared disk database architecture and titled it, &quot;Kevin Closson doesn&#039;t like MPP.&quot; MPP is a hardware architecture and Oracle has (and never has) had a problem working with MPP hardware (ever heard of Pyramid R1000, nCube, IBM SP2).

I am a huge fan of MPP...especially with shared disk architecture. The two are not mutually exclusive.

I&#039;ve been very short on blogging time lately. This should have turned into a post or two over at my blog.</description>
		<content:encoded><![CDATA[<p>I still think you guys are missing the entire point (devil&#8217;s advocate here). Curt found an old post where I was discussing shared nothing verses shared disk database architecture and titled it, &#8220;Kevin Closson doesn&#8217;t like MPP.&#8221; MPP is a hardware architecture and Oracle has (and never has) had a problem working with MPP hardware (ever heard of Pyramid R1000, nCube, IBM SP2).</p>
<p>I am a huge fan of MPP&#8230;especially with shared disk architecture. The two are not mutually exclusive.</p>
<p>I&#8217;ve been very short on blogging time lately. This should have turned into a post or two over at my blog.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Moss</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95245</link>
		<dc:creator>Jeff Moss</dc:creator>
		<pubDate>Fri, 22 Aug 2008 21:19:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95245</guid>
		<description>Curt

It&#039;s not really fair to say to someone that they &quot;are dismissing a large fraction of the posts...&quot; - I understand your point, but you&#039;re not really expecting everyone who reads each post you&#039;ve written, to then go and read a large proportion of your other posts to get all your supporting evidence, are you?

We&#039;ve debated, briefly, this &quot;Oracle doesn&#039;t work with 5Tb+&quot; issue a few months back and I don&#039;t think we came to any significant conclusions then - it&#039;s one of those debates that rumbles on I guess, with many differing viewpoints, however, I certainly didn&#039;t leave the debate thinking I&#039;d  need to recommend to my client that they need to plan for a move to MPP. 

As I said in the comments on that post we discussed a while back, I&#039;ve no knowledge of MPP systems per se, but I just don&#039;t understand how they offer more than a RAC or SMP solution that is architected properly - and yes, Greg is absolutely right, that architecting the thing right is the key - it&#039;s the design principles that are more important here...not so much the hardware architecture, or software vendor for that matter. The individuals involved in the warehouse I work on are used to thinking about things in a warehouse way, rather than an OLTP way... perhaps that&#039;s why it works for us.

If you fail to use appropriate database features such as partitioning, for example, then you should probably prepare to fail - I mentioned before that Tim Gorman wrote an excellent paper on this.

As Greg says, compression and parallelism are also very effective features to improve the chances of success. Bitmap indexes and materialized views can also aid performance too.

The data warehouse I deal with is currently 4.7Tb of real data - not indexes, temp or staging - I&#039;m quoting it properly this time ;-) It&#039;s likely to exceed 5Tb very shortly, and we&#039;re still not planning on changing from Oracle any time soon.

Cheers
Jeff</description>
		<content:encoded><![CDATA[<p>Curt</p>
<p>It&#8217;s not really fair to say to someone that they &#8220;are dismissing a large fraction of the posts&#8230;&#8221; &#8211; I understand your point, but you&#8217;re not really expecting everyone who reads each post you&#8217;ve written, to then go and read a large proportion of your other posts to get all your supporting evidence, are you?</p>
<p>We&#8217;ve debated, briefly, this &#8220;Oracle doesn&#8217;t work with 5Tb+&#8221; issue a few months back and I don&#8217;t think we came to any significant conclusions then &#8211; it&#8217;s one of those debates that rumbles on I guess, with many differing viewpoints, however, I certainly didn&#8217;t leave the debate thinking I&#8217;d  need to recommend to my client that they need to plan for a move to MPP. </p>
<p>As I said in the comments on that post we discussed a while back, I&#8217;ve no knowledge of MPP systems per se, but I just don&#8217;t understand how they offer more than a RAC or SMP solution that is architected properly &#8211; and yes, Greg is absolutely right, that architecting the thing right is the key &#8211; it&#8217;s the design principles that are more important here&#8230;not so much the hardware architecture, or software vendor for that matter. The individuals involved in the warehouse I work on are used to thinking about things in a warehouse way, rather than an OLTP way&#8230; perhaps that&#8217;s why it works for us.</p>
<p>If you fail to use appropriate database features such as partitioning, for example, then you should probably prepare to fail &#8211; I mentioned before that Tim Gorman wrote an excellent paper on this.</p>
<p>As Greg says, compression and parallelism are also very effective features to improve the chances of success. Bitmap indexes and materialized views can also aid performance too.</p>
<p>The data warehouse I deal with is currently 4.7Tb of real data &#8211; not indexes, temp or staging &#8211; I&#8217;m quoting it properly this time <img src='http://www.dbms2.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  It&#8217;s likely to exceed 5Tb very shortly, and we&#8217;re still not planning on changing from Oracle any time soon.</p>
<p>Cheers<br />
Jeff</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Curt Monash</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95200</link>
		<dc:creator>Curt Monash</dc:creator>
		<pubDate>Fri, 22 Aug 2008 14:38:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95200</guid>
		<description>Greg,  

Re: &quot;If you have some technical evidence and details to support otherwise, do share.&quot;

In writing that, you&#039;re dismissing a large fraction of the posts in this blog as if they didn&#039;t exist at all, from customer examples to hardcore technical arguments.

I really don&#039;t have a guess as to what else I could say that you would regard as suitable.

CAM</description>
		<content:encoded><![CDATA[<p>Greg,  </p>
<p>Re: &#8220;If you have some technical evidence and details to support otherwise, do share.&#8221;</p>
<p>In writing that, you&#8217;re dismissing a large fraction of the posts in this blog as if they didn&#8217;t exist at all, from customer examples to hardcore technical arguments.</p>
<p>I really don&#8217;t have a guess as to what else I could say that you would regard as suitable.</p>
<p>CAM</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Rahn</title>
		<link>http://www.dbms2.com/2008/08/20/kevin-closson-doesnt-like-mpp/comment-page-1/#comment-95164</link>
		<dc:creator>Greg Rahn</dc:creator>
		<pubDate>Fri, 22 Aug 2008 09:36:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=492#comment-95164</guid>
		<description>@Curt

I&#039;m quite certain that your generalizations about Oracle data warehouses are related to the management of the database and not any limitations of the Oracle database software.  If you have some technical evidence and details to support otherwise, do share.   

When a data warehouse gets to 5TB - 10TB and one manages it like an OLTP database, it will certainly be painful.  Then again, applying the same OLTP database management principles to any other data warehouse database software would result in the same pain.  The other notable is the same principles that make and MPP DW perform well, also make an Oracle DW perform well.  Specifically: appropriately choice of  partitioning key and type, leveraging parallelism and using compression.  The other common problem that hinders many Oracle data warehouses is inappropriate storage bandwidth provisioning.  If sized appropriately for the workload, it makes a world of difference.  Again, if one manages their Oracle data warehouse storage as if it was an OLTP database it will certainly be painful.  If they follow the MPP model: adding storage, I/O bandwidth and CPU in building block increments, it again performs well.  The issue that I see is that many Oracle shops brought in Oracle years ago as on OLTP database, gained experience with it in that form, then one day they built a data warehouse.  This Oracle data warehouse was just another Oracle database so the same DBAs managed it in the same way they did all their other databases.  This Oracle DW started small, then grew, and today it is slow, not because of any software limitations, but because the fundamental principles that make DW database software work well we not applied, or applied inappropriately. 

There are also shops out there that thought that an MPP DW database (say like Teradata) would give them perfect scalability (as the marketing literature says) and they could just add more hardware as their database grew and keep the same performance.  The only problem is that ratio between hardware and performance keeps growing and it gets more and more costly to keep the same performance as the DW grows.  How could this be?  Well, if good partition keys are not chosen, it results in much of the data being shipped between nodes.  I&#039;ve seen MPP DWs come to a near halt because of this.  Again, if the fundamental principles of data warehousing are not applied, performance will suffer.  Period.  BTW, this also applies to the new data warehouse startups.</description>
		<content:encoded><![CDATA[<p>@Curt</p>
<p>I&#8217;m quite certain that your generalizations about Oracle data warehouses are related to the management of the database and not any limitations of the Oracle database software.  If you have some technical evidence and details to support otherwise, do share.   </p>
<p>When a data warehouse gets to 5TB &#8211; 10TB and one manages it like an OLTP database, it will certainly be painful.  Then again, applying the same OLTP database management principles to any other data warehouse database software would result in the same pain.  The other notable is the same principles that make and MPP DW perform well, also make an Oracle DW perform well.  Specifically: appropriately choice of  partitioning key and type, leveraging parallelism and using compression.  The other common problem that hinders many Oracle data warehouses is inappropriate storage bandwidth provisioning.  If sized appropriately for the workload, it makes a world of difference.  Again, if one manages their Oracle data warehouse storage as if it was an OLTP database it will certainly be painful.  If they follow the MPP model: adding storage, I/O bandwidth and CPU in building block increments, it again performs well.  The issue that I see is that many Oracle shops brought in Oracle years ago as on OLTP database, gained experience with it in that form, then one day they built a data warehouse.  This Oracle data warehouse was just another Oracle database so the same DBAs managed it in the same way they did all their other databases.  This Oracle DW started small, then grew, and today it is slow, not because of any software limitations, but because the fundamental principles that make DW database software work well we not applied, or applied inappropriately. </p>
<p>There are also shops out there that thought that an MPP DW database (say like Teradata) would give them perfect scalability (as the marketing literature says) and they could just add more hardware as their database grew and keep the same performance.  The only problem is that ratio between hardware and performance keeps growing and it gets more and more costly to keep the same performance as the DW grows.  How could this be?  Well, if good partition keys are not chosen, it results in much of the data being shipped between nodes.  I&#8217;ve seen MPP DWs come to a near halt because of this.  Again, if the fundamental principles of data warehousing are not applied, performance will suffer.  Period.  BTW, this also applies to the new data warehouse startups.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic page generated in 0.203 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-02 18:03:16 -->
