从架构特点到功能缺陷,带你重新认识分析型分布式数据库
2018-05-07 08:55:26本文会将OLAP类场景的分布式数据也纳入进来,从两个维度对“分布式数据库”进行拆解,第一部分会横向谈谈不同的“分布式数据库”,把它们分为五类并对其中OLAP场景的三类做概要分析;第二部分结合NoSQL与NewSQL的差异,纵向来谈谈OLTP场景“分布式数据库”实现方案的关键技术要点。
随着大规模互联网应用的广泛出现,分布式数据库成为近两年的一个热门话题。同样,在银行业主推X86限制主机与小型机的背景下,传统的单机数据库逐渐出现了一些瓶颈,马上会面临是否引入分布式数据库的问题。
近期,我在个人公众号就“银行引入分布式数据库的必要性”做过一些展望,并收到了一些朋友的反馈,除了对分布式数据库具体技术探讨外,还有一类很有趣的建议,“能不能也讲讲Teradata、GreENPlum这类MPP,这些也是分布式数据库,但老板总是认为OLTP场景下的才算数”。
的确,为了解决OLAP场景需求,其实很早就出现了分布式架构的产品和解决方案,其与目前的OLTP方案有很多共通的地方。而且我相信,今后OLAP和OLTP两个分支技术的发展也必然是交错前行,可以相互借鉴的。
鉴于此,本文会将OLAP类场景的分布式数据也纳入进来,从两个维度对“分布式数据库”进行拆解,第一部分会横向谈谈不同的“分布式数据库”,把它们分为五类并对其中OLAP场景的三类做概要分析;第二部分结合NoSQL与NewSQL的差异,纵向来谈谈OLTP场景“分布式数据库”实现方案的关键技术要点,是前文的延伸,也是分布式数据库专题文章的一个总纲,其中的要点也都会单独撰文阐述。
首先,我们从横向谈谈不同的“分布式数据库”:
一、万法同宗RDBMS
1990年代开始,关系型数据库(RDBMS)成为主流,典型的产品包括Sybase、Oracle、DB2等,同期大约也是国内IT产业的起步阶段。RDBMS的基本特征已有学术上的定义,这里不再赘述。
但从实际应用的角度看,我认为有两点最受关注:
而后出现的各种“分布式数据库”,大多都是在这两点上做权衡以交换其他方面的能力。
“数据库”虽然有经典定义,但很多大数据产品或许是为了标榜对传统数据库部分功能的替代作用,也借用了“数据库”的名号,导致在实践中这个概念被不断放大,边界越来越模糊。本文一个目标是要厘清这些产品与经典数据库的差异与传承,所以不妨先弱化“数据库”,将其放大为“数据存储”。
那么怎样才算是“分布式数据存储”系统?
“分布式”是一种架构风格,用其实现“数据存储”,最现实的目的是为了打开数据库产品的性能天花板,并保证系统的高可靠,进一步展开,“分布式数据库”的必要条件有两点:
通过增加机器节点的方式提升系统整体处理能力,摆脱对专用设备的依赖,并且突破专用设备方案的性能上限。这里的机器节点,通常是要支持X86 服务器 。
在单机可靠性较低的前提下,依靠软件保证系统整体的高可靠,又可以细分为“数据存储的高可靠”和“服务的高可靠”。总之,任何单点的故障,可能会带来短时间、局部的服务水平下降,但不会影响系统整体的正常运转。
将这两点作为“分布式数据库”的必要条件,我大致归纳了一下,至少有五种不同的“分布式数据库”:
注:也许有些同学会提到Kafka、Zookeeper等,这些虽然也是分布式数据存储,但因为具有鲜明的特点和适用场景,无需再纳入“数据库”概念进行探讨。
这五类中,前两类以支持OLTP场景为主,后三类则以OLAP场景为主。我将按照时间线,主要对OLAP场景下的三类进行概要分析。
二、OLAP场景下的分布式数据库
1990-2000年代,随着应用系统广泛建设与深入使用,数据规模越来越大,国内银行业的“全国大集中”基本都是在这个阶段完成。这期间,RDBMS得到了广泛运用,Oracle也击败Sybase成为数据库领域的王者。
在满足了基本的交易场景后,数据得到了累积,进一步的分析性需求自然就涌现了出来。单一数据库内同时支持联机交易和分析需求存在很多问题,往往会造成对联机交易的干扰,因此需要新的解决方案。这就为MPP崛起提供了机会。
MPP(Massively Parallel Processing)是指多个处理器(或独立的计算机)并行处理一组协同计算[1]。
为了保证各节点的独立计算能力,MPP数据库通常采用ShareNothing架构,最为典型的产品是Teradata(简称TD),后来也出现Greenplum(简称GPDB)、Vertica、Netezza等竞争者。
架构特点:
MPP是多机可水平扩展的架构,符合“分布式”的基本要求,其中TD采用外置集中存储而GPDB直接使用本地磁盘,从这点来说GPDB是更彻底的Share Nothing架构。
考虑到TD商业策略上采用一体机方案,不具有开放性,而GPDB具有较高的开源程度,下文中通过分析后者架构特点来分析MPP工作机制。
GPDB属于主从架构[2],Slave称为Segment是主要的数据加工节点,是在PostgreSQL基础上的封装和修改,天然具备事务处理的能力,可进行水平扩展;集群内有唯一Active状态的Master节点,除了元数据存储和调度功能外,同时承担一定的工作负载,即所有外部对集群的数据联机访问都要经过Master节点。
在高可靠设计方面,首先设置了Standby Master节点,在Master节点宕机时接管其任务,其次将Segment节点则细分为两类不同角色Primary和Mirror,后者是前者的备节点,数据提交时在两者间进行强同步,以此保证Primary宕机时,Mirror可以被调度起来接替前者的任务。
数据分析性需求对IT能力的要求包括:
MPP较好的实现了对上述能力的支撑,在前大数据时代得到了广泛的应用,但这个时期的数据总量相对仍然有限,普遍在TB级别,对应的集群规模也通常在单集群百节点以下。
随着数据价值关注度的不断提升,越来越多的数据被纳入企业分析范围;同时实际应用中考虑到数据存储和传输成本,往往倾向于将数据集中在一个或少数几个集群中,这样推动了集群规模的快速增长。
在大规模集群(几百至上千)的使用上,MPP从批处理和联机访问两个方面都显现了一些不足。以下内容主要借鉴了Pivotal(GPDB原厂)的一篇官方博客[3]。
注:有位同学给出的译文也具有较好的质量,推荐阅读[4]。
缺陷:
MPP架构下,工作负载节点(对GPDB而言是Segment节点)是完全对称的,数据均匀的存储在这些节点,处理过程中每个节点(即该节点上的Executor)使用本地的CPU、内存和磁盘等资源完成本地的数据加工。这个架构虽然提供了较好的扩展性,但隐藏了极大的问题——Straggler,即当某个节点出现问题导致速度比其他节点慢时,该节点会成为Straggler。
此时,无论集群规模多大,批处理的整体执行速度都由Straggler决定,其他节点上的任务执行完毕后则进入空闲状态等待Straggler,而无法分担其工作。导致节点处理速度降低的原因多数是磁盘等硬件损坏,考虑到磁盘本身的一定故障率(根据Google统计前三个月内2%损坏率,第二年时达到8%)当集群规模达到一定程度时,故障会频繁出现使straggler成为一个常规问题。
由于MPP的“完全对称性”,即当查询开始执行时,每个节点都在并行的执行完全相同的任务,这意味着MPP支持的并发数和集群的节点数完全无关。根据该文中的测试数据,4个节点的集群和400个节点的集群支持的并发查询数是相同的,随着并发数增加,这二者几乎在相同的时点出现性能骤降。
传统MPP的联机查询主要面向企业管理层的少数用户,对并发能力的要求较低。而在大数据时代,数据的使用者从战略管理层转向战术执行层乃至一线人员,从孤立的分析场景转向与业务交易场景的融合。对于联机查询的并发能力已经远超MPP时代,成为OLAP场景分布式数据库要考虑的一个重要问题。
除上述两点以外,GPDB架构中的Master节点承担了一定的工作负载,所有联机查询的数据流都要经过该节点,这样Master也存在一定的性能瓶颈。同时,在实践中GPDB对数据库连接数量的管理也是非常谨慎的。在我曾参与的项目中,Pivotal专家给出了一个建议的最大值且不会随着集群规模扩大而增大。
综上,大致可以得出结论,MPP(至少是GPDB)在集群规模上是存在一定限制的。
2000-2010年代,大多数股份制以上银行和少部分城商行都建立了数据仓库或ODS系统,主要采用了MPP产品。可以说,这十余年是MPP产品最辉煌的时代。到目前为止,MPP仍然是银行业建设数据仓库和数据集市类系统的主要技术选择。为了规避MPP并发访问上的缺陷以及批量任务对联机查询的影响,通常会将数据按照应用粒度拆分到不同的单体OLTP数据库中以支持联机查询。
2、Hadoop生态体系
MPP在相当长的一段时期内等同于一体机方案(以TD为代表),其价格高昂到普通企业无法承受,多数在银行、电信等行业的头部企业中使用。2010年代,随着大数据时代的开启,Hadoop生态体系以开源优势,获得了蓬勃发展和快速普及。
Hadoop技术体系大大降低了数据分析类系统的建设成本,数据分析挖掘等工作由此步入“数据民主化”时代。在Hadoop生态体系中,分析需求所需要的能力被拆分为批量加工和联机访问,通过不同的组件搭配实现。批量加工以MapReduce、Tez、Spark等为执行引擎,为了获得友好的语义支持,又增加了Hive、SparkSQL等组件提供SQL访问接口。
联机访问部分,则从早期Hive过渡到Impala、Hawk以及Kylin、Presto等方案逐渐降低了访问延时。
架构特点:
Hadoop生态体系下HDFS、Spark、Hive等组件已经有很多文章介绍,本文不再赘述。总的来说,其架构的着力点在于数据高吞吐处理能力,在事务方面相较MPP更简化,仅提供粗粒度的事务管理。
缺陷:
Hadoop也有其明显的缺陷,主要是三点:
MPP的拥护者往往会诟病Hadoop计算引擎执行效率低。的确,在同等规模的集群执行相同的数据加工逻辑,即使与Spark对比,MPP所耗费的时间也会明显更少些[3],其主要的原因在于两者对于数据在磁盘和内存中的组织形式不同。
MPP从RDBMS而来(例如Vertica和GPDB都是基于PostgreSQL开发),对数据的组织形式更贴近传统方式,按区、段、块等单位组织,对数据进行了预处理工作以提升使用时的效率;Hadoop生态体系以HDFS文件存储为基础,HDFS并不像传统数据库那样独立管理一块连续的磁盘空间,而是将数据表直接映射成不同的数据文件,甚至表分区也以目录、文件等方式体现。
HDFS最简单的txt格式干脆就是平铺的数据文件,处理过程难免要简单粗暴一些,但随着Avro、ORCFile、Parquet等很多新的存储格式相继被引入,基于HDFS的批处理也更加精细。从整体架构来看,Hadoop更加看重大数据量批量处理的吞吐能力。
同时,Hadoop具备MPP所缺失的批量任务调整能力,数据的多副本存储使其具有更多“本地化”数据加工的备选节点,而且数据加工处理与数据存储并不绑定,可以根据节点的运行效率动态调整任务分布,从而在大规模部署的情况下具有整体上更稳定的效率。相比之下,MPP在相对较小的数据量下具有更好的执行效率。
在长期的实践中,企业级市场的主流集成商针对EDW项目沉淀了一套固定的实施方法,与MPP特性相匹配,但Hadoop并不能与之无缝对接。一个最典型的例子是历史数据的存储,传统方法是采用“拉链表”的形式,即对于当前有效的数据会记录其生效的起始时间,在数据被更改或删除后,在该行记录的另外一列记录失效时间。这样,当前数据即变更为历史数据,通过这种增量的表述方式,节省了大量的存储空间和磁盘IO。
可以看出,拉链表的设计思想其实与基于时间戳的MVCC机制是相同的。
HDFS作为Hadoop的存储基础,其本身不提供Update操作,这样所有在数据操作层面的Update最终会被转换为文件层面的Delete和Insert操作,效率上显著降低。据我所知,在很多企业实践中会将这种增量存储转换为全量存储,带来大量数据冗余的同时,也造成实施方法上的变更。
对于联机查询场景,最常见的是SQL on Hadoop方案,将Impala、HAWQ等MPP引擎架设在HDFS基础上,批量数据与联机查询共用一份数据。MPP引擎借鉴了MPP数据库的设计经验,相对Hive等组件提供了更低的延迟。但存在一个与MPP相同的问题,即并发能力不足。
通过一些项目测试中,我发现在大体相同的数据量和查询逻辑情况下, Impala并发会低于GPDB。其原因可能是多方面的,不排除存在一些调优空间,但在系统架构层面也有值得探讨的内容。例如在元数据读取上,Impala复用了Hive MetaStore,但后者提供的访问服务延时相对较长,这也限制了Impala的并发能力[7]。
3、Like-Mesa
Mesa是Google开发的近实时分析型数据仓库,2014年发布了论文披露其设计思想[5],其通过预聚合合并Delta文件等方式减少查询的计算量,提升了并发能力。
Mesa充分利用了现有的Google技术组件,使用BigTable来存储所有持久化的元数据,使用了Colossus (Google的分布式文件系统)来存储数据文件,使用MapReduce来处理连续的数据。
Mesa相关的开源产品为Clickhouse[6](2016年Yandex开源)和Palo[7](2017年百度开源)。
特点:
目前ClickHouse的资料仍以俄语社区为主,为便于大家理解和进一步研究,下面主要以Palo为例进行说明。
Palo没有完全照搬Mesa的架构设计的思路,其借助了Hadoop的批量处理能力,但将加工结果导入到了Palo自身存储,专注于联机查询场景,在联机查询部分主要借鉴了Impala技术。同时Palo没有复用已有的分布式文件系统和类BigTable系统,而是设计了独立的分布式存储引擎。虽然数据存储上付出了一定的冗余,但在联机查询的低延迟、高并发两方面都得到了很大的改善。
Palo在事务管理上与Hadoop体系类似,数据更新的原子粒度最小为一个数据加载批次,可以保证多表数据更新的一致性。
整体架构由Frontend和Backend两部分组成,查询编译、查询执行协调器和存储引擎目录管理被集成到Frontend;查询执行器和数据存储被集成到Backend。Frontend负载较轻,通常配置下,几个节点即可满足要求;而Backend作为工作负载节点会大幅扩展到几十至上百节点。数据处理部分与Mesa相同采用了物化Rollup(上卷表)的方式实现预计算。
Palo和ClickHouse都宣称实现了MPP>
PHP高级程序员要懂什么?

程序员可以分为很多种,像Unix程序员、Windows程序员,或是C++程序员、Delphi程序员,等等。 今天我想谈的是Web程序员,一名真正的Web程序员应该懂得那些方面的知识,应该注意学习哪些东西。 也许有些朋友会说,我知道Asp、Jsp,会做网站、会做bbs,这应该叫Web程序员了吧。 确实,我承认,这些技术是一名Web程序员应该具备的;但是,你如果仅懂得这些,却只能叫做Asp程序员、Jsp程序员,而不是真正意义上的Web程序员。 现在的世界是属于Internet的,大部分的应用基于Internet,大家可以想想,像Yahoo、Microsoft、Amazon那样的网站,其访问量之大、应用之复杂,需要什么样的技术才可以支撑,难道仅仅是硬件的功劳么。 我想在Windows平台下来谈谈Web程序员应该掌握的技术 1. 首先,就是上面提到的各种脚本,asp、jsp、php等等,这些东西大同小异,基本可以举一反三。 2. 数据库, 相信做Web的人肯定用过,像Access、Sql Server、Oracle。 很多人会用各种数据库,但是仅限于写一些sql,select、update、insert,用ADO来操作,如果这样,就算会用100种数据库又有什么用呢? 你应该考虑用户量、访问速度、内存消耗,这些东西和你的sql密切相关,我经常见到很多分页程序根本不去考虑数据库中有多少条数据,统统select出来,很明显,当你从数据库中查出1万条数据和100条数据,占用的内存是不同的。 另外,数据库连接池和事务机制是非常重要的,应该知道数据库用什么来保证事务,连接池如何实现,这些都是商务应用的关键。 譬如,目前很多的应用服务,像weblogic、MTS,都包含事务处理,可以说好的事务处理决定了他们的竞争力。 3. 组件技术 我想是现在的Web应用推动了组件技术的发展。 以前,从老式的静态库、动态库(dll),到现在的COM/DCOM,再到正在兴起中的Web Service;从单机调用,到基于内部网的分布式调用,到现在基于Internet的分布式计算。 现在的应用都是基于组件的n层结构,最明显的就是COM和JavaBean。 这些东西体现了软件架构的发展,以前是基于单机的应用,然后是C/S结构,到现在的B/S结构。 我记得李维曾经说过,程序员一定要注意软件技术的发展趋势,只有这样,才不至于被淹没在技术的洪流中。 我想,作为Web程序员,一定要明白COM的原理,如何实现这种调用、如何进行分布式调用。 说实话,我觉得COM还是比较复杂的,否则微软为什么要提供ATL和VB呢,要搞明白,应该学学C++,因为VC中提供的ATL库可以很明显的说明COM的内部运行机制。 4. 网络技术 这可以说是Web程序员最应该懂得东西。 起码,应该知道Web服务器的机制,要明白Http协议。 就拿IIS来说,要懂得web应用程序运行的进程安全和IIS的关系,懂得ISApi的作用。 如果有时间,就看看TCP/IP,看看winsock,这些都是底层的网络的东西。 我所说的这些都是基于微软技术下的东西,其他的像Java方面的东西都可以对照参考,就不多说了,这也是我这几年来的一些心得。 总之,学海无涯,每当接触一些新的东西,就会发现自己的不足,同时也就觉得基础知识的重要。 说实话,像我们做应用开发,用别人的东西,在现在这种情况下,新的技术层出不穷,稍不注意就会被甩开,这也是没有办法的事情。
PHP.JSP.ASP的区别
ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序。 ASP采用脚本语言VBScript(Java script)作为自己的开发语言。 PHP是一种跨平台的服务器端的嵌入式脚本语言。 它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。 它支持目前绝大多数数据库。 还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http: //)自由下载。 而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。 JSP是Sun公司推出的新一代网站开发语言,Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JSP,Java Server Page。 JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。 三者都提供在 HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。 但JSP代码被编译成 Servlet并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生。 在ASP 、PHP、JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。 普通的 HTML页面只依赖于Web服务器,而ASP 、PHP、JSP页面需要附加的语言引擎分析和执行程序代码。 程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。 ASP 、PHP、JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。 技术特点ASP:1. 使用VBScript 、 JScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序。 2. 无须compile编译,容易编写,可在服务器端直接执行。 3. 使用普通的文本编辑器,如Windows的记事本,即可进行编辑设计。 4. 与浏览器无关(Browser Independence), 客户端只要使用可执行HTML码的浏览器,即可浏览Active Server Pages所设计的网页内容。 Active ServerPages 所使用的脚本语言(VBScript 、 Jscript)均在WEB服务器端执行,客户端的浏览器不需要能够执行这些脚本语言。 Server Pages能与任何ActiveX scripting语言兼容。 除了可使用VB Script或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其它脚本语言,譬如REXX 、Perl 、Tcl等。 脚本引擎是处理脚本程序的COM(Component Object Model) 对象。 6. 可使用服务器端的脚本来产生客户端的脚本。 7. ActiveX Server Components(ActiveX 服务器组件 )具有无限可扩充性。 可以使用Visual Basic 、Java 、Visual C++ 、COBOL等程序设计语言来编写你所需要的ActiveX Server Component 。 PHP:1?数据库连接PHP可以编译成具有与许多数据库相连接的函数。 PHP与MySQL是现在绝佳的群组合。 你还可以自己编写外围的函数去间接存取数据库。 通过这样的途径当你更换使用的数据库时,可以轻松地修改编码以适应这样的变化。 PHPLIB就是最常用的可以提供一般事务需要的一系列基库。 但PHP提供的数据库接口支持彼此不统一,比如对Oracle, MySQL,Sybase的接口,彼此都不一样。 这也是PHP的一个弱点。 JSP:1?将内容的产生和显示进行分离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。 使用JSP标识或者小脚本来产生页面上的动态内容。 产生内容的逻辑被封装在标识和JavaBeans群组件中,并且捆绑在小脚本中,所有的脚本在服务器端执行。 如果核心逻辑被封装在标识和Beans中,那么其它人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的产生。 在服务器端,JSP引擎解释JSP标识,产生所请求的内容(例如,通过存取JavaBeans群组件,使用JDBC技术存取数据库),并且将结果以HTML(或者XML)页面的形式发送回浏览器。 这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。 2?强调可重用的群组件绝大多数JSP页面依赖于可重用且跨平台的组件(如:JavaBeans或者Enterprise JavaBeans)来执行应用程序所要求的更为复杂的处理。 开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者用户团体所使用。 基于组件的方法加速了总体开发过程,并且使得各种群组织在他们现有的技能和优化结果的开发努力中得到平衡。 3?采用标识简化页面开发Web页面开发人员不会都是熟悉脚本语言的程序设计人员。 JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容产生所需要的。 标准的JSP标识能够存取和实例化 JavaBeans组件,设定或者检索群组件属性,下载Applet,以及执行用其它方法更难于编码和耗时的功能。 通过开发定制化标识库,JSP技术是可以扩展的。 今后,第三方开发人员和其它人员可以为常用功能建立自己的标识库。 这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。 JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。 作为采用Java技术家族的一部分,以及Java 2EE的一个成员,JSP技术能够支持高度复杂的基于Web的应用。 由于JSP页面的内置脚本语言是基于Java程序设计语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。 作为Java平台的一部分,JSP拥有Java程序设计语言“一次编写,各处执行”的特点。 随着越来越多的供货商将JSP支持加入到他们的产品中,您可以使用自己所选择的服务器和工具,修改工具或服务器并不影响目前的应用。 应用范围ASP是Microsoft开发的动态网页语言,也继承了微软产品的一贯传统,只能执行于微软的服务器产品,IIS(Internet Information Server) (windows NT)和PWS(Personal Web Server)(windows 98)上。 Unix下也有ChiliSoft的组件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的群组合来扩充,Unix下的COM实现起来非常困难。 PHP3可在Windows,Unix,Linux的Web服务器上正常执行,还支持IIS,Apache等一般的Web服务器,用户更换平台时,无需变换PHP3代码,可即拿即用。 JSP同PHP3类似,几乎可以执行于所有平台。 如Win NT,Linux,Unix。 在NT下IIS通过一个外加服务器,例如JRUN或者ServletExec,就能支持JSP。 知名的Web服务器Apache已经能够支持JSP。 由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的执行平台。 虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。 从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。 性能比较有人做过试验,对这三种语言分别做回圈性能测试及存取Oracle数据库测试。 在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了*的回圈。 而ASP、PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒和84秒。 (参考PHPLIB)。 数据库测试中,三者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒,ASP则 需要 73 秒。 前景分析目前在国内PHP与ASP应用最为广泛。 而JSP由于是一种较新的技术,国内采用的较少。 但在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。 采用PHP的网站如新浪网(sina)、中国人(Chinaren)等,但由于PHP本身存在的一些缺点,使得它不适合应用于大型电子商务站点,而更适合一些小型的商业站点。 首先,PHP缺乏规模支持。 其次,缺乏多层结构支持。 对于大负荷站点,解决方法只有一个:分布计算。 数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,群组成二维数组。 而PHP则缺乏这种支持。 还有上面提到过的一点,PHP提供的数据库接口支持不统一,这就使得它不适合运用在电子商务中。 ASP和JSP则没有以上缺陷,ASP可以通过Microsoft Windowsd的COM/DCOM获得ActiveX规模支持,通过DCOM和Transcation Server获得结构支持;JSP可以通过SUN Java的Java Class和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。 三者中,JSP应该是未来发展的趋势。 世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。 比较出名的如IBM的E-business,它的核心是采用JSP/Servlet的Web Sphere。 它们都是通过CGI来提供支持的。 但去年10月后它推出了Enfinity,一个采用JSP/Servlet的电子商务Application Server,而且声言不再开发传统软件。 总之,ASP,PHP,JSP三者都有相当数量的支持者,由此也可以看出三者各有所长。 正在学习或使用动态页面的朋友可根据三者的特点选择一种适合自己的语言。
DMS 系列的功用有哪些?
完全满足管理的经济性要求a 充分考虑企业运营的经济性,总部、分支机构均可在本地局域网实现管理操作,无须专门设置宽带联网;b 总部及各分支机构无须时刻与网络连接,大力减少不必要开支;c 投资巨大的企业数据中心给用户带来了高效的数据传输便利,满足了企业以最小的代价实现最快速的传输要求;d 大容量的网络客户数据中心平台,企业无须专门设置服务器,极大地降低硬件购置及网络维护的成本;确保数据的及时性分散与集中实现完美结合a 确保数据的及时性完全由您掌握;b 总部、分支机构独立的数据库与网络客户数据中心的完美结合,实现异地数据查询、数据寄存、数据调用、数据分析等等网络环境的及时操作;c 实现网络数据的增量存储,总部可通过网络数据中心平台查询最及时的企业数据、信息;确保分支与总部的统一管理下的独立运作a 实现分支数据、资料完全与总部统一,分支机构无须重复设置;b 分支机构进行独立的进销存、财务一体化的管理;c 根据总部要求,实现对不同类型分支机构业务、财务运作的控制。 客户网络数据中心平台网络数据中心平台的构筑,应用国际最先进的虚拟网络技术,使速达DMS在功能上得以无限延伸,实现企业跨地域的管理,同时满足企业对网络通信及安全的要求。 对于网络通信,将从其易维护、速度、成本、扩展能力予以衡量。 并从网络、用户、数据等多方面保证安全要求。 a 网络客户数据中心平台充分考虑数据的安全性、稳定性、高效性、大容量;b 确保企业数据的及时性,使企业领导无论身处何地均可随时随地了解企业总部动态,任意分支机构的运作情况;c 数据中心平台使分布式管理功能得以无限扩充,更多的创新功能将不断地减轻企业管理的压力;d 专业的技术人员、高性能的专业设备保证网络及服务器系统具有抗攻击能力,防止外界的干扰和破坏;e 严格的用户认证机制,并通过严密的权限过滤机制,保证用户在其授予的权限内访问和管理系统;f 代表了当今网络发展的最新趋势,它综合了传统数据网络的性能优点(安全和 QoS )和共享数 据网络结构的优点(简单和低成本),能够提供远程访问,外部网和内部网的连接。
发表评论