<?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>Hideto</title>
	<atom:link href="http://rubylog.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://rubylog.com</link>
	<description>非典型性专题研究</description>
	<lastBuildDate>Thu, 26 Nov 2009 08:28:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>数据仓库实践 &#8212; 《Dimensional Data Warehousing with MySQL》</title>
		<link>http://rubylog.com/dimensional-data-warehousing-with-mysql/</link>
		<comments>http://rubylog.com/dimensional-data-warehousing-with-mysql/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 08:27:02 +0000</pubDate>
		<dc:creator>Hideto</dc:creator>
				<category><![CDATA[Data Warehouse]]></category>

		<guid isPermaLink="false">http://rubylog.com/?p=86</guid>
		<description><![CDATA[数据仓库基础
基本组件
star schema：维度数据仓库的数据库结构
surrogate key：数据仓库表里作为主键的列
除了star schema，也有在数据仓库中用snowflake schema的，不过后者更难建模、不容易理解和实现、性能较前者差
维度数据仓库包括两种类型的关系数据库表：fact表和dimension表
一个fact表+周围多个dimension表就是一个star结构，multi-start结构则有多个fact表，其中多个fact表共享一些共用的dimension表
fact表一般后缀为fact，而dimension表后缀为dim
fact表包含多个可度量的事实，可度量的事实成为measure，dimension表对measure进行分类
每个dimension表包含一个surrogate key列，列名后缀为sk，dimension里每个sk列在fact表都有一个类似的列

dimension表里的sk列是主键，一般sk的值为顺序的数字且不含业务含义
Dimension历史
dimension会随着时间而改变，比如用户会更改地址、产品改名或重新分类、销售订单修正等等
我们必须维护dimension的历史，这样才能保证就的销售订单指向旧的产品分类，而新的销售订单指向新的产品分类
Slowly Changing Dimension(SCD)是维度数据仓库里实现dimension历史的技术
SCD包含三种类型：

SCD1：总是用新的数据覆盖老的数据，不保存历史
SCD2：总是创建新版本的dimension，不修改和删除老的数据
SCD3：保存有限的dimension历史，如对customer_address列维护一个previous_customer_address列

Measure Additivity
Measure的一个重要特质是Measure Additivity
如果一个measure在所有情况下都可以sum，那么称这个measure是fully-addative
如果一个measure只能在某些情况下做sum，那么称这个measure是semi-addative
也就是说，如果一个measure在任意一个dimension上计算的总和与任意其他一个dimension上计算的总、其他dimension任意组合上计算的总和都相等，那么这个measure就是fully additive的
维度查询
维度查询包括三个常见类型：

aggregation：对fact进行求和
specific：对特定的dimension值进行fact查询和求和
inside out：基于fact的measure值条件进行查询

ETL
源数据提取
有两种源数据提取方式：

Whole Source：提取整个源数据，这种模式对参考性质的数据源比较合适，如邮政编码
Change Data Capture(CDC)：只提取增量改动的数据，如果数据源特别大而且提取整个数据效率低时适用，通常作为动态数据源的提取方式

提取数据时可以采用Pull后Push两种方式
组装Date Dimension
在数据仓库里时间维度是最重要的，因为数据仓库的首要功能就是存储历史数据，所以数据仓库里始终有时间维度
三种常见的组装date dimension的技术：

提前组装：比如提前准备好十年内所有的date dimension
每天一个date：每天准备一条新的date记录
从源数据加载date：从源数据加载仅仅被使用的date

初始化组装
在开始数据仓库操作之前的第一步就是加载历史数据
最好有一个Source Data到Data Warehouse的映射文档来列出需要哪些数据源、数据格式已经对应的fact/dimension表，然后写初始化脚本来加载数据
定期组装
和初始化组装一样，最好有一个文档来列出源数据、数据仓库表、提取模式(Whole/CDC、Push/Pull)、加载类型(SCD、Pre-populate)等等，然后写加载数据的脚本
定期组装调度
Windows控制面板里添加任务向导或者Linux下crontab程序都可以添加定时调度任务
演进
添加列
数据仓库常见的需求是添加列到已有的dimension和fact表

更改dimension和fact表之后需要修改定期组装脚本
按需组装
有时候在定期组装之外需要一些按需组装，比如促销销售的源数据只有在促销阶段才有
这时通常需要dimension、fact表的更改和一些按需组装的脚本
Dimension子集
由于有些用户不会使用所有的dimension数据，比如用户只关心month，不关心date，所以我们可以提供一个month_dim(date_dim的子集)
Dimension角色扮演
有时候一个fact需要使用同一个dimension多次，比如销售订单fact需要两个date，一个是下订单时间一个是发送订单时间，这时可以用dimension角色扮演技术来实现。
有两种dimension角色扮演的类型：表别名和数据库视图
表别名就是指在查询时对同一个表取多个不同的别名来区分，以满足查询多次同一个dimension的目的
数据库视图就是对已有的dimension根据使用次数建多个视图来满足多次使用同一dimension的目的
快照
有些用户可能只需要特定时间的数据，换句话说，他们只需要数据的快照
有两种类型的数据快照：周期性快照和累积性快照
周期性快照是fact在一定周期内的sum总和，如monthly fact表在每个月结束时会有一个快照
累积性快照跟踪fact的更改，如销售订单的持续累积数据
Dimension Hierarchy
大部分dimension有一个或多个层次结构，如date dimension有一个分4级的层次结构：year级别、quarter级别、month级别和date级别，而且只有year-quarter-month-date这一条单一路径
同一主题下的列可以归为一组，而且组的成员至少包含另一个成员，如果month包含date，这时就会形成一个层次结构，比如year-quarter-month-date是date dimension的一个Hierarchy
在Hierarchy上可以做grouping和drilling
grouping查询会对fact按dimension做group by，但是只显示到最低级别的数据，而drilling则是显示dimension各种级别的数据
多路径Hierarchy和不平整Hierarchy
有时候一个Hierarchy会有多条路径，比如year-quarter-month或year-campaign-month，所以查询时可以按不同的路径进行drilling
Hierarchy中如果不包含一个或多个级别的数据，那么称之为不平整(Ragged) Hierarchy，例如某几个month没有campaign session，那么month dimension被称为ragged campaign hierarchy
如果某几个month不存在campaign，则用month代替，最终drilling查询结果会将不存在campaign的行用month代替(导致多行相同的month)，而有campaign的行的metric值是对应month的metric值的总和
Dimension退化
当用户不需要某部分dimension数据时，可以将dimension退化，移除哪些不用的数据，从而增加查询性能
比如退化order_dim表的步骤：

将order_number列加到sales_order_fact表
将已有的order_number从order_dim移到sales_order_fact表
从sales_order_fact表中移除order_sk列
移除order_dim表

Junk Dimension
有些dimension字段的值的种类特别少，比如只有yes和no两种值的一些字段，它们应该放在称为junk dimension的dimension表里

Multi-Star Schema
如果数据仓库里有多个fact表，则应称之为Multi-Star Schema
高级技术
非直接的数据源
如果数据源由于粒度不同不能直接加载到数据仓库，则需要ETL时做一些转换
无事实的fact表
有时候需要度量一些源数据里没有的数据，比如产品计数，我们可以建立一个无事实的fact表来实现

延迟fact
有时候fact表的数据有延迟，导致快照fact表的数据不对，这时需要改进定期fact组装脚本来处理这种延迟数据
合并Dimension
随着数据仓库有些dimension表有重复的数据，我们可以将它们合并到一个单独的dimension
累积度量
有时候需要跟踪一些累积的度量，比如month-end balance，这时就需要增加额外的measure，并且在加载数据时注意加上之前的值
范围Dimension
一些连续的值的范围构成范围(band) dimension，比如销售订单的数量0.01-15000为&#8221;LOW&#8221;，15000.01-30000.00为&#8221;MED&#8221;，30000.01-99999999.99为&#8221;HIGH&#8221;
这时可以为这个dimension单独见一个band dimension表，然后fact表添加sk即可

]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;"><strong>数据仓库基础</strong></span></p>
<p><strong>基本组件</strong><br />
star schema：维度数据仓库的数据库结构<br />
surrogate key：数据仓库表里作为主键的列<br />
除了star schema，也有在数据仓库中用snowflake schema的，不过后者更难建模、不容易理解和实现、性能较前者差<br />
维度数据仓库包括两种类型的关系数据库表：fact表和dimension表<br />
一个fact表+周围多个dimension表就是一个star结构，multi-start结构则有多个fact表，其中多个fact表共享一些共用的dimension表<br />
fact表一般后缀为fact，而dimension表后缀为dim<br />
fact表包含多个可度量的事实，可度量的事实成为measure，dimension表对measure进行分类<br />
每个dimension表包含一个surrogate key列，列名后缀为sk，dimension里每个sk列在fact表都有一个类似的列<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/110.PNG"><img class="alignnone size-full wp-image-87" title="1" src="http://rubylog.com/wp-content/uploads/2009/11/110.PNG" alt="1" width="701" height="498" /></a><br />
dimension表里的sk列是主键，一般sk的值为顺序的数字且不含业务含义</p>
<p><strong>Dimension历史</strong><br />
dimension会随着时间而改变，比如用户会更改地址、产品改名或重新分类、销售订单修正等等<br />
我们必须维护dimension的历史，这样才能保证就的销售订单指向旧的产品分类，而新的销售订单指向新的产品分类<br />
Slowly Changing Dimension(SCD)是维度数据仓库里实现dimension历史的技术<br />
SCD包含三种类型：</p>
<ol>
<li>SCD1：总是用新的数据覆盖老的数据，不保存历史</li>
<li>SCD2：总是创建新版本的dimension，不修改和删除老的数据</li>
<li>SCD3：保存有限的dimension历史，如对customer_address列维护一个previous_customer_address列</li>
</ol>
<p><strong>Measure Additivity</strong><br />
Measure的一个重要特质是Measure Additivity<br />
如果一个measure在所有情况下都可以sum，那么称这个measure是fully-addative<br />
如果一个measure只能在某些情况下做sum，那么称这个measure是semi-addative<br />
也就是说，如果一个measure在任意一个dimension上计算的总和与任意其他一个dimension上计算的总、其他dimension任意组合上计算的总和都相等，那么这个measure就是fully additive的</p>
<p><strong>维度查询</strong><br />
维度查询包括三个常见类型：</p>
<ol>
<li>aggregation：对fact进行求和</li>
<li>specific：对特定的dimension值进行fact查询和求和</li>
<li>inside out：基于fact的measure值条件进行查询</li>
</ol>
<p><span style="color: #0000ff;"><strong>ETL</strong></span></p>
<p><strong>源数据提取</strong><br />
有两种源数据提取方式：</p>
<ol>
<li>Whole Source：提取整个源数据，这种模式对参考性质的数据源比较合适，如邮政编码</li>
<li>Change Data Capture(CDC)：只提取增量改动的数据，如果数据源特别大而且提取整个数据效率低时适用，通常作为动态数据源的提取方式</li>
</ol>
<p>提取数据时可以采用Pull后Push两种方式</p>
<p><strong>组装Date Dimension</strong><br />
在数据仓库里时间维度是最重要的，因为数据仓库的首要功能就是存储历史数据，所以数据仓库里始终有时间维度<br />
三种常见的组装date dimension的技术：</p>
<ol>
<li>提前组装：比如提前准备好十年内所有的date dimension</li>
<li>每天一个date：每天准备一条新的date记录</li>
<li>从源数据加载date：从源数据加载仅仅被使用的date</li>
</ol>
<p><strong>初始化组装</strong><br />
在开始数据仓库操作之前的第一步就是加载历史数据<br />
最好有一个Source Data到Data Warehouse的映射文档来列出需要哪些数据源、数据格式已经对应的fact/dimension表，然后写初始化脚本来加载数据</p>
<p><strong>定期组装</strong><br />
和初始化组装一样，最好有一个文档来列出源数据、数据仓库表、提取模式(Whole/CDC、Push/Pull)、加载类型(SCD、Pre-populate)等等，然后写加载数据的脚本</p>
<p><strong>定期组装调度</strong><br />
Windows控制面板里添加任务向导或者Linux下crontab程序都可以添加定时调度任务</p>
<p><span style="color: #0000ff;"><strong>演进</strong></span></p>
<p><strong>添加列</strong><br />
数据仓库常见的需求是添加列到已有的dimension和fact表<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/22.PNG"><img class="alignnone size-full wp-image-89" title="2" src="http://rubylog.com/wp-content/uploads/2009/11/22.PNG" alt="2" width="701" height="498" /></a><br />
更改dimension和fact表之后需要修改定期组装脚本</p>
<p><strong>按需组装</strong><br />
有时候在定期组装之外需要一些按需组装，比如促销销售的源数据只有在促销阶段才有<br />
这时通常需要dimension、fact表的更改和一些按需组装的脚本</p>
<p><strong>Dimension子集</strong><br />
由于有些用户不会使用所有的dimension数据，比如用户只关心month，不关心date，所以我们可以提供一个month_dim(date_dim的子集)</p>
<p><strong>Dimension角色扮演</strong><br />
有时候一个fact需要使用同一个dimension多次，比如销售订单fact需要两个date，一个是下订单时间一个是发送订单时间，这时可以用dimension角色扮演技术来实现。<br />
有两种dimension角色扮演的类型：表别名和数据库视图<br />
表别名就是指在查询时对同一个表取多个不同的别名来区分，以满足查询多次同一个dimension的目的<br />
数据库视图就是对已有的dimension根据使用次数建多个视图来满足多次使用同一dimension的目的</p>
<p><strong>快照</strong><br />
有些用户可能只需要特定时间的数据，换句话说，他们只需要数据的快照<br />
有两种类型的数据快照：周期性快照和累积性快照<br />
周期性快照是fact在一定周期内的sum总和，如monthly fact表在每个月结束时会有一个快照<br />
累积性快照跟踪fact的更改，如销售订单的持续累积数据</p>
<p><strong>Dimension Hierarchy</strong><br />
大部分dimension有一个或多个层次结构，如date dimension有一个分4级的层次结构：year级别、quarter级别、month级别和date级别，而且只有year-quarter-month-date这一条单一路径<br />
同一主题下的列可以归为一组，而且组的成员至少包含另一个成员，如果month包含date，这时就会形成一个层次结构，比如year-quarter-month-date是date dimension的一个Hierarchy<br />
在Hierarchy上可以做grouping和drilling<br />
grouping查询会对fact按dimension做group by，但是只显示到最低级别的数据，而drilling则是显示dimension各种级别的数据</p>
<p><strong>多路径Hierarchy和不平整Hierarchy</strong><br />
有时候一个Hierarchy会有多条路径，比如year-quarter-month或year-campaign-month，所以查询时可以按不同的路径进行drilling<br />
Hierarchy中如果不包含一个或多个级别的数据，那么称之为不平整(Ragged) Hierarchy，例如某几个month没有campaign session，那么month dimension被称为ragged campaign hierarchy<br />
如果某几个month不存在campaign，则用month代替，最终drilling查询结果会将不存在campaign的行用month代替(导致多行相同的month)，而有campaign的行的metric值是对应month的metric值的总和</p>
<p><strong>Dimension退化</strong><br />
当用户不需要某部分dimension数据时，可以将dimension退化，移除哪些不用的数据，从而增加查询性能<br />
比如退化order_dim表的步骤：</p>
<ol>
<li>将order_number列加到sales_order_fact表</li>
<li>将已有的order_number从order_dim移到sales_order_fact表</li>
<li>从sales_order_fact表中移除order_sk列</li>
<li>移除order_dim表</li>
</ol>
<p><strong>Junk Dimension</strong><br />
有些dimension字段的值的种类特别少，比如只有yes和no两种值的一些字段，它们应该放在称为junk dimension的dimension表里<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/32.PNG"><img class="alignnone size-full wp-image-90" title="3" src="http://rubylog.com/wp-content/uploads/2009/11/32.PNG" alt="3" width="700" height="550" /></a></p>
<p><strong>Multi-Star Schema</strong><br />
如果数据仓库里有多个fact表，则应称之为Multi-Star Schema</p>
<p><span style="color: #0000ff;"><strong>高级技术</strong></span></p>
<p><strong>非直接的数据源</strong><br />
如果数据源由于粒度不同不能直接加载到数据仓库，则需要ETL时做一些转换</p>
<p><strong>无事实的fact表</strong><br />
有时候需要度量一些源数据里没有的数据，比如产品计数，我们可以建立一个无事实的fact表来实现<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/42.PNG"><img class="alignnone size-full wp-image-91" title="4" src="http://rubylog.com/wp-content/uploads/2009/11/42.PNG" alt="4" width="699" height="217" /></a></p>
<p><strong>延迟fact</strong><br />
有时候fact表的数据有延迟，导致快照fact表的数据不对，这时需要改进定期fact组装脚本来处理这种延迟数据</p>
<p><strong>合并Dimension</strong><br />
随着数据仓库有些dimension表有重复的数据，我们可以将它们合并到一个单独的dimension</p>
<p><strong>累积度量</strong><br />
有时候需要跟踪一些累积的度量，比如month-end balance，这时就需要增加额外的measure，并且在加载数据时注意加上之前的值</p>
<p><strong>范围Dimension</strong><br />
一些连续的值的范围构成范围(band) dimension，比如销售订单的数量0.01-15000为&#8221;LOW&#8221;，15000.01-30000.00为&#8221;MED&#8221;，30000.01-99999999.99为&#8221;HIGH&#8221;<br />
这时可以为这个dimension单独见一个band dimension表，然后fact表添加sk即可<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/52.PNG"><img class="alignnone size-full wp-image-88" title="5" src="http://rubylog.com/wp-content/uploads/2009/11/52.PNG" alt="5" width="700" height="522" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rubylog.com/dimensional-data-warehousing-with-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MicroStrategy Desktop介绍</title>
		<link>http://rubylog.com/microstrategy-desktop-introduction/</link>
		<comments>http://rubylog.com/microstrategy-desktop-introduction/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 07:57:23 +0000</pubDate>
		<dc:creator>Hideto</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[MicroStrategy]]></category>
		<category><![CDATA[Desktop]]></category>

		<guid isPermaLink="false">http://rubylog.com/?p=83</guid>
		<description><![CDATA[MicroStrategy Desktop是设计为满足当今复杂的BI需求的下一代商业智能工具。它包含集成的查询和报表，强大的协作分析和研究型工作流。它允许你使用单一界面来设计、创建和维护整个BI系统。
MicroStrategy Desktop简介
MicroStrategy Desktop是一套完整的BI控制台。它允许用户使用单一界面设计、创建和维护一整套商业BI系统，给用户提供高级即时查询和自定义报表的能力。
MicroStrategy Desktop提供了不同层级用户的集成方案。卓越的格式化、总计和打印功能使得创建富有吸引力的报表十分简单。你还可以创建专为格式化、展示和分发的报表，或者给会议室特色的文档添加文本、图片、表格或超链接。
MicroStrategy Desktop是市面上唯一满足大型数据库完整需求而不用很多复杂代码的BI界面。它使用了大量高级的数学、统计和金融计算和复杂分析。它包括超多200个预定义的数学公式，你可以自定义这些公式或者创建你自己的公式。

MicroStrategy Desktop组件
MicroStrategy Desktop包括如下组件：

MicroStrategy Desktop：在个人电脑桌面上提供了集成的查询和报表、强大的分析能力和决策支持工作流。它支持大量的联机数据分析需求。创建报表十分容易，可以使用多种展现方式来查看报表，使报表美观并达到生产报表的要求，分发报表给其他用户，使用drilling、pivoting、data slicing等大量即时操作来扩展报表。而且，你还可以为不同技能和安全级别的用户自定义界面。
MicroStrategy Architect：它是BI系统的快速开发环境。它创建信息映射来隔离底层信息结构和上层应用，提供schema的灵活性。
MicroStrategy Intelligence Server管理工具：它提供了用户管理、安全模型的实现和MicroStrategy Intelligence Server的管理工具

MicroStrategy Intelligence Server不是MicroStrategy Desktop的一部分，它是一个单独的产品。Desktop包含管理Intelligence Server的必要工具，但它本身不提供Intelligence Server的任何功能。
MicroStrategy Architect是设计为满足今天复杂的BI需求的开发工具。将业务模型映射到底层数据结构的独特技术让MicroStrategy Architect成为行业里最灵活的工具。它基于金融、银行、零售、医药等行业业务模型在terabyte级别数据仓库上创建BI应用。通过用户友好的界面，MicroStrategy Architect让用户创建和维护元数据，从而使得更改能立即透明的对所有业务用户生效。
MicroStrategy Architect创建了一个抽象层来将数据转换为用户熟悉的术语，从而允许用户使用熟悉的业务术语来查看数据。MicroStrategy元数据通过操作任意关系型数据库来提供最大限度的灵活性。支持广泛的高级BI schema确保了系统能够满足任何分析需求。
MicroStrategy Architect让用户能够集中更新元数据，从而简化了系统维护复杂性。更改对所有用户即时而且透明，减少了不必要的复杂性。MicroStrategy Architect通过隔离BI应用和数据仓库变更来方便做变更管理，从而减少系统维护和降低成本。
你可以在MicroStrategy Desktop界面里找到MicroStrategy Intelligence Server的大部分管理功能：

用户管理：MicroStrategy Desktop轻松维护和管理用户或用户组。大量强大的用户和对面管理特性让你可以更新当前用户的访问权限、删除旧的用户或复制现有用户到新用户，从而减少了多余的工作量。
广泛的安全模型：在任何BI解决方案里，系统安全始终具有最高的重要性。管理员用户可以创建和维护大量安全配置，通过使用MicroStrategy权限、角色、访问控制列表和数据filter来控制应用功能点、MicroStrategy project、所有BI对象和数据库行和列的访问权限。
Intelligence Server管理：通过MicroStrategy Desktop界面，管理员用户可以改变许多MicroStrategy Intelligence Server参数。管理员可以控制最大报表长度、最大用户空闲时间、报表优先级等等。

Project Source和Project
Project Source
Project Source是一个MicroStrategy对象，它定义了MicroStrategy Desktop怎样访问元数据仓库。你可以认为Project Source是存储Project的元数据仓库的指针。通过Project Source你可以创建、操作和管理Project和其中的对象。打开Desktop之后第一类对象就是Project Source。
有两种类型的Project Source：

Server Project Source：通过Intelligence Server连接到元数据
Direct Project Source：使用Open Database Connectivity(ODBC)直接连接到元数据

下图显示了4个Project Source，其中上面两个是Server Project Source，下面两个是Direct Project [...]]]></description>
			<content:encoded><![CDATA[<p>MicroStrategy Desktop是设计为满足当今复杂的BI需求的下一代商业智能工具。它包含集成的查询和报表，强大的协作分析和研究型工作流。它允许你使用单一界面来设计、创建和维护整个BI系统。</p>
<p><span style="color: #0000ff;"><strong>MicroStrategy Desktop简介</strong></span><br />
MicroStrategy Desktop是一套完整的BI控制台。它允许用户使用单一界面设计、创建和维护一整套商业BI系统，给用户提供高级即时查询和自定义报表的能力。<br />
MicroStrategy Desktop提供了不同层级用户的集成方案。卓越的格式化、总计和打印功能使得创建富有吸引力的报表十分简单。你还可以创建专为格式化、展示和分发的报表，或者给会议室特色的文档添加文本、图片、表格或超链接。<br />
MicroStrategy Desktop是市面上唯一满足大型数据库完整需求而不用很多复杂代码的BI界面。它使用了大量高级的数学、统计和金融计算和复杂分析。它包括超多200个预定义的数学公式，你可以自定义这些公式或者创建你自己的公式。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/11.PNG"><img class="alignnone size-full wp-image-63" title="1" src="http://rubylog.com/wp-content/uploads/2009/11/11.PNG" alt="1" width="535" height="279" /></a></p>
<p><strong>MicroStrategy Desktop组件</strong><br />
MicroStrategy Desktop包括如下组件：</p>
<ol>
<li>MicroStrategy Desktop：在个人电脑桌面上提供了集成的查询和报表、强大的分析能力和决策支持工作流。它支持大量的联机数据分析需求。创建报表十分容易，可以使用多种展现方式来查看报表，使报表美观并达到生产报表的要求，分发报表给其他用户，使用drilling、pivoting、data slicing等大量即时操作来扩展报表。而且，你还可以为不同技能和安全级别的用户自定义界面。</li>
<li>MicroStrategy Architect：它是BI系统的快速开发环境。它创建信息映射来隔离底层信息结构和上层应用，提供schema的灵活性。</li>
<li>MicroStrategy Intelligence Server管理工具：它提供了用户管理、安全模型的实现和MicroStrategy Intelligence Server的管理工具</li>
</ol>
<p>MicroStrategy Intelligence Server不是MicroStrategy Desktop的一部分，它是一个单独的产品。Desktop包含管理Intelligence Server的必要工具，但它本身不提供Intelligence Server的任何功能。</p>
<p>MicroStrategy Architect是设计为满足今天复杂的BI需求的开发工具。将业务模型映射到底层数据结构的独特技术让MicroStrategy Architect成为行业里最灵活的工具。它基于金融、银行、零售、医药等行业业务模型在terabyte级别数据仓库上创建BI应用。通过用户友好的界面，MicroStrategy Architect让用户创建和维护元数据，从而使得更改能立即透明的对所有业务用户生效。<br />
MicroStrategy Architect创建了一个抽象层来将数据转换为用户熟悉的术语，从而允许用户使用熟悉的业务术语来查看数据。MicroStrategy元数据通过操作任意关系型数据库来提供最大限度的灵活性。支持广泛的高级BI schema确保了系统能够满足任何分析需求。<br />
MicroStrategy Architect让用户能够集中更新元数据，从而简化了系统维护复杂性。更改对所有用户即时而且透明，减少了不必要的复杂性。MicroStrategy Architect通过隔离BI应用和数据仓库变更来方便做变更管理，从而减少系统维护和降低成本。</p>
<p>你可以在MicroStrategy Desktop界面里找到MicroStrategy Intelligence Server的大部分管理功能：</p>
<ol>
<li>用户管理：MicroStrategy Desktop轻松维护和管理用户或用户组。大量强大的用户和对面管理特性让你可以更新当前用户的访问权限、删除旧的用户或复制现有用户到新用户，从而减少了多余的工作量。</li>
<li>广泛的安全模型：在任何BI解决方案里，系统安全始终具有最高的重要性。管理员用户可以创建和维护大量安全配置，通过使用MicroStrategy权限、角色、访问控制列表和数据filter来控制应用功能点、MicroStrategy project、所有BI对象和数据库行和列的访问权限。</li>
<li>Intelligence Server管理：通过MicroStrategy Desktop界面，管理员用户可以改变许多MicroStrategy Intelligence Server参数。管理员可以控制最大报表长度、最大用户空闲时间、报表优先级等等。</li>
</ol>
<p><span style="color: #0000ff;"><strong>Project Source和Project</strong></span></p>
<p><strong>Project Source</strong><br />
Project Source是一个MicroStrategy对象，它定义了MicroStrategy Desktop怎样访问元数据仓库。你可以认为Project Source是存储Project的元数据仓库的指针。通过Project Source你可以创建、操作和管理Project和其中的对象。打开Desktop之后第一类对象就是Project Source。<br />
有两种类型的Project Source：</p>
<ol>
<li>Server Project Source：通过Intelligence Server连接到元数据</li>
<li>Direct Project Source：使用Open Database Connectivity(ODBC)直接连接到元数据</li>
</ol>
<p>下图显示了4个Project Source，其中上面两个是Server Project Source，下面两个是Direct Project Source。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/21.PNG"><img class="alignnone size-full wp-image-64" title="2" src="http://rubylog.com/wp-content/uploads/2009/11/21.PNG" alt="2" width="735" height="291" /></a><br />
Server Project Source通过MicroStrategy Intelligence Server来连接元数据，这是最常见的连接类型。Server Project Source也称为&#8221;3-tier&#8221; Project Source：第一层为Desktop，第二层为Intelligence Server，第三层为元数据。Project Source指向一个Intelligence Server，而Intelligence Server则指向存储Project的元数据。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/31.PNG"><img class="alignnone size-full wp-image-65" title="3" src="http://rubylog.com/wp-content/uploads/2009/11/31.PNG" alt="3" width="401" height="206" /></a><br />
Direct Project Source通常称为&#8221;2-tier&#8221; Project Source：第一层为Desktop，第二层为元数据。它被称为Direct是因为它直接指向MicroStrategy元数据。Direct Project Source使得Desktop直接通过在Project Source定义里指定的ODBC数据源名称(Data Source Name, DSN)连接元数据仓库。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/41.PNG"><img class="alignnone size-full wp-image-66" title="4" src="http://rubylog.com/wp-content/uploads/2009/11/41.PNG" alt="4" width="313" height="187" /></a><br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/51.PNG"><img class="alignnone size-full wp-image-67" title="5" src="http://rubylog.com/wp-content/uploads/2009/11/51.PNG" alt="5" width="407" height="319" /></a><br />
由于Direct Project Source没有直接连接到Intelligence Server，在Administration图标下也不会有Intelligence Server monitoring工具。值得注意的是，当使用Direct Project Source时，系统绕开了Intelligence Server，从而丢失了Intelligence Server的所有优势。因此，在生产环境下不应该使用Direct Project Source。一般只在小的展示和概念证明项目中使用Direct Project Source。</p>
<p><strong>Intelligence Server管理工具</strong><br />
如果用户以管理员身份登录一个Server Project Source，用户将看到Administration图标。它提供了大量工具来监控和管理Project Source连接的Intelligence Server。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/61.PNG"><img class="alignnone size-full wp-image-68" title="6" src="http://rubylog.com/wp-content/uploads/2009/11/61.PNG" alt="6" width="577" height="433" /></a><br />
Administration图标下面提供一些管理工具：</p>
<ol>
<li>Job Monitor：用来查看当前正在执行的Job、查看正在执行的Job的SQL、取消一个Job</li>
<li>Project Monitor：用来访问Project Configuration Dialog，加载或卸载Project，以及区分Job优先级</li>
<li>User Connection Monitor：用来查看连接到一个Intelligence Server的用户信息和断开用户连接</li>
<li>Database Connection Monitor：用来查看所有数据库连接、删除和断开连接</li>
<li>Schedule Monitor：用来查看所有schedule的请求和删除schedule的请求</li>
<li>Cache Monitor：用来查看和管理报表缓存的状态、从硬盘加载缓存或卸载缓存，或删除缓存</li>
<li>Cluster Monitor：用来在集群中查看、连接和删除MicroStrategy Intelligence Server节点</li>
<li>Database Instance Manager：对一个Project Source修改、创建、重命名或删除一个数据库实例</li>
<li>Schedule Manager：用来创建、修改或删除schedule以及它的event</li>
<li>User Manager：用来组织、创建、修改和删除用户和用户组，或从外部资源导入用户</li>
</ol>
<p>当使用Direct Project Source时只有有限的管理工具：Database Instance Manger、Schedule Manager和User Manager</p>
<p><strong>Project</strong></p>
<p>从技术上来说，Project是数据仓库、元数据仓库和用户活动的交集。Project里用户构建和存储用于创建应用的信息。</p>
<ol>
<li>Project决定了要使用的数据仓库中的表和可用于分析的数据集</li>
<li>Project包含所有用于解释数据仓库中表的数据的schema对象(fact, attribute, hierarchy)</li>
<li>Project包含所有用于创建报表和分析数据的报表对象(metric, filter, report)</li>
<li>Project定义了用户访问对象的安全schema(security fitler, security role, privilege, access control)</li>
</ol>
<p>Direct Project Source下面列出了元数据库里所有的Project，而Server Project Source只列出Intelligence Server加载的Project。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/7.PNG"><img class="alignnone size-full wp-image-69" title="7" src="http://rubylog.com/wp-content/uploads/2009/11/7.PNG" alt="7" width="602" height="338" /></a><br />
默认情况下每个Project有如下目录：</p>
<ol>
<li>History：获取schedule报表的地方，只有在Server Project Source下才有。</li>
<li>My Personal Objects：存储用户创建的对象，只对用户自己可见。用户可以在这里创建额外的目录。</li>
<li>Public Objects：包含所有用户可见的对象，下面有许多按对象类型归类的子目录</li>
<li>Schema Objects：包含使用MicroStrategy Architect创建的对象，来自数据仓库和数据模型，如fact、attribute、hierarchy</li>
<li>Data Explorer：包含hierarchy，它允许用户浏览Project里的attribute和数据</li>
</ol>
<p><a href="http://rubylog.com/wp-content/uploads/2009/11/8.PNG"><img class="alignnone size-full wp-image-70" title="8" src="http://rubylog.com/wp-content/uploads/2009/11/8.PNG" alt="8" width="659" height="387" /></a></p>
<p><span style="color: #0000ff;"><strong>Desktop界面一览</strong></span><br />
Desktop界面里主要有如下几大区域：</p>
<ol>
<li>A: Folder List</li>
<li>B: Object Viewer</li>
<li>C: Shortcut Bar</li>
<li>D: Menu Bar</li>
<li>E: Toolbar</li>
</ol>
<p><a href="http://rubylog.com/wp-content/uploads/2009/11/9.PNG"><img class="alignnone size-full wp-image-71" title="9" src="http://rubylog.com/wp-content/uploads/2009/11/9.PNG" alt="9" width="730" height="441" /></a></p>
<p><strong>Folder List</strong><br />
Folder List显示了所有的Project Source、Project、application和schema对象，以及BI系统的管理工具。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/10.PNG"><img class="alignnone size-full wp-image-72" title="10" src="http://rubylog.com/wp-content/uploads/2009/11/10.PNG" alt="10" width="302" height="531" /></a></p>
<p><strong>Object Viewer</strong><br />
Ojbect Viewer就像Windows Explorer一样显示当前目录下的对象。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/111.PNG"><img class="alignnone size-full wp-image-73" title="11" src="http://rubylog.com/wp-content/uploads/2009/11/111.PNG" alt="11" width="723" height="487" /></a><br />
<strong>Shortcut Bar</strong><br />
Shortcut Bar允许用户快速访问Folder List里的位置。它类似于Microsoft Outlook里的Shortcut Bar，你可以对Folder List的任意位置添加Shortcut。你也可以对Shortcut进行自定义分组，这对大型Project比较适用。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/12.PNG"><img class="alignnone size-full wp-image-74" title="12" src="http://rubylog.com/wp-content/uploads/2009/11/12.PNG" alt="12" width="126" height="374" /></a><br />
如何创建一个Shortcut到Shortbut Bar：</p>
<ol>
<li>在Folder List里定位你想加到Shortcut Bar的位置</li>
<li>将该位置拖拽到Shortcut Bar</li>
</ol>
<p>如何删除一个Shortcut：</p>
<ol>
<li>在Shortcut Bar的一个Shortcut上右键并选择Remove from Shortcut Bar</li>
<li>点击Yes确认</li>
</ol>
<p>如何创建一个新的Shortcut组</p>
<ol>
<li>在Shortcut Bar上右键并选择Add Group</li>
<li>输入一个名字然后点击OK</li>
</ol>
<p><strong>Menu Bar</strong><br />
MicroStrategy Desktop的Menu Bar有如下菜单：</p>
<ol>
<li>File：允许用户创建新的对象和目录</li>
<li>Edit：允许用户访问Cut、Copy和Paste功能</li>
<li>View：允许用户改变Object Viewer里图标的显示，还可以显示和隐藏Status Bar、 Shortcut Bar和Folder List</li>
<li>Go：允许用户从Folder List里向上级目录移动或直接回到Project主页</li>
<li>Tools：允许用户访问通用的Desktop工具，如Search Editor、Desktop Preferences和Change Password Dialog</li>
<li>Administration：允许用户访问管理工具，如Project Configuration Editor和Database Instance Wizard</li>
<li>Schema：允许用户访问Project设计工具，如Project Creation Wizard和Atrribute、Fact Creation Wizard</li>
<li>Window：允许用户一次点击关闭所有窗口</li>
<li>Help：允许用户访问在线帮助系统并提供一些有用的MicroStrategy网站</li>
</ol>
<p><a href="http://rubylog.com/wp-content/uploads/2009/11/13.PNG"><img class="alignnone size-full wp-image-75" title="13" src="http://rubylog.com/wp-content/uploads/2009/11/13.PNG" alt="13" width="438" height="28" /></a><br />
<strong>Toolbar</strong><br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/14.PNG"><img class="alignnone size-full wp-image-76" title="14" src="http://rubylog.com/wp-content/uploads/2009/11/14.PNG" alt="14" width="431" height="24" /></a><br />
主要的MicroStrategy Desktop toolbar按钮：</p>
<ol>
<li>New：创建新对象</li>
<li>Cut：剪切当前选中对象</li>
<li>Copy：复制当前选中对象</li>
<li>Paste：粘贴你剪切和复制的对象</li>
<li>Delete：删除当前选中对象</li>
<li>Rename：重命名当前选中对象</li>
<li>Preferences/View Object Properties：为当前选中对象打开Properties窗口。如果当前选中的是Project则打开Project Preferences窗口</li>
<li>Search：打开Search Editor</li>
<li>Edit：为当前选中对象打开编辑器</li>
<li>Run Report：运行当前选中报表</li>
<li>View：改变Object Viewer里的图标显示</li>
<li>Show or Hide the Folder List：隐藏或显示Folder List</li>
<li>Refresh：刷新当前显示</li>
<li>Go to project：回到当前Project主页</li>
<li>Go one level up：从Folder List里向上级目录移动</li>
<li>Update Schema：更新Project的新添或修改的schema对象定义</li>
</ol>
<p><span style="color: #0000ff;"><strong>创建和保存对象</strong></span></p>
<p><strong>对象类型</strong><br />
MicroStrategy Desktop里可以创建许多对象类型，它们可以分为三类：schema对象、application对象和configuration对象。schema对象用来创建application对象，application对象用于创建其他application对象。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/15.PNG"><img class="alignnone size-full wp-image-77" title="15" src="http://rubylog.com/wp-content/uploads/2009/11/15.PNG" alt="15" width="578" height="357" /></a></p>
<p><strong>创建和保持对象</strong><br />
有三种方式来访问不同的对象编辑器来创建新对象：</p>
<ol>
<li>在Toolbar上点击New按钮旁边的向下箭头来选择要创建的对象</li>
<li>在File菜单选择New然后选择要创建的对象</li>
<li>在Object Viewer的空白区域右键选择New来选中要创建的对象</li>
</ol>
<p><a href="http://rubylog.com/wp-content/uploads/2009/11/16.PNG"><img class="alignnone size-full wp-image-78" title="16" src="http://rubylog.com/wp-content/uploads/2009/11/16.PNG" alt="16" width="527" height="492" /></a><br />
保持对象有如下方式：</p>
<ol>
<li>File菜单选择Save或Save As</li>
<li>Toolbar点击Save或Save and Close</li>
</ol>
<p>第一次保持对象时，Save As窗口让用户指定对象名字和要保持的位置，默认位置为当前工作目录。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/17.PNG"><img class="alignnone size-full wp-image-79" title="17" src="http://rubylog.com/wp-content/uploads/2009/11/17.PNG" alt="17" width="431" height="309" /></a></p>
<p><span style="color: #0000ff;"><strong>创建对象的Shortcut</strong></span><br />
除了可以添加指定位置的Shortcut，还可以创建MicroStrategy对象的Shortcut，如document、report、folder、attribute、metric等等。该需求让用户更好的组织项目，同时也会保持对象的标准位置。<br />
Shortcut就像Microsoft Windows操作系统里的快捷方式一样，是Project的对象的一个简单的链接。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/18.PNG"><img class="alignnone size-full wp-image-80" title="18" src="http://rubylog.com/wp-content/uploads/2009/11/18.PNG" alt="18" width="336" height="116" /></a><br />
有两种方式创建对象的Shortcut：</p>
<ol>
<li>从File菜单选择New然后选择Shortcut，然后定位你想创建Shortcut的对象，点击Open，则会创建一个该对象的Shortcut到当前位置，名字和原始对象一样</li>
<li>在你想创建Shortcut的对象上右键，选择位置，点击OK</li>
</ol>
<p><a href="http://rubylog.com/wp-content/uploads/2009/11/19.PNG"><img class="alignnone size-full wp-image-81" title="19" src="http://rubylog.com/wp-content/uploads/2009/11/19.PNG" alt="19" width="274" height="413" /></a><br />
对有Shorcut的对象不能直接删除，需要先删除Shortcut。</p>
<p>如何编辑一个对象的Shortcut：</p>
<ol>
<li>选中你要编辑的Shortcut</li>
<li>File菜单选择Properties或右键选择Properties</li>
<li>选择Shortcut tab</li>
<li>编辑Target属性</li>
<li>点击OK，则该Shortcut自动更新为目标对象的Shortcut</li>
</ol>
<p><a href="http://rubylog.com/wp-content/uploads/2009/11/20.PNG"><img class="alignnone size-full wp-image-82" title="20" src="http://rubylog.com/wp-content/uploads/2009/11/20.PNG" alt="20" width="349" height="441" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rubylog.com/microstrategy-desktop-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MicroStrategy.Reporting.01 商业智能简介</title>
		<link>http://rubylog.com/microstrategy-business-intelligence-introduction/</link>
		<comments>http://rubylog.com/microstrategy-business-intelligence-introduction/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 10:41:52 +0000</pubDate>
		<dc:creator>Hideto</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[MicroStrategy]]></category>

		<guid isPermaLink="false">http://rubylog.com/?p=52</guid>
		<description><![CDATA[商业智能简介
商业智能(BI)是分析累积的原始数据并提取有用信息的过程。一个好的BI系统在正确的时间、正确的地点提供正确的信息给决策者来让他们作出更好的商业决定。

如今，BI系统从复杂的原子级别数据分析到主动发送信息给系统订阅者等多种正在增长的应用都有帮助。当今的市场需要在各种级别按需分析当天的业务。它也需要在正确的时间将相关和适宜的信息发送给正确的人。最后，它还需要业务能和客户有密切而独特的联系。
典型的商业智能架构
下图显示了在高层次上一个典型的BI系统的样子。它包括以下几个主要部分：

A: 来自多个源的原始数据，集中在一个数据仓库
B: BI工具，分析数据并提供信息来帮助BI用户更好的理解业务
C: 用户在BI工具提供的信息的基础上采取重新调配资源、改进流程和去除不必要的开销等行动


每个BI系统都各不相同，它取决于特定的业务需要和系统目标。在这里讲述的是通用的BI系统的大体架构。
工业级强度的商业智能平台
MicroStrategy是一个工业级强度的平台，它可以粘合各种BI应用来帮你构建持久和有益的客户关系、管理你的供应链、监控你的财政或执行上千种你今天可能需要的业务分析。在这些区域的更好管理会给你的生意带来更多收入和增强的经营效率。

信息技术(IT)部分一直在努力少做多得。他们日益寻找一个单一的可以给每个用户提供正确的报表和分析的BI平台。在这个自助式的年代，BI平台必须满足分析师和行政主管不同的需求，而且要满足IT部门轻松集成和保护企业系统、集中管理、性能监控、容错和多级安全等需求。
在MicroStrategy BI平台的帮助下，IT部门可以为每个用户提供任何类型的BI需求。从简单的即时查询、信息发布到企业报表，MicroStrategy是唯一能够满足各种业务需求的BI平台。
5种类型的商业智能
如下5中类型的商业智能将满足你的各种信息管理需求：

企业报表: 提供创建和发布像素完美的报表。从超级用户的高级需求到行政主管的“看一眼”，MicroStrategy能满足所有人的报表需求
立方体分析(MOLAP): 提供在预定义好的数据子集上执行OLAP分析的能力。在速度和交互性上增强用户体验
即时查询(ROLAP)和分析: 提供调查性分析和使用drill anywhere、page-by、pivot、subtotal、sort、filter、rank和export等OLAP功能的即时查询。它让分析师和管理人员对商业结果有更好的洞察和理解
统计分析和数据挖掘: 提供使用统计处理和数据挖掘算法来进行预测分析。只有MicroStrategy BI平台提供了这些明显需要第三方软件来执行分析的能力
报表发布和告警: 通过自我订阅或中心管理来提供发布报表和异常告警的能力。你可以通过任何设备来接收报表，包含e-mail、打印机、文本消息、PDA、传真、寻呼机和语音等等


MicroStrategy商业智能架构
下图显示了使用MicroStrategy的BI系统的基本组件：

源系统
ETL流程
数据仓库
元数据库
MicroStrategy平台


源系统
源系统一般为联机事务处理(OLTP)系统，它是获得业务处理和事务的原始数据的数据库或主机。事务处理包括简单的记录事务如销售、库存、取出、存入、雇佣、货运等等。
一些商用的源系统的例子包括Siebel、SAP和PeopleSoft等等。源系统里的数据有如下特点：

数据访问为读/写(大量的查询、插入、更新和删除)
数据按应用来存放(业务活动和工作流)
不同源系统间的数据格式没有必要一致
数据历史一般限制为最近的或当前数据

ETL流程
数据抽取、转换和装载流程帮助将数据从各种源系统迁移到数据仓库的信息和自动化过程。
具体来说，ETL流程：

存储源系统的结构和内容信息
存储数据仓库的结构和内容信息
使源系统和数据仓库的结构和内容相关联
给数据抽取工具提供信息，执行物理上从源系统到数据仓库的数据迁移

常用数据抽取工具：

Ascential
Informatica
DataMirror
D2K
ETI
Hummingbird

数据源
MicroStrategy BI系统里主要的数据源是一个设计良好并健壮的数据仓库。数据仓库是联机分析处理(OLAP)系统的一个例子。OLTP源系统为事务处理而设计和优化，而数据仓库则为分析处理设计和优化。分析处理包括处理事务记录来计算销售趋势、增长模式、总和百分比、趋势报表、利润分析等等。
数据仓库中的数据有如下特性：

数据访问一般为只读(多为查询，一般很少有插入、更新和删除)
数据按业务主题存放
数据格式一致
数据历史较长，一般为2~5年甚至更久

数据仓库的数据一般通过ETL流程从源系统加载
元数据
元数据是存在数据库中，用于帮助从数据仓库迁移数据到MicroStrategy应用的信息。它存储MicroStrategy对象定义和数据仓库的结构和内容的信息。它将MicroStrategy的对象映射到数据仓库中合适的信息。
MicroStrategy平台
MicroStrategy平台包括各种应用来允许用户和BI系统交互。它允许用户从逻辑上组织数据等级结构，从而很容易创建、计算和分析复杂的数据模型。它也提供了使用多种方式查看数据的能力，从复杂的超级用户工具如MicroStrategy Desktop到容易使用的报表查看工具如MicroStrategy Web。

]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;"><strong>商业智能简介</strong></span></p>
<p>商业智能(BI)是分析累积的原始数据并提取有用信息的过程。一个好的BI系统在正确的时间、正确的地点提供正确的信息给决策者来让他们作出更好的商业决定。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/1.PNG"><img class="alignnone size-full wp-image-53" title="1" src="http://rubylog.com/wp-content/uploads/2009/11/1.PNG" alt="1" width="459" height="282" /></a><br />
如今，BI系统从复杂的原子级别数据分析到主动发送信息给系统订阅者等多种正在增长的应用都有帮助。当今的市场需要在各种级别按需分析当天的业务。它也需要在正确的时间将相关和适宜的信息发送给正确的人。最后，它还需要业务能和客户有密切而独特的联系。</p>
<p><strong>典型的商业智能架构</strong><br />
下图显示了在高层次上一个典型的BI系统的样子。它包括以下几个主要部分：</p>
<ol>
<li>A: 来自多个源的原始数据，集中在一个数据仓库</li>
<li>B: BI工具，分析数据并提供信息来帮助BI用户更好的理解业务</li>
<li>C: 用户在BI工具提供的信息的基础上采取重新调配资源、改进流程和去除不必要的开销等行动</li>
</ol>
<p><a href="http://rubylog.com/wp-content/uploads/2009/11/2.PNG"><img class="alignnone size-full wp-image-54" title="2" src="http://rubylog.com/wp-content/uploads/2009/11/2.PNG" alt="2" width="413" height="183" /></a><br />
每个BI系统都各不相同，它取决于特定的业务需要和系统目标。在这里讲述的是通用的BI系统的大体架构。</p>
<p><strong>工业级强度的商业智能平台</strong><br />
MicroStrategy是一个工业级强度的平台，它可以粘合各种BI应用来帮你构建持久和有益的客户关系、管理你的供应链、监控你的财政或执行上千种你今天可能需要的业务分析。在这些区域的更好管理会给你的生意带来更多收入和增强的经营效率。<br />
<img alt="" /><a href="http://rubylog.com/wp-content/uploads/2009/11/3.PNG"><img class="alignnone size-full wp-image-55" title="3" src="http://rubylog.com/wp-content/uploads/2009/11/3.PNG" alt="3" width="221" height="346" /></a><br />
信息技术(IT)部分一直在努力少做多得。他们日益寻找一个单一的可以给每个用户提供正确的报表和分析的BI平台。在这个自助式的年代，BI平台必须满足分析师和行政主管不同的需求，而且要满足IT部门轻松集成和保护企业系统、集中管理、性能监控、容错和多级安全等需求。</p>
<p>在MicroStrategy BI平台的帮助下，IT部门可以为每个用户提供任何类型的BI需求。从简单的即时查询、信息发布到企业报表，MicroStrategy是唯一能够满足各种业务需求的BI平台。</p>
<p><strong>5种类型的商业智能</strong><br />
如下5中类型的商业智能将满足你的各种信息管理需求：</p>
<ol>
<li>企业报表: 提供创建和发布像素完美的报表。从超级用户的高级需求到行政主管的“看一眼”，MicroStrategy能满足所有人的报表需求</li>
<li>立方体分析(MOLAP): 提供在预定义好的数据子集上执行OLAP分析的能力。在速度和交互性上增强用户体验</li>
<li>即时查询(ROLAP)和分析: 提供调查性分析和使用drill anywhere、page-by、pivot、subtotal、sort、filter、rank和export等OLAP功能的即时查询。它让分析师和管理人员对商业结果有更好的洞察和理解</li>
<li>统计分析和数据挖掘: 提供使用统计处理和数据挖掘算法来进行预测分析。只有MicroStrategy BI平台提供了这些明显需要第三方软件来执行分析的能力</li>
<li>报表发布和告警: 通过自我订阅或中心管理来提供发布报表和异常告警的能力。你可以通过任何设备来接收报表，包含e-mail、打印机、文本消息、PDA、传真、寻呼机和语音等等</li>
</ol>
<p><a href="http://rubylog.com/wp-content/uploads/2009/11/4.PNG"><img class="alignnone size-full wp-image-56" title="4" src="http://rubylog.com/wp-content/uploads/2009/11/4.PNG" alt="4" width="486" height="404" /></a></p>
<p><span style="color: #0000ff;"><strong>MicroStrategy商业智能架构</strong></span></p>
<p>下图显示了使用MicroStrategy的BI系统的基本组件：</p>
<ol>
<li>源系统</li>
<li>ETL流程</li>
<li>数据仓库</li>
<li>元数据库</li>
<li>MicroStrategy平台</li>
</ol>
<p><a href="http://rubylog.com/wp-content/uploads/2009/11/5.PNG"><img class="alignnone size-full wp-image-57" title="5" src="http://rubylog.com/wp-content/uploads/2009/11/5.PNG" alt="5" width="503" height="390" /></a></p>
<p><strong>源系统</strong><br />
源系统一般为联机事务处理(OLTP)系统，它是获得业务处理和事务的原始数据的数据库或主机。事务处理包括简单的记录事务如销售、库存、取出、存入、雇佣、货运等等。<br />
一些商用的源系统的例子包括Siebel、SAP和PeopleSoft等等。源系统里的数据有如下特点：</p>
<ol>
<li>数据访问为读/写(大量的查询、插入、更新和删除)</li>
<li>数据按应用来存放(业务活动和工作流)</li>
<li>不同源系统间的数据格式没有必要一致</li>
<li>数据历史一般限制为最近的或当前数据</li>
</ol>
<p><strong>ETL流程</strong><br />
数据抽取、转换和装载流程帮助将数据从各种源系统迁移到数据仓库的信息和自动化过程。<br />
具体来说，ETL流程：</p>
<ol>
<li>存储源系统的结构和内容信息</li>
<li>存储数据仓库的结构和内容信息</li>
<li>使源系统和数据仓库的结构和内容相关联</li>
<li>给数据抽取工具提供信息，执行物理上从源系统到数据仓库的数据迁移</li>
</ol>
<p>常用数据抽取工具：</p>
<ol>
<li>Ascential</li>
<li>Informatica</li>
<li>DataMirror</li>
<li>D2K</li>
<li>ETI</li>
<li>Hummingbird</li>
</ol>
<p><strong>数据源</strong><br />
MicroStrategy BI系统里主要的数据源是一个设计良好并健壮的数据仓库。数据仓库是联机分析处理(OLAP)系统的一个例子。OLTP源系统为事务处理而设计和优化，而数据仓库则为分析处理设计和优化。分析处理包括处理事务记录来计算销售趋势、增长模式、总和百分比、趋势报表、利润分析等等。</p>
<p>数据仓库中的数据有如下特性：</p>
<ol>
<li>数据访问一般为只读(多为查询，一般很少有插入、更新和删除)</li>
<li>数据按业务主题存放</li>
<li>数据格式一致</li>
<li>数据历史较长，一般为2~5年甚至更久</li>
</ol>
<p>数据仓库的数据一般通过ETL流程从源系统加载</p>
<p><strong>元数据</strong><br />
元数据是存在数据库中，用于帮助从数据仓库迁移数据到MicroStrategy应用的信息。它存储MicroStrategy对象定义和数据仓库的结构和内容的信息。它将MicroStrategy的对象映射到数据仓库中合适的信息。</p>
<p><strong>MicroStrategy平台</strong><br />
MicroStrategy平台包括各种应用来允许用户和BI系统交互。它允许用户从逻辑上组织数据等级结构，从而很容易创建、计算和分析复杂的数据模型。它也提供了使用多种方式查看数据的能力，从复杂的超级用户工具如MicroStrategy Desktop到容易使用的报表查看工具如MicroStrategy Web。<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/6.PNG"><img class="alignnone size-full wp-image-58" title="6" src="http://rubylog.com/wp-content/uploads/2009/11/6.PNG" alt="6" width="812" height="338" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rubylog.com/microstrategy-business-intelligence-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>商业智能及产品</title>
		<link>http://rubylog.com/business-intelligence-and-products/</link>
		<comments>http://rubylog.com/business-intelligence-and-products/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 08:04:28 +0000</pubDate>
		<dc:creator>Hideto</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>

		<guid isPermaLink="false">http://rubylog.com/?p=48</guid>
		<description><![CDATA[历史和发展
商业智能(Business Intelligence，简称BI)是用于支持决策的技能、过程、技术、应用软件和实践的集合，其主要目标是将企业所掌握的信息转换成竞争优势，提高企业决策能力、决策效率、决策准确性。
BI技术提供对商业运营的历史、现状和预言性视角，常见功能包括reporting、OLAP、analytics、data mining、business performance management、benchmarking、text mining和predictive analytics等。
IBM的研究员Hans Peter Luhn最早于1958年使用了Business Intelligence这个术语，定义为&#8221;the ability to apprehend the interrelationships of presented facts in such a way as to guide action towards a desired goal&#8221;。
1989年Howard Dresner(Gartner Group分析师)提议将BI作为一个受保护的术语来描述&#8221;concepts and methods to improve busibess decision marking by using fact-based support systems&#8221;并被广泛接受。
2009年一份Gartner报告预言了商业智能领域的发展：

到2012年，超过35%的top 5000的全球公司将因为缺乏信息、流程和工具而相继走向失败
到2012年，业务单元将至少占商业智能总预算的40%
到2012年，20%的组织将通过SaaS交付工业特定的分析应用来作为他们商业智能投资的标准组件
2009年，协作决策将显露为一个新的产品范畴，它让社会化软件具有商业智能平台的能力
到2012年，三分之一的应用到商业流程的分析应用将通过粗粒度应用的Mashup来交付

BI系统的架构和组件
一般为： 数据源 =&#62; ETL流程 =&#62; Data Warehouse =&#62; BI application

数据源为OLTP数据库、外部文件等
ETL为data extraction、data [...]]]></description>
			<content:encoded><![CDATA[<p><strong>历史和发展</strong><br />
商业智能(Business Intelligence，简称BI)是用于支持决策的技能、过程、技术、应用软件和实践的集合，其主要目标是将企业所掌握的信息转换成竞争优势，提高企业决策能力、决策效率、决策准确性。<br />
BI技术提供对商业运营的历史、现状和预言性视角，常见功能包括reporting、OLAP、analytics、data mining、business performance management、benchmarking、text mining和predictive analytics等。<br />
IBM的研究员Hans Peter Luhn最早于1958年使用了Business Intelligence这个术语，定义为&#8221;the ability to apprehend the interrelationships of presented facts in such a way as to guide action towards a desired goal&#8221;。<br />
1989年Howard Dresner(Gartner Group分析师)提议将BI作为一个受保护的术语来描述&#8221;concepts and methods to improve busibess decision marking by using fact-based support systems&#8221;并被广泛接受。</p>
<p>2009年一份Gartner报告预言了商业智能领域的发展：</p>
<ol>
<li>到2012年，超过35%的top 5000的全球公司将因为缺乏信息、流程和工具而相继走向失败</li>
<li>到2012年，业务单元将至少占商业智能总预算的40%</li>
<li>到2012年，20%的组织将通过SaaS交付工业特定的分析应用来作为他们商业智能投资的标准组件</li>
<li>2009年，协作决策将显露为一个新的产品范畴，它让社会化软件具有商业智能平台的能力</li>
<li>到2012年，三分之一的应用到商业流程的分析应用将通过粗粒度应用的Mashup来交付</li>
</ol>
<p><strong>BI系统的架构和组件</strong><br />
一般为： 数据源 =&gt; ETL流程 =&gt; Data Warehouse =&gt; BI application<br />
<a href="http://rubylog.com/wp-content/uploads/2009/11/bi-architecture.PNG"><img class="alignnone size-full wp-image-49" title="bi architecture" src="http://rubylog.com/wp-content/uploads/2009/11/bi-architecture.PNG" alt="bi architecture" width="507" height="281" /></a><br />
数据源为OLTP数据库、外部文件等<br />
ETL为data extraction、data transforming和data loading<br />
Data Warehouse结构一般为Star schema或Snowflake schema<br />
BI application包括Query&amp;Reporting、OLAP、Data mining、Dashboard等</p>
<p><strong>产品</strong><br />
按市场份额排列top 5：</p>
<ol>
<li><a href="http://www.businessobjects.com">Business Objects(SAP)</a></li>
<li><a href="http://www.sas.com">SAS</a></li>
<li><a href="http://www.cognos.com">Cognos(IBM)</a></li>
<li><a href="http://www.microsoft.com/BI">MicroSoft</a></li>
<li><a href="http://www.oracle.com/us/solutions/ent-performance-bi/index.htm">Oracle</a></li>
</ol>
<p>其他：</p>
<ol>
<li><a href="http://www.microstrategy.com">MicroStrategy</a></li>
<li><a href="http://www.pentaho.com">Pentaho</a></li>
<li><a href="http://www.spagoworld.org/ecm/faces/public/guest/home/solutions/spagobi">SpagoBI</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://rubylog.com/business-intelligence-and-products/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>编程语言兵器谱排名Top10</title>
		<link>http://rubylog.com/top10-programming-languages/</link>
		<comments>http://rubylog.com/top10-programming-languages/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 02:43:58 +0000</pubDate>
		<dc:creator>Hideto</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Programming Languages]]></category>
		<category><![CDATA[top10]]></category>

		<guid isPermaLink="false">http://rubylog.com/?p=12</guid>
		<description><![CDATA[本文内容部分整理自wikipedia。
No.1 Java
历史、发展与现状
Java最初由James Gosling在Sun Microsystems开发并于1995年作为Sun Microsystems的Java平台的一个核心组件发布。该语言从C和C++继承了很多语法特性并拥有更简单的对象模型和更少的低级设施。Java应用程序通常被编译为字节码(class文件)，它可以运行在任何Java虚拟机(JVM)上而不管是何种计算机体系结构。
Java语言创建时立下5个主要目标：

它应该是简单，面向对象，和熟悉的
它应该是强大，安全的
它应该是架构中立和便携的
它应该是高性能的
它应该是解释，多线程和动态的

截至2009年11月，JDK最新版本为JDK 6 Update 16。
应用领域
Sun公司定义了4个针对不同Java应用环境的平台：

Java Card&#8211;针对智能卡环境
Java ME&#8211;针对资源有限的环境
Java SE&#8211;针对工作站环境
Java EE&#8211;针对大型分布式企业应用或互联网环境

学习路线
1. Java基础
《Thinking in Java》
《Core Java 2》
《Java 5.0 Tiger》
2. Java进阶
《Effective Java》
《Java与模式》
3. Java EE
《Java Server Pages》
《Expert One-on-One J2EE Design and Development》
《Expert One-on-One J2EE Development without EJB》
开源项目

Ant
Struts
Hibernate
Spring
Lucene

No.2 C
历史、发展与现状
C语言是由UNIX的研制者Dennis Ritchie和Ken Thompson于1970年研制出的B语言的基础上发展和完善起来的。
C语言可以广泛应用于不同的操作系统，例如UNIX、MS-DOS、Microsoft Windows及Linux等。C语言是一种面向过程的语言，同时具有高级语言和汇编语言的优点。在C语言的基础上发展起来的有支持多种程序设计风格的C++语言，网络上广泛使用的Java、JavaScript，微软的C#等。
1983年，美国国家标准委员会(ANSI)对C语言进行了标准化，于1983年颁布了第一个C语言标准草案(83 ANSI C)，后来于1987年又颁布了另一个C语言标准草案(87 ANSI C)。最新的C语言标准是在1999年颁布并在2000年3月被ANSI采用的 C99 ，但由于未得到主流编译器厂家的支持，直到2004年C99 并未被广泛使用，增加了若干新特性后C99已经逐渐让C语言和C++分道扬镳。
应用领域
由于C具有代码便携、高效率、可访问特定硬件地址、type punning和系统资源的运行时需求较低等特性，它的主要被用于“系统编程”，包括实现操作系统和嵌入式系统应用。
由于C的高效率和广泛使用，许多其他语言的编译器、库和解释器也经常由C来实现。
C有时也用作实现其他语言的中间语言。
C也在实现终端用户应用程序中广泛使用，但随着应用越来越大，大部分开发都转移到其他语言。
学习路线
1. C基础
《The C Programming Language》
《Expert C Programming》
《Pointers on C》
《C [...]]]></description>
			<content:encoded><![CDATA[<p>本文内容部分整理自<a href="http://wikipedia.org/">wikipedia</a>。</p>
<p><span style="color: #0000ff;"><strong>No.1 Java</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>Java最初由James Gosling在Sun Microsystems开发并于1995年作为Sun Microsystems的Java平台的一个核心组件发布。该语言从C和C++继承了很多语法特性并拥有更简单的对象模型和更少的低级设施。Java应用程序通常被编译为字节码(class文件)，它可以运行在任何Java虚拟机(JVM)上而不管是何种计算机体系结构。</p>
<p>Java语言创建时立下5个主要目标：</p>
<ol>
<li>它应该是简单，面向对象，和熟悉的</li>
<li>它应该是强大，安全的</li>
<li>它应该是架构中立和便携的</li>
<li>它应该是高性能的</li>
<li>它应该是解释，多线程和动态的</li>
</ol>
<p>截至2009年11月，JDK最新版本为JDK 6 Update 16。</p>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>Sun公司定义了4个针对不同Java应用环境的平台：</p>
<ol>
<li>Java Card&#8211;针对智能卡环境</li>
<li>Java ME&#8211;针对资源有限的环境</li>
<li>Java SE&#8211;针对工作站环境</li>
<li>Java EE&#8211;针对大型分布式企业应用或互联网环境</li>
</ol>
<p><span style="color: #888888;"><strong>学习路线</strong></span></p>
<p>1. Java基础</p>
<p>《Thinking in Java》<br />
《Core Java 2》<br />
《Java 5.0 Tiger》</p>
<p>2. Java进阶</p>
<p>《Effective Java》<br />
《Java与模式》</p>
<p>3. Java EE</p>
<p>《Java Server Pages》<br />
《Expert One-on-One J2EE Design and Development》<br />
《Expert One-on-One J2EE Development without EJB》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://ant.apache.org/">Ant</a></li>
<li><a href="http://struts.apache.org/">Struts</a></li>
<li><a href="https://www.hibernate.org/">Hibernate</a></li>
<li><a href="http://www.springframework.org/">Spring</a></li>
<li><a href="http://lucene.apache.org/">Lucene</a></li>
</ol>
<p><span style="color: #0000ff;"><strong>No.2 C</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>C语言是由UNIX的研制者Dennis Ritchie和Ken Thompson于1970年研制出的B语言的基础上发展和完善起来的。</p>
<p>C语言可以广泛应用于不同的操作系统，例如UNIX、MS-DOS、Microsoft Windows及Linux等。C语言是一种面向过程的语言，同时具有高级语言和汇编语言的优点。在C语言的基础上发展起来的有支持多种程序设计风格的C++语言，网络上广泛使用的Java、JavaScript，微软的C#等。</p>
<p>1983年，美国国家标准委员会(ANSI)对C语言进行了标准化，于1983年颁布了第一个C语言标准草案(83 ANSI C)，后来于1987年又颁布了另一个C语言标准草案(87 ANSI C)。最新的C语言标准是在1999年颁布并在2000年3月被ANSI采用的 C99 ，但由于未得到主流编译器厂家的支持，直到2004年C99 并未被广泛使用，增加了若干新特性后C99已经逐渐让C语言和C++分道扬镳。</p>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>由于C具有代码便携、高效率、可访问特定硬件地址、type punning和系统资源的运行时需求较低等特性，它的主要被用于“系统编程”，包括实现操作系统和嵌入式系统应用。</p>
<p>由于C的高效率和广泛使用，许多其他语言的编译器、库和解释器也经常由C来实现。</p>
<p>C有时也用作实现其他语言的中间语言。</p>
<p>C也在实现终端用户应用程序中广泛使用，但随着应用越来越大，大部分开发都转移到其他语言。</p>
<p><span style="color: #888888;"><strong>学习路线</strong></span></p>
<p>1. C基础</p>
<p>《The C Programming Language》<br />
《Expert C Programming》<br />
《Pointers on C》<br />
《C Traps and Pitfalls》<br />
《数据结构(C语言版)》</p>
<p>2. C进阶</p>
<p><a href="http://learn.akae.cn/media/index.html">Linux C编程</a><br />
《TCP/IP Illustrated》<br />
《Unix Network Programming》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://www.kernel.org/">Linux kernel</a></li>
<li><a href="http://www.lighttpd.net/">lighttpd</a></li>
<li><a href="http://www.danga.com/memcached/">memcached</a></li>
<li><a href="http://1978th.net/tokyocabinet/">Tokyo Cabinet</a></li>
<li><a href="http://www.monkey.org/~provos/libevent/">libevent</a></li>
<li><a href="http://www.ruby-lang.org/">Ruby</a></li>
</ol>
<p><span style="color: #0000ff;"><strong>No.3 PHP</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>PHP或PHP：Hypertext Preprocessor，是一种广泛使用的通用脚本语言，最初专为网络开发中生成动态网页而设计。它可以嵌入到HTML中并通常运行在通过配置处理PHP代码生成网页内容的Web服务器上。</p>
<p>PHP最初由Rasmus Lerdorf于1995年创建，如今主要由The PHP Group维护并作为事实上的PHP标准。</p>
<p>截至2009年11月，最新版本的PHP为5.3.0。</p>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>主要为互联网应用。</p>
<p><span style="color: #888888;"><strong>学习路线</strong></span><br />
《PHP Manual》<br />
《Beginning PHP and MySQL: From Novice to Professional》<br />
《PHP and MySQL Web Development》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://wordpress.org/">WordPress</a></li>
<li><a href="http://www.comsenz.com/products/discuz">Discuz!</a></li>
<li><a href="http://www.comsenz.com/products/uchome">UCenter Home</a></li>
<li><a href="http://drupal.org/">Drupal</a></li>
<li><a href="http://www.phpmyadmin.net/">phpMyAdmin</a></li>
<li><a href="http://www.smarty.net/">smarty</a></li>
<li><a href="http://cakephp.org/">CakePHP</a></li>
<li><a href="http://framework.zend.com/">Zend Framework</a></li>
</ol>
<p><span style="color: #0000ff;"><strong>No.4 C++</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>C++由Bjarne Stroustrup与1979年在Bell Labs开发，作为C语言的增强版。</p>
<p>C++被视为一个中级语言，因为它既包含了高级语言的特性又包含了低级语言的特性。</p>
<p>C++最初命名为“带Class的C”，1983年改名为C++。</p>
<p>1998年C++标准委员会为C++制定标准并发布了ISO/IEC 14882:1998国际标准。</p>
<p>2003年委员会又发布了ISO/IEC 14882:2003标准，修正了一些缺陷。</p>
<p>2005年“Library Technical Report 1”(简称为TR1)发布，并为当前主流C++编译器所支持。</p>
<p>而下一代C++标准（所谓的C++0x）正处在开发中。</p>
<p>若干团体提供免费或私有的C++编译器，包括GNU Project，MIcrosoft，Intel，Borland等等。</p>
<p>C++设计哲学：</p>
<ol>
<li>C++被设计为静态类型的通用语言，并拥有像C一样的便携性和高效率</li>
<li>C++被设计为直接和全面支持多种编程风格（过程式程序设计，数据抽象，面向对象编程和泛型编程）</li>
<li>C++被设计为给程序员选择的权力，即时程序员可能选错</li>
<li>C++被设计为尽可能与C兼容，以提供从C平滑迁移到C++的能力</li>
<li>C++不提供平台特定的或不通用的功能</li>
<li>C++不提供不被使用的功能的过度开销（“零过度开销原则”）</li>
<li>C++被设计为不需要复杂的编程环境</li>
</ol>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>C++被广泛应用于软件行业，至今仍为有史以来最流行的语言之一。</p>
<p>其应用领域包括系统软件，应用软件，设备驱动程序，嵌入式软件，高性能服务器和客户端应用程序，视频游戏等娱乐软件等等。</p>
<p>C++也被用于硬件设计中。</p>
<p><span style="color: #888888;"><strong>学习路线</strong></span></p>
<p>1. C++基础</p>
<p>《易学C++》<br />
《C++ Primer》<br />
《The C++ programming language》<br />
《C++ Coding Standards》<br />
《The C++ standard library》</p>
<p>2. C++进阶</p>
<p>《C++ Templates》<br />
《Effective STL》<br />
《Generic Programming and the STL》<br />
《The Design and Evolution of C++》<br />
《Inside the C++ Object Model》<br />
《Effective C++》<br />
《More Effective C++》<br />
《Design Patterns》<br />
《Modern C++ Design》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://www.mysql.com/">MySQL</a></li>
<li><a href="http://nginx.net/">Nginx</a></li>
<li><a href="http://subversion.tigris.org/">Subversion</a></li>
<li><a href="http://www.emule-project.net/">eMule</a></li>
<li><a href="http://code.google.com/p/v8/">V8</a></li>
<li><a href="http://www.zeroc.com/">ICE</a></li>
<li><a href="http://www.cse.wustl.edu/~schmidt/ACE.html">ACE</a></li>
<li><a href="http://www.linuxvirtualserver.org/">LVS</a></li>
<li><a href="http://android.git.kernel.org/">Android</a></li>
</ol>
<p><span style="color: #0000ff;"><strong>No.5 VB</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>Visual Basic(VB)是由Microsoft开发的包含IDE的事件驱动编程语言，它源自BASIC语言。<br />
VB拥有GUI和RAD系统，可以轻易的使用DAO、RDO、ADO连接数据库，或者轻松的创建ActiveX控件。<br />
程序员可以轻松的使用VB提供的组件快速创建应用程序。<br />
1991年4月，Visual Basic 1.0 for Windows问世，1992年9月Visual Basic 1.0 for DOS发布，最初的设计由Alan Cooper完成。<br />
1992年11月，VB2.0发布。它对于上一个版本的界面和速度都有所改善。<br />
1993年夏，VB3.0发布，分为标准版和企业版。其中包含一个数据引擎，可以直接读取Access数据库。<br />
1995年8月，VB4.0发布了32位和16位版本，其中包含了而对类的支持，从此逐步引入了面向对象的程序设计思想。它还引入了“控件”的概念，使得大量已经编好的VB程序可以复用。<br />
1997年2月，VB5.0发布，它包含了对用户自建控件的支持。VB 1.0~4.0都必须将源代码编译成VB伪代码后解释执行，而5.0以后VB支持编译成本地代码，但必须在VB运行库的支持下工作。<br />
1998年夏，VB6.0发布。VB6是VB.NET至今仍无法完全取代的版本。<br />
2001年，Visual Basic.NET和.NET Framework发布。由于其使用了新的核心和特性，所以很多VB程序员都要改写程序。<br />
2002年，Visual Basic.NET 2002(v7.0)问世，此后Visual Basic包含在Visual Studio套装中，并需要运行在.NET Framework环境下。<br />
2003年，Visual Basic.NET 2003(v7.1)推出。<br />
2004年，Visual Studio.NET 2005测试版本发布，包含了.NET Framework2.0的测试版本。<br />
2005年11月，Visual Basic 2005(V8.0)发布，其中Express版永久免费。Visual Basic 2005的显著优点是可以直接编写出Windows XP风格的控件。<br />
2008年2月，Visual Basic 2008(v9.0)发布。</p>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>VB主要用于开发Windows桌面程序和数据库应用程序，而VB.NET还可以用于企业级大型应用程序的开发。</p>
<p><span style="color: #888888;"><strong>学习路线</strong></span></p>
<p><a href="http://msdn.microsoft.com/"> MSDN</a><br />
《Programming Microsoft Visual Basic .NET》<br />
《Programming Microsoft Windows with Microsoft Visual Basic.NET》<br />
《Applied Microsoft.NET Framework Programming in VB.NET》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://www.dotnetnuke.com/">DNN</a></li>
</ol>
<p><span style="color: #0000ff;"><strong>No.6 C#</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>C#是由Microsoft于2001发布的一种面向对象且运行于.NET Framework之上的高级程序设计语言，之后成为Ecma和ISO规范。C#的开发由原来Borland的Turbo Pascal设计者Anders Hejlsberg所带领，最新版本为3.0，同.NET Framework 3.5在2007年一起发布。C#下一版本4.0正在开发中。</p>
<p>C#的设计目标：</p>
<ol>
<li>C#旨在设计成一种简单、现代、通用和面向对象的编程语言</li>
<li>C#支持以下软件工程原则：强类型检查、数组边界检查、未初始化变量引用检查和自动垃圾收集，以及软件健壮性、持久性和高编程效率</li>
<li>C#设计为开发可在分布式环境中部署的组件</li>
<li>源代码可移植，并支持C和C++程序员很容易的迁移到C#</li>
<li>支持国际化</li>
<li>支持在独立的或嵌入式系统环境中编程，从非常复杂的大型操作系统到功能有限的小型系统都支持</li>
<li>尽管C#程序在内存和处理能力等需求上有一定的经济性，但并不确保具有C或汇编语言一样的性能</li>
</ol>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>以Web开发和Windows程序开发为主</p>
<p><span style="color: #888888;"><strong>学习路线</strong></span></p>
<p><a href="http://msdn.microsoft.com/"> MSDN</a><br />
《Understanding .NET》<br />
《Programming C# 3.0》<br />
《Professional C#》<br />
《Essential C#》<br />
《C# 3.0 Design Patterns》<br />
《Microsoft C# Windows程序设计》<br />
《ASP.NET 3.5 Unleashed》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://www.nunit.org/">Nunit</a></li>
<li><a href="http://www.dotnetnuke.com/">DNN</a></li>
</ol>
<p><span style="color: #0000ff;"><strong>No.7 Python</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>Python的创始人为Guido van Rossum。1989年圣诞节期间，在阿姆斯特丹，Guido为了打发圣诞节的无趣，决心开发一个新的脚本解释程序，做为ABC语言的一种继承。<br />
可以说，Python是从ABC发展起来，主要受到了Modula-3（另一种相当优美且强大的语言，为小型团体所设计的）的影响，并且结合了Unix shell和C的习惯。<br />
Python哲学：</p>
<ol>
<li>Beautiful is bettern than ugly</li>
<li>Explicit is better than implicit</li>
<li>Simple is better than complex</li>
<li>Complex is better than complicated</li>
<li>Flat is better than nested</li>
<li>Sparse is bettern than dense</li>
<li>Readability counts</li>
</ol>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>由于Python功能强大，应用范围非常广泛，包括简单工具、数据处理、GUI程序开发、多媒体、科学计算、网络编程、游戏编程、企业应用等等</p>
<p><span style="color: #888888;"><strong>学习路线</strong></span></p>
<p>《A Byte of Python》<br />
《Core Python Programming》<br />
《Python源码剖析》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://www.djangoproject.com/">Django</a></li>
<li><a href="http://plone.org/">Plone</a></li>
<li><a href="http://www.zope.org/">Zope</a></li>
<li><a href="http://trac.edgewall.org/">Trac</a></li>
<li><a href="http://wxpython.org/">wxPython</a></li>
<li><a href="http://sourceforge.net/projects/bittorrent/">BitTorrent</a></li>
</ol>
<p><span style="color: #0000ff;"><strong>No.8 Perl</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>Perl是一种脚本语言，最初的设计者为Larry Wall，与1987年首次发布。<br />
Perl借取了C、sed、awk、shell scripting以及很多其他编程语言的特性，其中最重要的特性是它内部集成了正则表达式的功能，以及巨大的第三方代码库CPAN。<br />
Larry Wall持续监督着Perl核心语言的开发，包括即将推出的Perl 6。<br />
O&#8217;Reilly Media出版的《Programming Perl》封面是一匹骆驼，如今骆驼成为了Perl的象征。<br />
Perl哲学：There&#8217;s More Than One Way To Do It.</p>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>系统管理、数据处理和Web开发为主</p>
<p><span style="color: #888888;"><strong>学习路线</strong></span></p>
<p>《Programming Perl》<br />
《Learning Perl》<br />
《Professional Perl Development》<br />
《Perl for System Administration》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://www.cpan.org/">CPAN</a></li>
</ol>
<p><span style="color: #0000ff;"><strong>No.9 JavaScript</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>JavaScript是一种广泛应用于客户端Web开发的脚步语言，最初由Netscape的Brendan Eich设计并于1995年首次亮相。<br />
JavaScript是ECMAScript标准的一种方言，它是动态的、弱类型的、基于原型的、视function为一等公民的语言。</p>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>主要用于网页开发</p>
<p><span style="color: #888888;"><strong>学习路线</strong></span></p>
<p>《JavaScript The Definitive Guide》<br />
《Professional JavaScript for Web Developers》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://jquery.com/">jQuery</a></li>
<li><a href="http://www.extjs.com/">Ext JS</a></li>
<li><a href="http://code.google.com/webtoolkit/">GWT</a></li>
</ol>
<p><span style="color: #0000ff;"><strong>No.10 Ruby</strong></span></p>
<p><span style="color: #888888;"><strong>历史、发展与现状</strong></span></p>
<p>Ruby是一门面向对象的动态语言，最早由Yukihiro Mstsumoto于1995首次发布，它的灵感和特性来自Perl、Smalltalk、Eiffel、Ada以及Lisp。<br />
由Ruby语言本身还发展处了JRuby、IronRuby等其他平台的Ruby语言替代品。<br />
Ruby的理念是强调人性化，非常直观，按照编程的人认为它应该的方式运行。</p>
<p><span style="color: #888888;"><strong>应用领域</strong></span></p>
<p>以Web开发为主，也用于系统管理、数据处理和游戏脚本等领域</p>
<p><span style="color: #888888;"><strong>学习路线</strong></span></p>
<p>《Programming Ruby》<br />
《Agile Web Development with Rails》<br />
《The Ruby Way》<br />
《Ruby for Rails》<br />
《Design Patterns in Ruby》</p>
<p><span style="color: #888888;"><strong>开源项目</strong></span></p>
<ol>
<li><a href="http://rubyonrails.org/">Ruby on Rails</a></li>
<li><a href="http://merbivore.com/">Merb</a></li>
<li><a href="http://cruisecontrolrb.thoughtworks.com/">CruiseControl.rb</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://rubylog.com/top10-programming-languages/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
