- 浏览: 252091 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
无它唯勤:
...
Spring Ioc AOP -
dubaopeng:
挺好的,拿去改改!
java 解析csv文件 -
灵程大哥:
先试一下,看行不行
java 判断文本文件编码 -
pxjianke:
谢谢兄弟。我现在在测试插入千万级数据。做测试。这个太有用了。
Oracle 高速批量速插入数据 解决方案
随着用户的爆发量增长,在某个凌晨醒来时,你发现:数据库已死。
传统软件系统实则应该叫数据库软件系统,是一个数据库系统,开发这样的系统非常简单,成本 也非常低廉,只要根据需求先设计好数据表结构,然后,就找一些大学毕业生写大量SQL语句,虽然还使用 JAVA/PHP/.NET等语言,但实际上这些语言只是将SQL送往数据库执行的运输工,没有什么价值和地位。
所以,这样的系统运行在互联网环境下以后,主要负载就集中在数据库的SQL运行上,也就是说:整个软件系统性能关键点就集中在数据库上了,数据 库是性能主角,是王者;虽然你购置了昂贵的Websphere/weblogic等应用服务器,但是由于Java只是运输工,根本起不到性能上负载分担的 作用。
著名的社区网站MySpace就是因为一个好的idea,用户疯狂增长,但是系统却不能平滑承受增长的用户访问,这些用户访问网站缓慢、无法访 问甚至丢失数据,他们经过几次伤筋动骨的架构升级,在微软SQLServer直接技术支持下, 好容易才勉强应付过去。看看他们痛苦经历,你是否也愿意再来一次呢?详细情况: http://www.jdon.com/jivejdon/thread/34601.html
从中可以看出,数据库性能微调和挖潜总是有限度的,对数据库性能优化提高性能的步伐永远赶不上用户增长量, 有人也提出数据库集群的概念,其实数据库集群是一个骗人概念,一般只是备份,在集群数量和failover上有制约, 否则,数据库巨头Oracle不会跑到JavaEE阵营摇旗呐喊,还最早推出EJB3服务器,并扬言要收购JavaEE过去老大 Bea Weblogic。
很显然,数据库成已经为软件系统的主要性能瓶颈了,单纯依靠数据库自救的方式已经行不通,是宣布数据库退出主角时候了,那么由谁来宣布:教皇数据库已死?无疑是Java。
Java社区早在本世纪初就提出中间件概念,用以取代数据库地位,实则就是将软件系统主要负载从数据库上转移到中间件服务器上,分担负载。 也就是说:Java社区提出:既然数据库已经成为瓶颈,修修补补也无济于事,不如放弃它,不再依赖它。
也就是说:Java不再做SQL的运输工,不再是跑龙套的了,而是主角,那么如何让Java成为主角呢?那必须依赖对象这个概念,对象是生活在中间件服务器内存中,它又是数据库数据的业务封装,它和数据库有着 千丝万缕的关系,但是它又和关系数据库存在天然矛盾,两者水火不容。
过去,我们是将业务逻辑写成SQL送往数据库执行,导致数据库成为业务逻辑主要运行瓶颈,那么,如果我们将 业务逻辑用对象概念表达,而不是SQL,那么我们的业务逻辑就围绕内存中的对象反复计算,这样,负载不是集中在 对象运行的中间件服务器上(也就是应用服务器Weblogic/websphere/JBoss/Tomcat)?而对象/中间件都是用Java 语言表达的,无疑,这样的架构,Java才成为主角。
再进一步想想:如果我们从软件系统开始之初,就使用对象分析设计,不与数据库沾边,整个流程就完全OO,分析设计直至代码都摆脱了数据库影响,这个流程如下:
分析建模 细化设计(通过Evans DDD) 架构设计 代码实现 调试测试 部署运行。
那么数据库在什么时候建立呢?数据库表结构的创建可以延缓到部署运行时,由Hibernate/EJB
CMP/JPA等ORM技术自动实现。这样,
整个上游环节就不涉及数据库技术,而是使用更符合自然的表达OO方式,软件质量就更高了。我在J道网站已经大量阐述了如何从OO分析
到OO实现的过程,包括我的Jdon框架也直接支持这样一个自然方式。
现在,很多人已经理解,分析设计要用OO,但是数据库是运行阶段缺少不了的,确实,这是正确观点,我们夺取数据库的王位,不是将它打倒,只是理 性和平移交权力重心而已,数据库退出主角地位,让位于Java中间件,也预示着过去数据库为王的时代的结束, 但是数据库会和操作系统一样,成为我们现代软件系统一个不可缺少重要的基础环节。
正是基于这样事实,虽然我早在2005年喊出“数据库时代的终结一
文,回帖长达几百贴,
大部分是怀疑论,不信论,由此可见,由于传统观点影响和不及时与国际新思想同步,国内数据库保皇派还是有相当人数的。我BanQ人微言轻,抛出这些观点被
保皇派讥讽为所疯话,那么看看,著名ORM框架Hibernate和SEAM框架创始人Gavin King的一段观点:
In almost all enterprise applications, the database is the primary bottleneck, and the least scalable tier of the runtime environment. 数据库成为了大多数企业应用的主要瓶颈,也成为了运行环境中最不具伸缩性的层。... PHP/Ruby的用户会说什么都不共享(share nothing)的架构照样具有很好的伸缩性,.... 这些傻瓜真正想的是“除了数据库以外什么都不共享(Share nothing except for the database)”的架构。更多参看这里
所谓伸缩性,就是弹性,整个软件架构既支持小负载运行,也支持大负载支持,只要增加服务器即可; 由于软件系统负载已经从SQL转移到内存中的对象上,那么我们就可以通过增加这些应用服务器数量,通过分布式计算甚至云计算,达到业务对象在多台应用服务 器之间传递共享,而不必通过数据库这个环节,既减轻数据库负载,又能轻松扩充性能,不必走 集中试大型主机之路,只要添置低廉PC服务器即可。经过权威测试:websphere/weblogic的20台PC服务器集群性能不亚于一台SUN/IBM的中型机,性价比已经一目了然了。
JavaEE的服务器的集群相对于Linux等操作系统集群的好处在于:JavaEE集群能够针对某个繁忙负载大的具体业务功能进行集群,换句话说: 就是做到精确制导,精确解决问题,而显然,Linux操作系统的集群则无法直至业务核心的。
从另外一个方面看:虽然现在PHP号称走上对象路线,Ruby的铁轨开始铺进企业,但是他们的运行环境实则依赖数据库的, 特别是Ruby On Rails还是最适合Evans DDD对象建模路线,但是目前来讲还是"披着羊皮的狼",批着DDD,实则是以数据库中心。当然相信 ROR等将来会提供分布式计算环境,但是JavaEE在2002年时就通过EJB以及分布式缓存成熟稳定地提供分布式计算的中间件,并且已经大量成熟应用。
本文结束以前,我相信大家明白,在众多语言平台竞争中,为什么Java能够击败过去拳王数据库,夺得新的拳王冠军,以及他的特点所在。有人可能会说:你忘记谈.NET了,这个不用我回答你,用微软中国董事长张亚勤的话回答:8年前.NET战略很天真, 你会将你的重要业务企业计算依赖一个很天真不成熟的技术吗?除非你自己也很天真:)。发表评论
-
一刻钟精通正则表达式(转)
2007-11-07 11:23 872想必很多人都对正则表达式都头疼。今天,我以我的 ... -
Map、ArrayList 的遍历
2007-11-08 12:50 826public static void main(String[ ... -
Hibernate 连接池
2007-11-16 16:50 723<session-factory> < ... -
Hibernate检索对象的方式
2007-11-23 11:23 604Hibernate检索对象的方式 ... -
再温java jkd 环境变量设置
2007-12-04 15:16 879JAVA_HOME: C:\Program Files ... -
JAVA之路(转)
2007-12-04 18:12 624很多网友问我学习Java有 ... -
JMail
2007-12-05 10:42 872一.创建html格式的邮件 ... -
JAVA 检测网络是否为连通状态 ping
2007-12-07 19:27 2507要用java检测网络资源是否可用,我们可以采用以下两种方法: ... -
JMail 异常: java.lang.NoClassDefFoundError: javax/activation/DataSource
2007-12-11 16:56 2789今天开发邮件系统,发送程序能在main函数中顺利运行. ... -
JAVA 常用正则表达试
2007-12-11 21:21 804"^\d+$" //非负整数(正整数 + ... -
Linux - Tomcat
2007-12-14 18:36 7561.使用ps -ax | grep tomcat可以查询出内存 ... -
有返回值 存储过程 的 调用
2007-12-18 20:03 724有返回值的存储过程的调用方法如下: public class ... -
ECLIPS 经典 快键
2007-12-21 11:42 761Ctrl+1 快速修复(最经典的快捷键,就不用多说了) ... -
eclips 恢复 误删文件
2007-12-23 13:25 776今天,把我差点气死了,一不小心误删了很多重要文件. 后来才到网 ... -
JSP 统计在线人数
2007-12-24 10:39 732package com.test;import javax. ... -
The Software Engineer
2007-12-24 13:40 595http://siyn.iteye.com/ http://w ... -
Summarization of web project
2007-12-27 09:37 639开始一个web项目前应该注意一些什么?就自己的开发 ... -
正则表达式--2
2008-01-02 16:19 623正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总 ... -
java 正则表达式 长期总结
2008-01-03 18:46 730匹配文件后缀名:Pattern.matches("^ ... -
Test
2008-01-07 16:08 759package com.ed.cnc.servletListe ...
相关推荐
- **并发访问限制**:Access对于多用户同时访问的支持较差,容易出现锁死等问题。 - **性能限制**:随着数据量增加,Access的查询效率会显著下降。 因此,在网站发展到一定规模后,将数据迁移到SQL Server等更为...
- **存储过程的相互调用**:存储过程之间可以相互调用,但在设计时应注意避免死循环,并确保调用链清晰。 ### 性能优化 - **大数据导表的使用**:在处理大量数据时,使用`EXPORT`, `LOAD`, `IMPORT`命令可以显著...
在上面的代码中,我们可以看到针对一张Excel表需要编写一个专门的转换类,这样做的话代码太死,太麻烦了。为了解决这个问题,我们可以考虑实现一个通用转换类,例如使用Java中的反射机制来动态读取Excel文件的元数据...
本教学游戏根据小学数学二年级新教版教材开发,游戏背景设定为2005年全球禽流感疫情,玩家需要扮演唐僧师徒四人,寻找能够配置杀死禽流感病毒的八样宝物。每种宝物对应一个关卡,每个关卡又对应数学课本中的一个单元...
mysql数据库存储的 14132 条歇后语大全 1. 制作API接口 2. 训练机器人 3。 等 -------------------------------------- 1 做砖的坯子、插刀的鞘子 框框套套 2 做贼碰上劫路人 坏到一块了;冤家路窄 3 做贼的说梦话...
9. 进程管理:PROCESS权限让用户查看和杀死服务器中的进程,但需要权限才能操作其他用户的进程。 MySQL权限系统的工作原理依赖于`mysql`数据库中的几个关键表,如`user`、`host`、`db`和`tables_priv`,这些表存储...
- 死锁检测与解除:防止两个或更多事务因相互等待对方释放资源而陷入死循环。 10. 数据库复制与集群: - 数据复制:主从复制、双活复制等,提高可用性和容灾能力。 - 数据库集群:多台服务器共享同一数据库,...
- 可恢复的调度,级联回滚,死锁和饿死的概念,以及两阶段加锁协议。 12. **恢复机制**: - 基于日志的恢复,延迟更新和立即更新。 以上就是数据库复习的主要知识点,涵盖了从基础概念到高级特性的全面内容。对...
4. 并发执行会引起死锁、饿死、活锁等问题。 5. 读锁和写锁的相容性是指读锁和写锁之间的关系,读锁可以与读锁共享,但写锁与读锁和写锁都是互斥的。 四、查询表达 1. 查找参加唱歌队和篮球队的职工号和姓名可以...
Oracle 19c能够自动检测并修正执行计划的退化,同时可以自动杀死并重新优化运行失控的SQL语句,防止资源浪费。 8. **混合分区表与内外融合** 混合分区表结合了范围分区和对象存储,使得热数据和冷数据能够分离...
### 数据库系统工程师模拟试题知识点解析 #### 一、补码计算与反码表示范围 1. **补码计算** - **题目**: 设\(x=10111101\), \(y=-00101011\),假定符号位为双符号位,则\([X+Y]_{补}\)为? - **解析**:首先,...
这里提到的“表结构全部是写死的varchar(100)”,意味着开发者预先定义了固定长度的字符串字段,这可能限制了数据类型和长度的灵活性。 **源代码获取** 如果需要查看或修改源代码,描述中提到需联系作者。这表明源...
1. **杀死与目标数据库关联的所有活动会话**: 使用`DECLARE`和`SET`声明并初始化一个变量`@SQL`,然后通过`SELECT`语句遍历`sysprocesses`系统视图,查找所有与指定数据库('数据库名')关联的SPID(会话进程ID)...
DBC2000数据库在传奇私服中扮演着至关重要的角色,它是游戏数据存储的核心,用于管理游戏的各种信息,如角色技能、怪物属性等。这个数据库包含了丰富的变量和详细的数据,为游戏提供动态和真实的游戏体验。 首先,...
强调实用性和操作技能,而非死记硬背。 ### 考核要求与形式 - **考核要求层次**:分为了解、理解和应用三个层次,要求学生不仅知晓概念和方法,还能进行简单分析、判断及实际操作。 - **命题原则**:命题依据教学...
mybatisPlus的queryWrapper查询条件我们一般都是写死带下划线(如:create_time),但是如果用@FieldNameConstants注解的files字段去当条件的话,是驼峰,sql语句报找不到列,所以期望这里会自动帮我们把驼峰转下划线...
在您开始阅读这篇文章之前,我得明确地告诉您,我并不是...大家都说标准规范是重要的指导方针并且也这么做着,但是把它当作石头上的一块标记来记着(死记硬背)还是会带来麻烦的。以下11点是我在数据库设计时最优先考虑