Thursday, July 22, 2010

不错的推销分析

Ray Kurzweil如何推销他的伪科学

作者:GeoffreyJames

http://blogs.bnet.com.cn/?uid-1889-action-viewspace-itemid-14731

Friday, July 16, 2010

fwd: DB2开不开源,对中国没有任何意义

http://blog.csdn.net/netchecking/archive/2008/06/24/2582632.aspx
北京海纳互联网研究中心

最近,有消息称,ibm准备开源DB2,国人振奋,一个商业数据库巨擎终于要开放源代码了,中国人终于可以照抄国外的核心代码了。

记得05年的时候,我在中国与mysql创始人见面,当时我问他为什么会有勇气开源核心代码,他说了2个原因,以前mysql没有名气,只有加入开源社区,才会得到人们的认可;现在Mysql已经做得很好,之所以还是开源,是因为就是开源了,

别人也得不到真正的核心技术,真正有价值的设计思想,而不是代码。能从代码摸到核心设计思想,其难度不是人类能所为。就和诸葛亮指挥了一个成功的战役,整个战场都是开源的,每个士兵都知道战场的细节,但是你不是说参加了战斗,就能成为诸葛亮的。

中国的技术界一直琢磨怎么去抄袭,而不是踏下心来做好事情,总对别人开源什么感兴趣,想成为诸葛亮不是靠抄,而是靠踏实去研究,去实践,去总结。

推荐:数据库时代的终结意味着什么?

推荐:数据库时代的终结意味着什么?
2006-12-31 Cbsi中国·PChome.net 类型: 转载 责编: 江海明 分享至微博



说实话,作为一名想在数据库此领域长期发展的DBA,听到这种声音很吃惊,当然也不能苟同。

以数据库为核心的软件时代已经过去,数据库时代早已结束,当我看到J2EE征途中那么多人在对象和数据库之间彷徨痛苦ing的时候,我想我该出来喊一声了。

其实这句话在几年前肯定有人喊过,因为中间件时代的来临,实际意味着数据库时代终结,正所谓一山无二虎:如果你重视数据库,你的J2EE系统就无法完全面向对象,只有你忽视数据库,你的系统才有可能完全迈向面向对象,至于数据库性能调优等特定功能都可交由EJB容器或O/R Mapping工具实现。

很多年前,包括我自己在内的大部分企业程序员都是从数据库开始我们的职业生涯,最早的是dBase/FoxPro,后来有了 SQL系列数据库, Oracle将数据库时代推向了顶峰。

每当有一个新项目时,第一步就是首先设计出数据表结构(Table Schema),然后开始使用SQL语句实现业务逻辑,这种开发模式一直重复,就是后来加入了DelPhI/VB,他们也只是承担图形显示实现,这种C/S结构带来最大问题是:非常难于维护,修改起来,迁一动百。

软件的生命在于运动,当它需要发展时,最棒的软件人员如果对他也束手无策,这是谁的悲哀?

现在更多人开始接受B/S结构,但是他们中很多人还没有真正明白为什么需要B/S结构,B/S代表的多层架构才是真正目的(因此,伪多层的B/S系统遍地皆是)。

多层架构实际是将以前系统中的显示功能、业务运算功能和数据库功能完全分开,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。

一. 从设计上说:由于实现层次完全分离,业务运算功能成为一种中间功能(中间层),它不依赖具体的表现层技术(Jsp/Html applet等),也不依赖具体数据库技术(Oracle/SQL Server),业务运算功能运行在J2EE应用服务器中,当我们的业务运算功能不再依赖数据库时,是否意味着数据库已经不是重点?

二. 当然,多层结构带来了性能问题:客户端访问数据库中的数据时,通常需要经过多个层次,非常耗费性能, 如何尽量减少数据库访问是J2EE应用系统首要解决的问题,使用存储过程并没有解决这个问题,存储过程的执行还是属于后端,并没有缩短客户端请求所要经历的坎坷路途。

解决性能问题的根本解决之道是使用对象缓存,现在, 64位CPU提供的巨大内存空间为单台缓存计算提供了硬件基础,更重要的是,这种缓存计算是可伸缩的,通过集群的缓存机制(如JBossCache), 通过增加应用服务器的数量,可以提高整个业务逻辑层的缓存计算能力,抛弃过去那种为内存斤斤计较的老思维吧。

三. 在系统分析之初是否首先需要数据表设计呢?回答是否定的, 以UML为代表面向对象的分析设计方法已经成为强大工具,随着面向模型驱动分析设计(MDA)的普及, 面向数据库分析方法正在逐步被抛弃,拥有深厚传统数据库分析习惯的程序员必须面对和接受这种挑战。

纵观整个J2EE系统开发过程,数据库已经从过去的中心位置降为一种纯技术实现,数据库只是状态持久化的一种手段(文件是另外一种实现手段);什么是持久化?这是相对于内存缓存状态而言,持久化就是当内存断电情况下能永久保存状态数据,但是如果J2EE应用服务器是7X24小时集群运行;几乎永不当机,是否有持久化的必要呢?

很显然,数据库已经沦为与操作系统中文件系统同样的层面,以它为中心的时代真的结束了,IBM早期将DB2数据库开源已经强烈向我们昭示这点。

对于J2EE初学者来说,尽早抛弃过去的两种影响:过程语言编程习惯和以数据库为中心的设计习惯,从全新的面向对象角度(OOA、OOD和OOP、AOP)来设计开发你的J2EE系统,J2EE设计开发三件宝:Model、Patterns和Framework。

以上不只是理论,而是我每天正在做的,如果你也是或赞同请广为传播,唤醒更多彷徨痛苦的初学者。

Labels:

Friday, July 02, 2010

MYSQL is not suitable for transaction, POSTGRESQL is

MySQL was built for speed, to the detriment of everything else. SQL standard features like transactions, referential integrity and others have been grafted over only after considerable arm twisting.

However, it is only fast at low concurrency levels, and reports of instability, low robustness and scalability keep coming out.

PostgreSQL was built strictly following the ACID model, with an emphasis on data integrity and SQL standard compliance, speed notwithstanding. It then underwent optimizations and speedups, while at the same time adding new features to its already large set.

Today it is robust, standards compliant and well featured. While still being relatively slow at low concurrency levels, it scales well with increasing load levels