<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tech4Him - Technology with Integrity &#187; caching</title>
	<atom:link href="http://blog.tech4him.com/tags/caching/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tech4him.com</link>
	<description>A Christian technology chaos wrangler and his thoughts</description>
	<lastBuildDate>Wed, 24 Mar 2010 23:15:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SSWUG vConf &#8211; Loading a Data Warehouse in SSIS</title>
		<link>http://blog.tech4him.com/2009/04/sswug-vconf-loading-a-data-warehouse-in-ssis/</link>
		<comments>http://blog.tech4him.com/2009/04/sswug-vconf-loading-a-data-warehouse-in-ssis/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 20:56:27 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[business intelligence]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[data warehouse]]></category>
		<category><![CDATA[modeling]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[sswug]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=537</guid>
		<description><![CDATA[Presenter: Brian Knight
bknight@pragmaticworks.com
Owner, Pragmatic Works
In this session, you&#8217;ll learn how to load a typical data warehouse in SSIS efficiently. You&#8217;ll start by seeing some of the strengths and weaknesses of the Slowly Changing Dimension (SCD) Wizard in SSIS and how you can get around some of the weaknesses including your own home-brewed solution. You&#8217;ll then [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/brento/2089748072/" target="_blank"><img class="alignleft size-medium wp-image-539" style="border: 0pt none; margin: 10px;" title="2089748072_b60a211f97" src="http://blog.tech4him.com/wp-content/uploads/2089748072_b60a211f97-225x300.jpg" alt="2089748072_b60a211f97" width="225" height="300" /></a>Presenter: Brian Knight<br />
<a href="mailto:bknight@pragmaticworks.com">bknight@pragmaticworks.com<br />
</a>Owner, Pragmatic Works</p>
<p>In this session, you&#8217;ll learn how to load a typical data warehouse in SSIS efficiently. You&#8217;ll start by seeing some of the strengths and weaknesses of the Slowly Changing Dimension (SCD) Wizard in SSIS and how you can get around some of the weaknesses including your own home-brewed solution. You&#8217;ll then see how to load a fact table using SSIS and how to make the common components scale.<span id="more-537"></span></p>
<h3>Dimensional Modeling (<a href="/2009/04/sswug-vconf-dimensional-modeling-101/">See Dimensional Modeling 101 Notes</a>)</h3>
<ul type="disc">
<li>Data      Separated into fact and dimension tables</li>
<li>Dimension      tables answer the pivot or where clause
<ul type="circle">
<li>Make       as wide and descriptive as possible</li>
<li>Surrogate       keys operate as unique ID for each row</li>
<li>Keep       surrogate keys as small as possible</li>
</ul>
</li>
<li>Fact      tables answer the what questions or select statement
<ul type="circle">
<li>Intersect       all dimension tables</li>
<li>Surrogate       keys from each dimension in this table</li>
<li>Measures       are the &#8220;what&#8221; like Price, Quantity, Duration</li>
</ul>
</li>
</ul>
<p> The challenge is how you move the data from the OLTP (Relational) DB into the Data Warehouse.</p>
<p>Discusses SCD (Slowly Changing Data) Dimension types (<a href="/2009/04/sswug-vconf-dimension-table-design-101/">Already here</a>)</p>
<p>Don&#8217;t make everything Type two or your DB will bloat significantly. Also your reports would be more difficult to write.</p>
<p>Probably want to fix NULL values to be something. Use a Derived Column transform. Makes Nulls to be something like 0, Unknown, etc&#8230;</p>
<p>SCD Wizard Strengths</p>
<ul type="disc">
<li>SSIS      transform that creates many other transforms conditionally</li>
<li>Reduces      design time of SCD load by 80%-90% to minutes per dimension</li>
<li>Can be      customized easily</li>
<li>Compares      differences between source and destination to find changes and new records</li>
<li>Outputs:</li>
<li>Type      0,1,2 update</li>
<li>Inferred      members</li>
<li>New      rows</li>
<li>Duplicate      rows</li>
</ul>
<p>Historical Attribute Options &#8211; How do you want to set the expiration of historical records.</p>
<p>Problem with SCD Wizard is that any time you go back and change the configuration, all the output logic below it gets re-written. You lose what you created.</p>
<h3>SCD Wizard Weaknesses</h3>
<ul type="disc">
<li>Scalability      -Generally up to about 50,000 records into the transform but varies based      on number of updates</li>
<li>Maintainability      -After you customize, rerunning the wizard recreates all the transforms</li>
<li>Uses      OLE DB Command transforms for updates is row-level. Creates scalability      issue here if lots of updates.</li>
</ul>
<h3>Making Your Own SCD Wizard</h3>
<ul type="disc">
<li>Can      use a Merge Join or Lookup Transform
<ul type="circle">
<li>If       no match found, it is an insert (Ignore Errors)</li>
</ul>
</li>
<li>Lookup      Transform will scale better than Merge Join but lacks parameterization</li>
<li>Add a      Conditional Split transform after Lookup to direct to insert, duplicate or      update path</li>
</ul>
<h3>Additional Scalability</h3>
<ul type="disc">
<li>Watch      your Lookup Transformation for scalability issues (don&#8217;t cache too much!)
<ul type="circle">
<li>Potentially       cache only the last 1 years worth of data with Partial Caching</li>
<li>Only       cache columns needed</li>
</ul>
</li>
<li>Additional      scalability can be reached by landing updates into a staging table
<ul type="circle">
<li>Then       set-based update with an Execute SQL task.</li>
</ul>
</li>
<li>Checksum      Transform can be used to detect changes across many columns
<ul type="circle">
<li>Or       HASHBYTES T-SQL statement</li>
</ul>
</li>
</ul>
<h3>Inferred Members</h3>
<ul type="disc">
<li>Created      during the fact load
<ul type="circle">
<li>A       new Dim record is created using the value of &#8220;unknown&#8221; or NULL as a       placeholder</li>
<li>The       record is flagged as an inferred member</li>
</ul>
</li>
</ul>
<h3>Slowly Changing Dimension Wizard</h3>
<ul type="disc">
<li>SSIS      transform that creates many other transforms conditionally</li>
<li>Handles:</li>
<li>Type 0      (fixed attribute)</li>
<li>Type 1      (changing attribute)</li>
<li>Type 2      (historical attribute)</li>
<li>Inferred      members</li>
<li>Typically      can address 80% of the business scenarios</li>
</ul>
<h3>SCD Wizard Strengths</h3>
<ul type="disc">
<li>SSIS      transform that creates many other transforms conditionally</li>
<li>Reduces      design time of SCD load by 80%-90% to minutes per dimension</li>
<li>Can be      customized easily</li>
<li>Compares      differences between source and destination to find changes and new records</li>
<li>Outputs:</li>
<li>Type      0,1,2 update</li>
<li>Inferred      members</li>
<li>New      rows</li>
<li>Duplicate      rows</li>
</ul>
<h3>SCD Wizard Weaknesses</h3>
<ul type="disc">
<li>Scalability      -Generally up to about 50,000 records into the transform but varies based      on number of updates</li>
<li>Maintainability      -After you customize, rerunning the wizard recreates all the transforms</li>
<li>Uses      OLE DB Command transforms for updates is row-level. Creates scalability      issue here if lots of updates.</li>
</ul>
<p>Lookup Transform &#8211; Lookup source against target dimension table. Select ALL available lookup fields and alias at TARGET_ so you can match against them. Link by primary key. Ignore the failure of matches.</p>
<p>Then use a conditional split &#8211; If target PK is NULL it is a new record, else Update.</p>
<p>&#8220;Pretty much a pain in the butt to write.&#8221; &#8211; Brian Knight in reference to the else UPDATE piece from the conditional split.</p>
<p>Ugh&#8230;no transcript and this info is not in the slides. ARGH! Can&#8217;t remember it all.</p>
<p>Brian uses the Checksum source vs. Checksum destination to deal with the UPDATE referred to above, but not guaranteed to be unique.</p>
<p>Hashbytes on the other hand is more unique if you wish. But it does not work on numeric fields. Need to cast them.</p>
<h3>Fact Table Loads</h3>
<ul type="disc">
<li>Series      of Lookup Transforms
<ul type="circle">
<li>In       Type 2 Dimensions add WHERE EndDate IS NOT NULL</li>
</ul>
</li>
<li>Measures      created Derived Column Transforms</li>
<li>Aggregate      transform to roll up the grain</li>
<li>Lookup      failure would create an inferred member or set to unknown</li>
</ul>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=537&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2009/04/sswug-vconf-loading-a-data-warehouse-in-ssis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSWUG vConf &#8211; SQL 103 &#8211; DMV&#8217;s and T-SQL for the DBA</title>
		<link>http://blog.tech4him.com/2009/04/sswug-vconf-sql-103-dmvs-and-t-sql-for-the-dba/</link>
		<comments>http://blog.tech4him.com/2009/04/sswug-vconf-sql-103-dmvs-and-t-sql-for-the-dba/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 21:16:20 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[dba]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[sswug]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://blog.tech4him.com/?p=485</guid>
		<description><![CDATA[Presenter: Jeremy Lull
Jeremy@datarealized.com
DMV &#8211; Dynamic Management Views (and functions)

Returns      server state information that can be used to monitor the health of a      server instance, diagnose problems, and tune performance.* MSFT &#8211; 2008 BOL

DMV Categories (Not all are going to be in this session)

Change   [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="external nofollow" href="http://www.flickr.com/photos/52877734@N00/992988536"></a><a href="http://www.flickr.com/photos/52877734@N00/992988536" target="_blank"><img class="alignleft size-medium wp-image-486" style="border: 0pt none; margin: 15px;" title="992988536_7856b384e6" src="http://blog.tech4him.com/wp-content/uploads/992988536_7856b384e6-225x300.jpg" alt="992988536_7856b384e6" width="225" height="300" /></a>Presenter: Jeremy Lull<br />
<a href="mailto:Jeremy@datarealized.com">Jeremy@datarealized.com</a></p>
<p>DMV &#8211; Dynamic Management Views (and functions)</p>
<ul type="disc">
<li>Returns      server state information that can be used to monitor the health of a      server instance, diagnose problems, and tune performance.* MSFT &#8211; 2008 BOL<span id="more-485"></span></li>
</ul>
<p>DMV Categories (Not all are going to be in this session)</p>
<ul type="disc">
<li>Change      Data Capture</li>
<li>Query      Notifications</li>
<li>Common      Language Runtime</li>
<li>Replication</li>
<li>Database      Mirroring</li>
<li>Resource      Governor</li>
<li>Database      Related</li>
<li>Service      Broker</li>
<li>Execution</li>
<li>SQL      Server Extended Events</li>
<li>Full-Text      Search</li>
<li>SQL      Server Operating System</li>
<li>Index</li>
<li>Transaction</li>
<li>I/O</li>
<li>Security</li>
<li>Object</li>
</ul>
<p>DMV&#8217;s help with the ever growing infrastructure and complexities. Allow you to monitor and manage your environment.</p>
<p>Key DMV&#8217;s</p>
<ul type="disc">
<li>Sys.dm_os_sys_info
<ul type="circle">
<li>General       Server Info</li>
</ul>
</li>
<li>Sys.dm_exec_requests
<ul type="circle">
<li>Sp_who(2)</li>
</ul>
</li>
<li>Sys.dm_db_index_operational_stats
<ul type="circle">
<li>Sp_lock</li>
</ul>
</li>
<li>Sys.dm_db_index_usage_stats
<ul type="circle">
<li>Base       DMV for Index Analysis and Recommendations</li>
</ul>
</li>
<li>Msdb.dbo.backupset
<ul type="circle">
<li>Base       table for backup history</li>
</ul>
</li>
<li>Sys.dm_exec_cached_plans
<ul type="circle">
<li>Shows       query plans that are cached by SQL Server</li>
<li>For       query plans, this DMV maps to the syscacheobjects table in SQL Server       2000</li>
</ul>
</li>
<li>Sys.dm_exec_query_stats
<ul type="circle">
<li>Performance       statistics for cached query plans</li>
<li>Top       10</li>
</ul>
</li>
<li>Sys.dm_io_virtual_file_stats
<ul type="circle">
<li>I/O       stats for data and log files</li>
</ul>
</li>
<li>Sys.dm_os_memory_pools
<ul type="circle">
<li>Monitors       Cache memory</li>
</ul>
</li>
<li>Sys.dm_exec_sql_text
<ul type="circle">
<li>Returns       the text of the SQL batch that is identified by the specified sql_handle.</li>
<li>This       table-valued function replaces the system function fn_get_sql</li>
<li>Obtained       from:
<ul type="square">
<li>Sys.dm_exec_query_stats</li>
<li>Sys.dm_exec_requests</li>
<li>Sys.dm_exec_cursors</li>
<li>Sys.dm_exec_xml_handles</li>
<li>Sys.dm_exec_query_memory_grants</li>
<li>Sys.dm_exec_connections</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>&#8220;Use it early, use it often&#8221; &#8211; JeremyÂ  <img src='http://blog.tech4him.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Love it that every technical person presenting a demo has hit at least one minor glitch. Let&#8217;s me know it&#8217;s not just me. Ha!</p>
<p>Resources</p>
<ul type="disc">
<li><a href="http://www.sswug.org/">http://www.sswug.org</a></li>
<li>Local      User Group</li>
<li>Books      On Line
<ul type="circle">
<li>SQL       Server 2008 Performance Studio
<ul type="square">
<li><a href="https://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=en-US&amp;EventID=1032349947&amp;CountryCode=US">https://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=en-US&amp;EventID=1032349947&amp;CountryCode=US</a></li>
<li><a href="http://www.microsoft.com/midsizebusiness/improve-operations.mspx">http://www.microsoft.com/midsizebusiness/business-goals/business-operations/</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=485&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2009/04/sswug-vconf-sql-103-dmvs-and-t-sql-for-the-dba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GMAP_Location module and Block Caching</title>
		<link>http://blog.tech4him.com/2008/11/gmap-location-module-and-block-caching/</link>
		<comments>http://blog.tech4him.com/2008/11/gmap-location-module-and-block-caching/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 00:02:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[block]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[gmap]]></category>
		<category><![CDATA[gmap_location]]></category>
		<category><![CDATA[module]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Was working on another Drupal 6 site yesterday and worked on addressing a few issues that have crept up for the beta testing.]]></description>
			<content:encoded><![CDATA[<p>Was working on another Drupal 6 site yesterday and worked on addressing a few issues that have crept up for the beta testing. One issue was that anonymous users would see the &#8220;Javascript is required&#8230;&#8221; message where the GMAP_Location block was rather than the node location map while logged in users were fine.</p>
<p>Seems that when comparing the HTML output to the client between logged in and logged out, the GMAP script is missing from the logged out HTML.</p>
<p><code>&lt;script src="http://maps.google.com/maps?file=api&amp;v=2.115&amp;key=BeSureToGetYourOwnCodeBecauseIRemovedMineForThisPost=en" type="text/javascript"&gt;</code></p>
<p>On a hunch, I disabled block caching in the Admin &#8211;&gt; Performance settings. Voila! Problem solved. So this appears to be a block caching issue. For now, I&#8217;ve just turned block caching off and will have to wait for time to dig into it more.</p>
<p>Just thought I&#8217;d post it here for posterity sake.</p>
<p>Blessings.</p>
<p>BTW Details are:<br />
<a href="http://drupal.org/project/Drupal+project">Drupal</a>: 6.6<br />
<a href="http://drupal.org/project/gmap">GMAP_Location module</a>: 6.x-1.0-rc2<br />
<a href="http://drupal.org/project/location">Location module</a>: 6.x-3.x-dev</p>
<img src="http://blog.tech4him.com/?ak_action=api_record_view&id=37&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.tech4him.com/2008/11/gmap-location-module-and-block-caching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
