{"id":1098,"date":"2015-08-15T13:47:09","date_gmt":"2015-08-15T12:47:09","guid":{"rendered":"http:\/\/dotnetsql.info\/net-sql\/?p=1098"},"modified":"2015-08-13T15:36:37","modified_gmt":"2015-08-13T14:36:37","slug":"oltp-databases-datawarehouses-dimensions","status":"publish","type":"post","link":"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/","title":{"rendered":"Banking OLTP Databases, Datawarehouses &#038; Dimensions"},"content":{"rendered":"<p>In last week&#8217;s article &#8220;<a href=\"https:\/\/www.linkedin.com\/pulse\/what-ods-how-should-you-use-lucian-leonte?trk=prof-post\" target=\"_blank\">What an ODS is and how should you use it<\/a>&#8221; I&#8217;ve\u00a0explained the concept of an <a href=\"https:\/\/www.linkedin.com\/pulse\/what-ods-how-should-you-use-lucian-leonte?trk=prof-post\" target=\"_blank\">Operational Data Store<\/a> and how it fits in the overall data warehouse picture.<\/p>\n<p>Today I&#8217;m going get into the specific characteristics of OLTP Databases versus Data Warehouses and how the dimensional model fits into the overall picture in the interesting\u00a0world of i<a href=\"https:\/\/www.linkedin.com\/pulse\/how-implement-credit-risk-data-warehouse-part-1-lucian-leonte?trk=pulse_spock-articles\" target=\"_blank\">nvestment banking data warehouse and business intelligence reporting<\/a>.<!--more--><\/p>\n<p><strong>OLTP characteristics and\u00a0responsibilities\u00a0<\/strong><\/p>\n<p>By comparison means one major difference between an OLTP system and a data warehouse is the latter&#8217;s ability to accurately describe the past.<\/p>\n<p>OLTP systems are usually not so proficient when it comes to\u00a0correctly represent a business as of a quarter or a year ago especially when we are talking about the complexity and higher degree of change usually present in the investment banking world.<\/p>\n<p>A good OLTP system is always evolving and is this the main characteristic that it should posses\u00a0because that&#8217;s the natural thing to do. The world is changing, and so are the businesses, changing everyday, by developing\u00a0new traded products, credit cards, mortgage types etc., \u00a0\u00a0so your operational system has to be always flexible and scalable enough to meet businesses needs and not the other way around.<\/p>\n<p>Intra-day transactions, costs of all sorts, contracts, credit card invoices\u00a0are added and, thus, the operational data backlog is constantly changing. Descriptions of products, partners, and customers are constantly being updated, usually by overwriting.<\/p>\n<p>The large volume of data in an OLTP system is typically purged every 90 to 180 days or higher amounts of data are even reduced to end-of-day values. For these reasons, it is difficult for an OLTP system to correctly represent the past especially in a high producing data industry as banking.<\/p>\n<p>You <strong>don&#8217;t<\/strong> want\/need to hold in an\u00a0OLTP system, the entire history of trading prices for a stock during a day nor you need to store contract statuses, product descriptions or customer descriptions over a multi year period, as that will only complicate things and add unnecessary overhead to the usual operational flow and last but not least it will be extremely costly from an infrastructure perspective.<\/p>\n<p><strong>Data Warehouse\u00a0characteristics and\u00a0responsibilities\u00a0<\/strong><\/p>\n<p>The data warehouse must accept the responsibility of accurately describing the past. By doing so, the data warehouse simplifies the responsibilities of the OLTP system. Not only does the data warehouse relieve the OLTP system of almost all forms of reporting, but the data warehouse contains special structures that have several ways of tracking historical data.<\/p>\n<p>OLTP systems produce \u201cflash reports\u201d for management, and the people who run OLTP systems are proud of that capability. But beyond these simple daily and weekly summaries and counts, the OLTP environment is a very costly environment in which to do any kind of complex reporting. So that&#8217;s why the economics of reporting will always favor the data warehouse.<\/p>\n<p><strong>Dimensional Data Warehouse database<\/strong><\/p>\n<p>A dimensional data warehouse database consists of a large central fact table with a multi-part key. This fact table is surrounded by a single layer of smaller dimension tables, each containing a single primary key. In a dimensional database, these issues of describing the past mostly involve slowly changing dimensions.<\/p>\n<p>A typical slowly changing dimension is a product dimension in which the detailed description of a given product is occasionally adjusted. For example, a minor change in the description or characteristics a of a product which does not require the creation of new product number (which the data warehouse has been using as the primary key in the product dimension), but nevertheless gives the data warehouse team a revised description of the product.<\/p>\n<p>Another example would be traded products categories that might vary from a bank to another and each would have their approach in categorizing and reporting on each of the categories. Usually categories are changed when the bank\u00a0has a change of perspective and develops different product packaging strategies to increase profitability. They may decide to create completely new categories or to slightly change some of them to reflect the new position.<\/p>\n<p>The data warehouse team faces a dilemma when this happens. If they want the data warehouse to track both the old and new states, what do they use for the key? And where do they put the two values of the changed attribute?<\/p>\n<p><strong>Techniques<\/strong><\/p>\n<p>There are three main techniques for handling slowly changing dimensions in a data warehouse:<\/p>\n<ul>\n<li><strong>Overwriting<\/strong><\/li>\n<li><strong>Creating another dimension record<\/strong><\/li>\n<li><strong>Creating a current value field or a set of effective date fields<\/strong>.<\/li>\n<\/ul>\n<p>Each technique handles the problem differently\u00a0is you the\u00a0designer that has to consider the implications of each and choose among them bearing in mind that the implementation has to be strongly\u00a0dependent on the business\u00a0needs.<\/p>\n<p>Join me next week when I&#8217;ll go into further details on each of the techniques outlined above.<\/p>\n<p><strong><em>Until next time,<\/em><\/strong><\/p>\n<p><strong><em>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0keep learning, keep\u00a0<\/em><\/strong><strong><em>searching\u00a0and keep succeeding\u2026<\/em><\/strong><\/p>\n<p><strong>Connect with me on :<\/strong>\u00a0<a href=\"http:\/\/www.linkedin.com\/in\/leonte\" target=\"_blank\">LinkedIn<\/a><\/p>\n<p><strong>Follow me on Twitter :<\/strong>\u00a0<a href=\"http:\/\/www.twitter.com\/lgleonte\" target=\"_blank\" rel=\"nofollow\">@lgleonte<\/a><\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-twitter\"><a rel=\"nofollow\" data-shared=\"sharing-twitter-1098\" class=\"share-twitter sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to share on Twitter (Opens in new window)<\/span><\/a><\/li><li class=\"share-linkedin\"><a rel=\"nofollow\" data-shared=\"sharing-linkedin-1098\" class=\"share-linkedin sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=linkedin\" target=\"_blank\" title=\"Click to share on LinkedIn\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to share on LinkedIn (Opens in new window)<\/span><\/a><\/li><li class=\"share-facebook\"><a rel=\"nofollow\" data-shared=\"sharing-facebook-1098\" class=\"share-facebook sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=facebook\" target=\"_blank\" title=\"Share on Facebook\"><span><\/span><span class=\"sharing-screen-reader-text\">Share on Facebook (Opens in new window)<\/span><\/a><\/li><li class=\"share-google-plus-1\"><a rel=\"nofollow\" data-shared=\"sharing-google-1098\" class=\"share-google-plus-1 sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=google-plus-1\" target=\"_blank\" title=\"Click to share on Google+\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to share on Google+ (Opens in new window)<\/span><\/a><\/li><li class=\"share-pocket\"><a rel=\"nofollow\" data-shared=\"\" class=\"share-pocket sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=pocket\" target=\"_blank\" title=\"Click to share on Pocket\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to share on Pocket (Opens in new window)<\/span><\/a><\/li><li class=\"share-email\"><a rel=\"nofollow\" data-shared=\"\" class=\"share-email sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=email\" target=\"_blank\" title=\"Click to email this to a friend\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to email this to a friend (Opens in new window)<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-76243027-1098-69e904b460da5' data-src='\/\/widgets.wp.com\/likes\/#blog_id=76243027&amp;post_id=1098&amp;origin=dotnetsql.info&amp;obj_id=76243027-1098-69e904b460da5' data-name='like-post-frame-76243027-1098-69e904b460da5'><h3 class='sd-title'>Like this:<\/h3><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height:55px'><span class='button'><span>Like<\/span><\/span> <span class=\"loading\">Loading...<\/span><\/div><span class='sd-text-color'><\/span><a class='sd-link-color'><\/a><\/div>","protected":false},"excerpt":{"rendered":"<p>In last week&#8217;s article &#8220;What an ODS is and how should you use it&#8221; I&#8217;ve\u00a0explained the concept of an Operational Data Store and how it fits in the overall data warehouse picture. Today I&#8217;m going get into the specific characteristics of OLTP Databases versus Data Warehouses and how the dimensional model fits into the overall &hellip; <a href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Banking OLTP Databases, Datawarehouses &#038; Dimensions<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-twitter\"><a rel=\"nofollow\" data-shared=\"sharing-twitter-1098\" class=\"share-twitter sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to share on Twitter (Opens in new window)<\/span><\/a><\/li><li class=\"share-linkedin\"><a rel=\"nofollow\" data-shared=\"sharing-linkedin-1098\" class=\"share-linkedin sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=linkedin\" target=\"_blank\" title=\"Click to share on LinkedIn\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to share on LinkedIn (Opens in new window)<\/span><\/a><\/li><li class=\"share-facebook\"><a rel=\"nofollow\" data-shared=\"sharing-facebook-1098\" class=\"share-facebook sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=facebook\" target=\"_blank\" title=\"Share on Facebook\"><span><\/span><span class=\"sharing-screen-reader-text\">Share on Facebook (Opens in new window)<\/span><\/a><\/li><li class=\"share-google-plus-1\"><a rel=\"nofollow\" data-shared=\"sharing-google-1098\" class=\"share-google-plus-1 sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=google-plus-1\" target=\"_blank\" title=\"Click to share on Google+\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to share on Google+ (Opens in new window)<\/span><\/a><\/li><li class=\"share-pocket\"><a rel=\"nofollow\" data-shared=\"\" class=\"share-pocket sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=pocket\" target=\"_blank\" title=\"Click to share on Pocket\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to share on Pocket (Opens in new window)<\/span><\/a><\/li><li class=\"share-email\"><a rel=\"nofollow\" data-shared=\"\" class=\"share-email sd-button share-icon no-text\" href=\"http:\/\/dotnetsql.info\/net-sql\/index.php\/oltp-databases-datawarehouses-dimensions\/?share=email\" target=\"_blank\" title=\"Click to email this to a friend\"><span><\/span><span class=\"sharing-screen-reader-text\">Click to email this to a friend (Opens in new window)<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-76243027-1098-69e904b461291' data-src='\/\/widgets.wp.com\/likes\/#blog_id=76243027&amp;post_id=1098&amp;origin=dotnetsql.info&amp;obj_id=76243027-1098-69e904b461291' data-name='like-post-frame-76243027-1098-69e904b461291'><h3 class='sd-title'>Like this:<\/h3><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height:55px'><span class='button'><span>Like<\/span><\/span> <span class=\"loading\">Loading...<\/span><\/div><span class='sd-text-color'><\/span><a class='sd-link-color'><\/a><\/div>","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[290,1],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/posts\/1098"}],"collection":[{"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/comments?post=1098"}],"version-history":[{"count":7,"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/posts\/1098\/revisions"}],"predecessor-version":[{"id":1106,"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/posts\/1098\/revisions\/1106"}],"wp:attachment":[{"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/media?parent=1098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/categories?post=1098"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dotnetsql.info\/net-sql\/index.php\/wp-json\/wp\/v2\/tags?post=1098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}