You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by lu...@apache.org on 2015/01/25 16:22:30 UTC

svn commit: r1654663 - in /incubator/kylin/site: blog/2015/ blog/2015/01/ blog/2015/01/26/ blog/2015/01/26/introduce-data-model/ blog/2015/01/26/introduce-data-model/index.html blog/index.html cn/ feed.xml

Author: lukehan
Date: Sun Jan 25 15:22:29 2015
New Revision: 1654663

URL: http://svn.apache.org/r1654663
Log:
add first blog

Added:
    incubator/kylin/site/blog/2015/
    incubator/kylin/site/blog/2015/01/
    incubator/kylin/site/blog/2015/01/26/
    incubator/kylin/site/blog/2015/01/26/introduce-data-model/
    incubator/kylin/site/blog/2015/01/26/introduce-data-model/index.html
Removed:
    incubator/kylin/site/cn/
Modified:
    incubator/kylin/site/blog/index.html
    incubator/kylin/site/feed.xml

Added: incubator/kylin/site/blog/2015/01/26/introduce-data-model/index.html
URL: http://svn.apache.org/viewvc/incubator/kylin/site/blog/2015/01/26/introduce-data-model/index.html?rev=1654663&view=auto
==============================================================================
--- incubator/kylin/site/blog/2015/01/26/introduce-data-model/index.html (added)
+++ incubator/kylin/site/blog/2015/01/26/introduce-data-model/index.html Sun Jan 25 15:22:29 2015
@@ -0,0 +1,181 @@
+<!DOCTYPE html>
+<html>
+
+  <head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+
+  <title>Kylin.IO | Introduce Data Model of Cube Designer</title>
+  <meta name="description" content="BackgroundIn previous version (before v0.6.4), Kylin introduced a GUI tool called Cube Designer for user (we called this role as Cube Modeler) to architect O...">
+  <meta name="author"      content="Kylin.IO">
+  <link rel="shortcut icon" href="fav.png" type="image/png">
+
+
+
+<link rel="stylesheet" href="/assets/css/animate.css">
+<!-- Bootstrap -->
+<link rel="stylesheet" href="/assets/css/bootstrap.min.css">
+
+<!-- Fonts -->
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Alice|Open+Sans:400,300,700">
+
+<!-- Icons -->
+<link rel="stylesheet" href="/assets/css/font-awesome.min.css">
+
+  <!-- Custom styles -->
+  <link rel="stylesheet" href="/assets/css/styles.css">
+
+  <link rel="canonical" href="http://kyli.io/blog/2015/01/26/introduce-data-model/">
+  <link rel="alternate" type="application/rss+xml" title="kylin.io" href="http://kyli.io/feed.xml" />
+
+<!--[if lt IE 9]> <script src="assets/js/html5shiv.js"></script> <![endif]-->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55534813-1', 'auto');
+  ga('send', 'pageview');
+
+
+</script>
+
+</head>
+
+
+  <body>
+
+    <header id="header" >
+  <div id="head" class="parallax" parallax-speed="3" >
+    <div id="logo" class="text-center"> <img class="img-circle" id="circlelogo" src="/assets/images/kylin_logo.jpg"> <span class="title" >Apache Kylin</span> <span class="tagline">Extreme OLAP Engine for Big Data<br>
+      </span> 
+      <!--
+       <div id="download"><a href="https://github.com/KylinOLAP/Kylin/releases">DOWNLOAD</a></div>
+       -->
+       </div>
+  </div>
+
+  <!-- Main Menu -->
+  <nav class="navbar navbar-default" role="navigation" id="nav-wrapper">
+  <div class="container-fluid" id="nav">
+    <!-- Brand and toggle get grouped for better mobile display -->
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+        <span class="sr-only">Toggle navigation</span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+     
+    </div>
+
+    <!-- Collect the nav links, forms, and other content for toggling -->
+    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+      <ul class="nav navbar-nav">
+     <li><a href="/"><b>Home</b></a></li>
+          <li><a href="/docs" >Docs</a></li>
+          <li><a href="/community" >Community</a></li>
+          <li><a href="/blog">Blog</li>
+          <li><a href="/about" >About</a></li>
+          <li><a href="/cn" >中文版</a></li>
+      </ul>
+      
+
+    </div><!-- /.navbar-collapse -->
+  </div><!-- /.container-fluid -->
+</nav>
+ </header>
+
+
+    <div class="page-content">
+      <div class="wrapper">
+        <div class="post" style=" padding:2em 4em 4em 4em">
+
+  <header class="post-header">
+    <h1 class="post-title">Introduce Data Model of Cube Designer</h1>
+    <p class="post-meta" >Jan 26, 2015 • Luke Han</p>
+  </header>
+
+  <article class="post-content" >
+    <h3 id="background">Background</h3>
+<p>In previous version (before v0.6.4), Kylin introduced a GUI tool called Cube Designer for user (we called this role as <strong>Cube Modeler</strong>) to architect OLAP Cube with dimensions, measures and other settings. It works well for most of the features but still not user friendly yet: </p>
+
+<ol>
+  <li>A user has to add dimension one by one, considering there are 20+ even 50+ dimensions, the entire process is really boring. </li>
+  <li>Each dimension requires define join condition between fact table and lookup table which even already be defined in previous dimensions many times.</li>
+  <li>Less validation check, especially for Hierarchy and Derived dimension, there are many exceptions in further steps which blocked many people to save the cube definition without any idea about the issue.</li>
+  <li>Save/Next buttons are confusing user to click which one for real next step or just save current dimension settings</li>
+</ol>
+
+<h3 id="data-model-of-cube-designer">Data Model of Cube Designer</h3>
+<p>With the feedback from our internal users and external community, we have came up one idea and would like to introduce a new concept (widely known in Data Warehouse and Business Intelligence domain): Data Model: a data model organises data elements and standardises how the data elements relate to one another.<a href="http://en.wikipedia.org/wiki/Data_model">Wikipedia</a>. In Kylin, it using <a href="http://en.wikipedia.org/wiki/Star_schema">Star Schema</a> as Data Model, which is the simplest style of data warehouse schema. The star schema consists of a few “fact tables” (possibly only one, justifying the name) referencing any number of “dimension tables”. It actually already there behind dimensions and measures and now just come to first step to define the relationship between different tables before create each dimension. 
+Now (after v0.6.4), to create a cube will follow below steps:</p>
+
+<ol>
+  <li>Define data model first: pick up one fact table and then add other lookup tables (with their join conditions). The data mode must be presents as Star Schema.</li>
+  <li>Then add dimensions, since all join conditions already presented in data model, each dimension could be more easy to create, just need to know what’s kind of type: normal, hierarchy and derived (will have another blog to introduce them). There’s also one helper called <em>Auto Generator</em> to help generate many dimensions within simple clicks.</li>
+  <li>Then define measures and others as previous cube designer did</li>
+</ol>
+
+<h3 id="benefits">Benefits</h3>
+<ol>
+  <li>A data model is very easy to communicate between different roles and teams. Most of cases it just mapping to real database table relationship, like from Hive tables</li>
+  <li>More easy to create dimensions and measures based on the data model</li>
+  <li>Friendly error message with enhanced validation check when save cube</li>
+</ol>
+
+<h3 id="whats-next">What’s Next</h3>
+<p>After this refactor, Kylin is now be able to introduce more powerful features, the major idea is to using different storages to serve same data model:</p>
+
+<ul>
+  <li><strong>Logical Model</strong>: A Data Model presents logical data structure like Star Schema beyond data tables with more business meaning</li>
+  <li><strong>Physical Model</strong>: define how the underlying data to be stored in persistent system, like HBase. There are already two of them: MOLAP (current Kylin version) and InvertedIndex (coming with 0.7.x release). And it also easy to extend to support others without change the Logical Model.</li>
+  <li>A new GUI of Cube Designer to support above is on the way.</li>
+</ul>
+
+
+  </article>
+
+</div>
+
+
+
+
+
+      </div>
+    </div>
+
+    <footer id="underfooter">
+  <div class="container">
+    <div class="row">
+      <div class="col-md-12 widget" >
+        <div class="widget-body" style="text-align:center">
+          <ul class="icons">
+            <li><a href="https://www.linkedin.com/groups/KylinOLAP-6785709?home=&gid=6785709&trk=anet_ug_hm" target="_blank" class="fa fa-linkedin fa-lg"></a></li>
+            <li><a href="https://twitter.com/debashis_saha/status/519612003443146752" target="_blank" class="fa fa-twitter fa-lg"></a></li>
+            <li><a href="https://www.facebook.com/kylinio?skip_nax_wizard=true&ref_type=logout_gear" target="_blank" class="fa fa-facebook fa-lg"></a></li>
+            <li><a href="https://plus.google.com/communities/101138166999680123468" target="_blank" class="fa fa-google-plus fa-lg"></a></li>
+            <li><a href="https://github.com/KylinOLAP/Kylin" target="_blank" class="fa fa-github-alt fa-lg"></a></li>
+            <!--  <li><a href="#" class="fa fa-weibo fa-lg"></a></li>
+         <li><a href="#" class="fa fa-weixin fa-lg"></a></li>-->
+          </ul>
+          <p style="text-align:center" > Copyright ©2014 <a href="http://kylin.io">Kylin.io</a> All Rights Reserved. | From <a href="http://www.ebayinc.com/">eBay Inc.</a> |<a href="#">back to top</a><br>
+          </p>
+        </div>
+      </div>
+    </div>
+    <!-- /row of widgets --> 
+
+  </div>
+  <div></div>
+  
+</footer>
+
+  <script src="/assets/js/jquery-1.9.1.min.js"></script> 
+  <script src="/assets/js/bootstrap.min.js"></script> 
+  <script src="/assets/js/main.js"></script>
+  </body>
+
+</html>

Modified: incubator/kylin/site/blog/index.html
URL: http://svn.apache.org/viewvc/incubator/kylin/site/blog/index.html?rev=1654663&r1=1654662&r2=1654663&view=diff
==============================================================================
--- incubator/kylin/site/blog/index.html (original)
+++ incubator/kylin/site/blog/index.html Sun Jan 25 15:22:29 2015
@@ -97,14 +97,27 @@
       <div class="container" >
         <h4 class="section-title"><span> Kylin Technical Blog </span></h4>
          <!-- second-->
-  <div class="row">
-          <div class="col-sm-12 col-md-12">
+          <div id="content-container" class="animated fadeIn">
             <div >
+            <!--
             <p class="aboutkylin" style="font-size:1.2em">Comming Soon...</p>
-           
+            -->
+             <ul class="post-list">
+            
+            <li>
+            <!--
+            <span align="left" class="content-header">Jan 26, 2015</span>
+            -->
+        <h2 align="left">
+          <a class="post-link" href="/blog/2015/01/26/introduce-data-model/">Introduce Data Model of Cube Designer</a>
+        </h2>
+      </li>
+    
+  </ul>
+
+  <p class="rss-subscribe">subscribe <a href="/feed.xml">via RSS</a></p>
           </div>
         </div>
-         </div>
       </div>
       <!-- /container --> 
       

Modified: incubator/kylin/site/feed.xml
URL: http://svn.apache.org/viewvc/incubator/kylin/site/feed.xml?rev=1654663&r1=1654662&r2=1654663&view=diff
==============================================================================
--- incubator/kylin/site/feed.xml (original)
+++ incubator/kylin/site/feed.xml Sun Jan 25 15:22:29 2015
@@ -5,35 +5,55 @@
     <description>Apache Kylin Home</description>
     <link>http://kyli.io/</link>
     <atom:link href="http://kyli.io/feed.xml" rel="self" type="application/rss+xml"/>
-    <pubDate>Fri, 23 Jan 2015 17:15:25 +0800</pubDate>
-    <lastBuildDate>Fri, 23 Jan 2015 17:15:25 +0800</lastBuildDate>
+    <pubDate>Sun, 25 Jan 2015 23:08:46 +0800</pubDate>
+    <lastBuildDate>Sun, 25 Jan 2015 23:08:46 +0800</lastBuildDate>
     <generator>Jekyll v2.5.3</generator>
     
       <item>
-        <title>Welcome to Jekyll!</title>
-        <description>&lt;p&gt;You’ll find this post in your &lt;code&gt;_posts&lt;/code&gt; directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run &lt;code&gt;jekyll serve&lt;/code&gt;, which launches a web server and auto-regenerates your site when a file is updated.&lt;/p&gt;
+        <title>Introduce Data Model of Cube Designer</title>
+        <description>&lt;h3 id=&quot;background&quot;&gt;Background&lt;/h3&gt;
+&lt;p&gt;In previous version (before v0.6.4), Kylin introduced a GUI tool called Cube Designer for user (we called this role as &lt;strong&gt;Cube Modeler&lt;/strong&gt;) to architect OLAP Cube with dimensions, measures and other settings. It works well for most of the features but still not user friendly yet: &lt;/p&gt;
 
-&lt;p&gt;To add new posts, simply add a file in the &lt;code&gt;_posts&lt;/code&gt; directory that follows the convention &lt;code&gt;YYYY-MM-DD-name-of-post.ext&lt;/code&gt; and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.&lt;/p&gt;
+&lt;ol&gt;
+  &lt;li&gt;A user has to add dimension one by one, considering there are 20+ even 50+ dimensions, the entire process is really boring. &lt;/li&gt;
+  &lt;li&gt;Each dimension requires define join condition between fact table and lookup table which even already be defined in previous dimensions many times.&lt;/li&gt;
+  &lt;li&gt;Less validation check, especially for Hierarchy and Derived dimension, there are many exceptions in further steps which blocked many people to save the cube definition without any idea about the issue.&lt;/li&gt;
+  &lt;li&gt;Save/Next buttons are confusing user to click which one for real next step or just save current dimension settings&lt;/li&gt;
+&lt;/ol&gt;
 
-&lt;p&gt;Jekyll also offers powerful support for code snippets:&lt;/p&gt;
+&lt;h3 id=&quot;data-model-of-cube-designer&quot;&gt;Data Model of Cube Designer&lt;/h3&gt;
+&lt;p&gt;With the feedback from our internal users and external community, we have came up one idea and would like to introduce a new concept (widely known in Data Warehouse and Business Intelligence domain): Data Model: a data model organises data elements and standardises how the data elements relate to one another.&lt;a href=&quot;http://en.wikipedia.org/wiki/Data_model&quot;&gt;Wikipedia&lt;/a&gt;. In Kylin, it using &lt;a href=&quot;http://en.wikipedia.org/wiki/Star_schema&quot;&gt;Star Schema&lt;/a&gt; as Data Model, which is the simplest style of data warehouse schema. The star schema consists of a few “fact tables” (possibly only one, justifying the name) referencing any number of “dimension tables”. It actually already there behind dimensions and measures and now just come to first step to define the relationship between different tables before create each dimension. 
+Now (after v0.6.4), to create a cube will follow below steps:&lt;/p&gt;
 
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;print_hi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
-  &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;Hi, &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;
-&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
-&lt;span class=&quot;n&quot;&gt;print_hi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;Tom&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
-&lt;span class=&quot;c1&quot;&gt;#=&amp;gt; prints &amp;#39;Hi, Tom&amp;#39; to STDOUT.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;ol&gt;
+  &lt;li&gt;Define data model first: pick up one fact table and then add other lookup tables (with their join conditions). The data mode must be presents as Star Schema.&lt;/li&gt;
+  &lt;li&gt;Then add dimensions, since all join conditions already presented in data model, each dimension could be more easy to create, just need to know what’s kind of type: normal, hierarchy and derived (will have another blog to introduce them). There’s also one helper called &lt;em&gt;Auto Generator&lt;/em&gt; to help generate many dimensions within simple clicks.&lt;/li&gt;
+  &lt;li&gt;Then define measures and others as previous cube designer did&lt;/li&gt;
+&lt;/ol&gt;
 
-&lt;p&gt;Check out the &lt;a href=&quot;http://jekyllrb.com&quot;&gt;Jekyll docs&lt;/a&gt; for more info on how to get the most out of Jekyll. File all bugs/feature requests at &lt;a href=&quot;https://github.com/jekyll/jekyll&quot;&gt;Jekyll’s GitHub repo&lt;/a&gt;. If you have questions, you can ask them on &lt;a href=&quot;https://github.com/jekyll/jekyll-help&quot;&gt;Jekyll’s dedicated Help repository&lt;/a&gt;.&lt;/p&gt;
+&lt;h3 id=&quot;benefits&quot;&gt;Benefits&lt;/h3&gt;
+&lt;ol&gt;
+  &lt;li&gt;A data model is very easy to communicate between different roles and teams. Most of cases it just mapping to real database table relationship, like from Hive tables&lt;/li&gt;
+  &lt;li&gt;More easy to create dimensions and measures based on the data model&lt;/li&gt;
+  &lt;li&gt;Friendly error message with enhanced validation check when save cube&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;h3 id=&quot;whats-next&quot;&gt;What’s Next&lt;/h3&gt;
+&lt;p&gt;After this refactor, Kylin is now be able to introduce more powerful features, the major idea is to using different storages to serve same data model:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;&lt;strong&gt;Logical Model&lt;/strong&gt;: A Data Model presents logical data structure like Star Schema beyond data tables with more business meaning&lt;/li&gt;
+  &lt;li&gt;&lt;strong&gt;Physical Model&lt;/strong&gt;: define how the underlying data to be stored in persistent system, like HBase. There are already two of them: MOLAP (current Kylin version) and InvertedIndex (coming with 0.7.x release). And it also easy to extend to support others without change the Logical Model.&lt;/li&gt;
+  &lt;li&gt;A new GUI of Cube Designer to support above is on the way.&lt;/li&gt;
+&lt;/ul&gt;
 
 </description>
-        <pubDate>Wed, 21 Jan 2015 05:52:58 +0800</pubDate>
-        <link>http://kyli.io/jekyll/update/2015/01/21/welcome-to-jekyll/</link>
-        <guid isPermaLink="true">http://kyli.io/jekyll/update/2015/01/21/welcome-to-jekyll/</guid>
-        
+        <pubDate>Mon, 26 Jan 2015 06:28:00 +0800</pubDate>
+        <link>http://kyli.io/blog/2015/01/26/introduce-data-model/</link>
+        <guid isPermaLink="true">http://kyli.io/blog/2015/01/26/introduce-data-model/</guid>
         
-        <category>jekyll</category>
         
-        <category>update</category>
+        <category>blog</category>
         
       </item>