类别归档:译林

外语文献翻译

RSS feed of 译林

科学可视化 vs. 信息可视化

Abstract (摘要)

While Scientific Visualization techniques are used for the clarification of well-known phenomena, Information Visualization techniques are used for searching for interesting phenomena. There are therefore important differences between the two fields of research. The two fields of research ...

继续阅读

IaaS vs. PaaS vs. SaaS云计算服务模式对比

各种形式的云计算服务如雨后春笋般不断涌现,而这些服务形式各有其优点和缺点。各式各样容易混淆的缩写词充斥其中,让人难以做出最佳选择。

云计算服务最主要的3种模式为IaaS,PaaS和SaaS,分别代表基础设施即服务,平台即服务以及软件即服务。当你仔细观察你会发现,从中做出选择的关键是公司的实际需求。

虚拟化技术、高速网络的普及与当今浏览器的功能使得这些服务成为可能。有了这些现成的服务,人们不再需要拥有自己的基础设施,甚至不再需要拥有自己的软件。当需要时,你可以随时从云端获取自己所需的东西。

理解这些“即服务"产品最简单的方式是从SaaS开始,这是最抽象的一层并且你现在可能已经在使用了,即使在个人层面上。SaaS的一个简单的例子就是在线邮件服务,例如Gmail。如果你使用Gmail,你并没有架设自己的邮件服务器。Google托管了这些服务器,你只需通过浏览器客户端访问服务。不过电子邮件只是你的公司使用的应用之一,目前还有许多商业用途的在线应用。

SaaS其实面向的是公司的终端用户并且很容易上手。服务提供商计算你的应用需要多少资源。服务提供商计算出需要多少服务器,虚拟机,网络设备,所有一切。你只需用浏览器访问就可以了。

IaaS位于云图谱的另外一端。在此场景中,你需要维护控制你的网络环境,但是不想维护任何设备。你不想买服务器并且把它们放置在环境控制的机房里。相反,你只需找IaaS提供商申请虚拟机就可以满足这些需求。

你可以安装自己所需的任何软件。在后端,提供商在你需要时为你提供存储或者其他资源。这些因为虚拟化技术而变得简单,该技术将物理驱动器和你运行的虚拟机相互隔离开来。IaaS在Amazon EC2,IBM和许多其他提供商都有提供,但是你需要仔细抉择。

PaaS位于IaaS与SaaS之间。与SaaS不同,PaaS并不是一个完整的产品,它也不是像IaaS那样的白板(拉丁语:Tabula rasa)。PaaS为应用开发者提供钩子(hooks)和工具来为平台做定制开发。例如,微软的Windows Azure为开发者提供工具来开发移动app,社会化app,网站,游戏等等。你自己开发这些应用,但是需要使用提供商的API和工具并且使用Azure环境进行部署和运行。

In the end, SaaS and its many types may actually become so overused that we stop referring to it as a cloud thing. After all, even what we typically ...

继续阅读

Infobright数据仓库技术

Dominik S´ le¸ zak Infobright Inc. 波兰 slezak@infobright.com
Victoria Eastwood Infobright Inc. 加拿大 victoriae@infobright.com

1. 引言

Infobright社区版 (ICE,开源) 与 Infobright 企业版 (IEE,商业许可) 能够对TB数量级的数据执行即席查询[13]。MySQL 可插拔式的存储引擎架构可以帮助用户轻松入门,并提供丰富的数据库功能[19]。基于数据压缩 (参见[11]),列式数据存储 (参见[16]),自适应查询处理 (参见[9]),以及粗糙集理论(参见[22]) 的内部机制为我们的数据仓库应用提供了良好的性能和可伸缩性,既不需要专门的硬件,也不需要高级的调优。

我们方法的关键在于将数据划分为“粗糙行”,每一个粗糙行由64K个原始行组成。我们自动地对粗糙行加上标签,这些标签是与它们数据列值相关的复合信息,通常还包括多列及多表的对应关系。利用这种方式(首先在[27]中被拟定),我们创造出新的信息系统(参见[8]),其对象对应于粗糙行和各种类型粗糙信息的属性。在这种新框架下,数据库操作可以得到有效的支持,并且在粗糙信息不充分时对实际数据的访问也可用。ICE和IEE都基于使用粗糙信息最小化和最优化数据访问的若干算法。

论文的组织结构如下:第2和第3章介绍体系结构和技术的基础知识。第4章展示两个关于粗糙信息结构的例子。第5和第6章描述两个关于核心方法的例子:迭代式的粗糙/精确查询过程和对粗糙信息的无缝式重计算。第7和第8章讨论两个研究项目的例子:关于近似查询的调查和智能数据组织。第9章总结全文。

2. INFOBRIGHT体系结构

Infobright数据仓库软件的ICE与IEE版本都基于同样的体系结构组件。当然,它们在功能上(IEE支持数据的增加/更新/删除操作),以及对操作系统的支持上(ICE同时支持Linux和Windows)有不同之处。IEE商业认购版(在论文中未做讨论)可能在大规模工业应用上更具有优势。另一方面,ICE则提供了一个可供外部开发人员贡献代码的框架。关于ICE与IEE对比的进一步讨论可以参考Infobright论坛。

图1在尽可能高的层次上模拟了我们的体系结构。MySQL管理服务用来做连接池。MyISAM引擎则用来存储诸如表定义、视图和用户权限等目录信息。我们有一套快速批量数据加载的方法。IEE额外地支持更多的MySQL特有的加载机制。我们使用MySQL的查询重写和解析,但是替换了查询优化的主要部分。MySQL优化器作为一个与MySQL存储引擎接口相连的子模块被保留。我们在特殊场合,尤其是在IEE中支持数据的增加/更改/删除操作时使用它。

我们使用“知识网格”这个术语来对第一章中提到过的粗糙信息进行定址。我们对于这个术语的解释不同于其在网格计算或者语义网络[3]中的定义,虽然知识网格作为查询引擎和数据之间的媒介时在某种程度上与它们有一些相似之处。Infobright知识网格中的元素被称为“知识节点”,不要与网格/分布式/并行体系结构[10]相混淆。在本文中,我们只提供了关于知识节点的几个例子。如果想了解关于这个领域的更多细节,可以参照[29]。

ICE 和 IEE的核心组件与MySQL集成

Figure 1 ICE 和 IEE的核心组件与MySQL集成。专用于可插拔存储引擎的标准 MySQL 优化器被整合为更高级的Infobright优化器和执行器的一部分。

图1底部的“数据包”通过对数据执行垂直和横向的分解得到。如第一章中所述,我们将行分组为粗糙行。对于每一个粗糙行,我们分别对每一列进行存储。由此得到的包通过[28]中描述的算法进行分解和管理。现在,数据行只按照粗糙行的形式进行组织。我们在第8章中讨论在未来关于这方面的扩展。

知识网格包含于数据包直接相连的数据包节点。数据包节点提供最基本的统计并能够顺利地对数据包进行访问。它们的用法与一些其他的数据库体系结构[18]部分类似。围绕知识网格额更高级的组件和方法是Infobright所独有的。 ...

继续阅读

使用amCharts绘制统计图表(柱状图、折线图、3D图)

amCharts

amCharts是一款优秀的数据可视化js图形库,包括Javascript Charts, Javascript Stock Chart和Interactive Javascript Maps三类产品,本文简单介绍一下Javascript Charts的用法。

amCharts的安装:

从amCharts官方网站下载所需的图形组件,将压缩包解压至备选目录。把amcharts文件夹从下载到的zip文件中拷贝至工作目录下。然后使用你熟悉的编辑器创建一个简单的html文件,例如命名为columnchart.html。

接下来,我们打开文件开始编码。

添加容器:

页面所需的唯一HTML元素就是图表的容器。我们像这样来添加一个DIV:

<body>
    <div id="chartdiv"></div>
</body>

JavaScript图表将使用这个对象作为绘图容器。请注意我们将其命名为"chartdiv",这个名字后面会用到。

引用JavaScript库文件

在页面的head部分我们需要添加amCharts JavaScript库文件的引用。由于V3 amCharts库被拆分成了几个文件,为了节省几个kb空间—你需要添加amchart.js主文件,并根据你的需求来决定添加一个或者多个图表文件。柱形图属于序列图的一种,因此我们包含这两个js文件:

<script src="amcharts/amcharts.js" type="text/javascript"></script>
<script src="amcharts/serial.js" type="text/javascript"></script>

注意:添加顺序很重要,amcharts.js应该放在最前面。

我们需要一些示例数据来生成图表,在此我们添加一个简单的JavaScript数组对象:

<script type="text/javascript">

	var chartData = ...

继续阅读

最适合初学者入门的5种编程语言

如果你想学习编程,你决定选择的第一门编程语言与你想要学什么、想要用这个技能做些什么以及最终要达到什么目的有很大关系。尽管如此,某些编程语言比其他语言要好学,拥有一个致力于教学的社区,或者当你学会它的时候提供更多有用的技能。下面是根据大家的提名总结出的5种最佳编程语言候选名单。

应该清楚的是,我们并不是在试图绝对化地解决你应当首先学习哪门编程语言这个问题。每个人都有不同的观点,并且,基于你特定的学习动机,也许这些都不适合你。由于篇幅所限,我们不可能把征集到的所有编程语言在此一一详细介绍。也就是说,这里列出的5种语言是提名中最流行的,排名不分先后。

Java

Oracle公司的Java是互联网历史最悠久、最坚挺和最具影响力的编程语言之一。你可以在线上线下、各种平台、操作系统和设备应用的核心部分发现Java的身影。它是一门极具特色的基于类、面向对象的编程语言,被设计为能够在尽可能多的平台上移植和运行。出于这个原因,它也是世界上最流行的编程语言之一,如果你对编程感兴趣,Java非常具有学习价值。Java的短板是由于其可移植性和适用性,它变得非常难以把握,并且难以有效和高效地编程。

Java并不是一门完美的语言——许多学校和课堂以C或者C++开始教学,因为Java从这些早期语言中继承了许多语法。坚持首选Java作为第一门编程语言的学习者必须注意Java迫使你以程序员的方式思维——逻辑和分析式思考,并且真正把握计算机是如何处理信息的才行。这是一些基本的概念,在你转向其它语言或技术时可以为你提供帮助。

Ruby

Ruby是一种动态、开源、面向对象的编程语言,由计算机科学家松本行弘(MatsumotoYukihiro)于上个世纪90年代研发,这使得它成为广泛使用的最年轻的语言之一。它的语法容易阅读、仅仅由人类编写,不需要学习一大堆基本的命令和特殊的“单词表”就可起步。尽管这个语言本身是面向对象的,它也支持过程化、函数式和命令式编程,这也是造就了其非凡灵活性的因素之一。

Ruby有一个比较易学的好名声,通过官网上的20分钟快速入门指引,你可以很快了解和熟悉 ...

继续阅读