﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-∪∩deniable  Design-随笔分类-Database学习笔记</title><link>http://www.blogjava.net/tidelgl/category/39076.html</link><description>个人JAVA版GAE(google app engine),struts2+jpa+jQuery开发,互相交流 http://iunbug.appspot.com/</description><language>zh-cn</language><lastBuildDate>Mon, 11 Jun 2012 07:06:53 GMT</lastBuildDate><pubDate>Mon, 11 Jun 2012 07:06:53 GMT</pubDate><ttl>60</ttl><item><title>第一次参与开源项目--完成翻译jQuery.Syntax指南成中文.</title><link>http://www.blogjava.net/tidelgl/archive/2010/09/08/331432.html</link><dc:creator>∪∩BUG</dc:creator><author>∪∩BUG</author><pubDate>Wed, 08 Sep 2010 14:05:00 GMT</pubDate><guid>http://www.blogjava.net/tidelgl/archive/2010/09/08/331432.html</guid><wfw:comment>http://www.blogjava.net/tidelgl/comments/331432.html</wfw:comment><comments>http://www.blogjava.net/tidelgl/archive/2010/09/08/331432.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/tidelgl/comments/commentRss/331432.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tidelgl/services/trackbacks/331432.html</trackback:ping><description><![CDATA[<a href="http://iunbug.appspot.com/article.html?objNews.id=87003">第一次参与开源项目--完成翻译jQuery.Syntax指南成中文.</a>
 <img src ="http://www.blogjava.net/tidelgl/aggbug/331432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tidelgl/" target="_blank">∪∩BUG</a> 2010-09-08 22:05 <a href="http://www.blogjava.net/tidelgl/archive/2010/09/08/331432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google labs 推出Google 代码搜索 - 搜索开放源代码.</title><link>http://www.blogjava.net/tidelgl/archive/2010/09/08/331376.html</link><dc:creator>∪∩BUG</dc:creator><author>∪∩BUG</author><pubDate>Wed, 08 Sep 2010 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/tidelgl/archive/2010/09/08/331376.html</guid><wfw:comment>http://www.blogjava.net/tidelgl/comments/331376.html</wfw:comment><comments>http://www.blogjava.net/tidelgl/archive/2010/09/08/331376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tidelgl/comments/commentRss/331376.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tidelgl/services/trackbacks/331376.html</trackback:ping><description><![CDATA[<span  style="font-size: 12px; color: s77777; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; line-height: 20px; ">
<h2 style="margin-top: 0px; margin-right: 25px; margin-bottom: 0px; margin-left: 25px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: normal; font-style: inherit; font-size: 2.8em; font-family: inherit; vertical-align: baseline; font: normal normal bold 3.2em/1em 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; color: &33333; letter-spacing: -2px; "><a href="http://iunbug.appspot.com/article.html?objNews.id=89002" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-weight: inherit; font-style: inherit; font-size: 38px; font-family: inherit; vertical-align: baseline; text-decoration: none; color: &33333; "><a href="http://iunbug.appspot.com/article.html?objNews.id=89002">Google labs 推出Google 代码搜索 - 搜索开放源代码.</a></a></h2>
</span>
  <img src ="http://www.blogjava.net/tidelgl/aggbug/331376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tidelgl/" target="_blank">∪∩BUG</a> 2010-09-08 11:08 <a href="http://www.blogjava.net/tidelgl/archive/2010/09/08/331376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL学习笔记</title><link>http://www.blogjava.net/tidelgl/archive/2008/09/30/231839.html</link><dc:creator>∪∩BUG</dc:creator><author>∪∩BUG</author><pubDate>Mon, 29 Sep 2008 16:58:00 GMT</pubDate><guid>http://www.blogjava.net/tidelgl/archive/2008/09/30/231839.html</guid><wfw:comment>http://www.blogjava.net/tidelgl/comments/231839.html</wfw:comment><comments>http://www.blogjava.net/tidelgl/archive/2008/09/30/231839.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/tidelgl/comments/commentRss/231839.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tidelgl/services/trackbacks/231839.html</trackback:ping><description><![CDATA[<p>My SQL 学习笔记<br />
2008　09　29<br />
首先:MySQL是一个小型关系型数据库管理系统，开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。</p>
<p>(1)系统管理<br />
1.运行CMD后用CD命令到Mysql的BIN目录下(如:E:\Program File\MySQL\MySQL Server 5.0\bin)[以下几步的操作都在此目录下执行]<br />
2.启动MySQL服务:&#160;&#160;net start mysql<br />
3.连接MySQL:&#160;&#160;&#160;&#160;mysql -h localhost(主机)　-u userName(用户)　-p databaseName(可选)&#160;(然后输入密码)<br />
4.修改root密码:<br />
&#160;1)新密码不为空<br />
&#160;&#160;mysqladmin -u root -p password 新密码&#160;(然后输入:旧密码)<br />
&#160;2)新密码为空<br />
&#160;&#160;mysql -u root -p&#160;(然后输入:旧密码)<br />
&#160;&#160; use mysql;<br />
&#160;&#160; update user set password=password('') where user='root';<br />
&#160;&#160; flush privileges;&#160;&#160;(刷新权限.)<br />
&#160;&#160; quit　(退出)<br />
&#160;3)原密码为空<br />
&#160;&#160;&#160;mysql -u root -p&#160;(然后回车)<br />
&#160;&#160; use mysql;<br />
&#160;&#160; update user set password=password('新密码') where user='root';<br />
&#160;&#160; flush privileges;&#160;&#160;(刷新权限.)<br />
&#160;&#160; quit　(退出)<br />
(2)基本命令(注意:执行语句以";"号或"\g"结束!)<br />
1.列出My SQL的有多少个数据库:&#160;&#160;&#160;&#160;show databases;<br />
2.选择某个数据库:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;use databaseName;<br />
3.列出当前数据库中的所有表:&#160;&#160;&#160;&#160;&#160;show tables;<br />
4.列出某个表的结构:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;desc tableName;<br />
5.显示当前数据库:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;select database();<br />
6.显示当前用户:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;select user();<br />
7.显示时间:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;select now();&#160;&#160;&#160;[按格式显示时间:select date_format(now(),'%Y-%m-%d %H:%i:%s');]<br />
8.显示MySQL版本:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;select version();</p>
<p>(3)MySQL实现分页的思路<br />
所谓分页显示，也就是将数据库中的结果集人为的分成一段一段的来显示，这里需要两个初始的参数：&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160; <br />
&#160; 每页多少条记录（PageSize）？&#160;&#160;&#160;&#160; <br />
&#160; 当前是第几页（CurrentPageID）？&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160; <br />
&#160; 现在只要给一个结果集，就可以显示某段特定的结果出来。&#160;&#160;&#160;&#160; <br />
&#160; 至于其他的参数，比如：上一页（PreviousPageID）、下一页（NextPageID）、总页数（numPages）等等，都可以根据前边这几个东西得到。&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160; <br />
&#160; 以mysql数据库为例，如果要从表内截取某段内容，sql语句可以用：select&#160;&#160; *&#160;&#160; from&#160;&#160; table&#160;&#160; limit&#160;&#160; offset,&#160;&#160; rows。<br />
&#160; (offset是起始行(第一行从0开始),row是要显示的行个数)<br />
&#160; 看看下面一组sql语句，尝试一下发现其中的规率。&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160; <br />
&#160; 前10条记录：select&#160;&#160; *&#160;&#160; from&#160;&#160; table&#160;&#160; limit&#160;&#160; 0,10&#160;&#160;&#160;&#160; <br />
&#160; 第11至20条记录：select&#160;&#160; *&#160;&#160; from&#160;&#160; table&#160;&#160; limit&#160;&#160; 10,10&#160;&#160;&#160;&#160; <br />
&#160; 第21至30条记录：select&#160;&#160; *&#160;&#160; from&#160;&#160; table&#160;&#160; limit&#160;&#160; 20,10&#160;&#160;&#160;&#160; <br />
&#160; &#8230;&#8230;&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160; <br />
&#160; 这一组sql语句其实就是当PageSize=10的时候取表内每一页数据的sql语句，我们可以总结出这样一个模板：&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160; <br />
&#160; select&#160;&#160; *&#160;&#160; from&#160;&#160; table&#160;&#160; limit&#160;&#160; (CurrentPageID&#160;&#160; -&#160;&#160; 1)&#160;&#160; *&#160;&#160; PageSize,&#160;&#160; PageSize&#160;&#160;&#160;&#160; <br />
&#160;&#160;&#160; <br />
&#160; 拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。&#160;&#160; <br />
</p>
   <img src ="http://www.blogjava.net/tidelgl/aggbug/231839.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tidelgl/" target="_blank">∪∩BUG</a> 2008-09-30 00:58 <a href="http://www.blogjava.net/tidelgl/archive/2008/09/30/231839.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[推荐]数据库已死</title><link>http://www.blogjava.net/tidelgl/archive/2008/09/28/231751.html</link><dc:creator>∪∩BUG</dc:creator><author>∪∩BUG</author><pubDate>Sun, 28 Sep 2008 14:50:00 GMT</pubDate><guid>http://www.blogjava.net/tidelgl/archive/2008/09/28/231751.html</guid><wfw:comment>http://www.blogjava.net/tidelgl/comments/231751.html</wfw:comment><comments>http://www.blogjava.net/tidelgl/archive/2008/09/28/231751.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/tidelgl/comments/commentRss/231751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tidelgl/services/trackbacks/231751.html</trackback:ping><description><![CDATA[<span style="color: red">这些天都在学习,上J道突然发现了这篇文章,当时心里咯噔一下.......<br />
<a href="http://www.jdon.com/artichect/dbdead.htm"><br />
</a></span><br />
现代软件和以往传统软件主要区别在于：现代软件基于internet互联网技术，运行于开放的网络环境，不象传统软件只是运行在封闭的局域网，运行环境的区别就决定了软件操作用户的多少，在一个开放互联网环境， 你的软件系统用户是不断增长，特别是那些对所有人群开放的社区网站系统，更是承受前所未有的访问负载。那么，这些软件系统承受的压力主要会集中在软件的哪个环节呢？如果你使用传统软件的设计思路，那么无疑压力都集中在数据库上。
<p>　　随着用户的爆发量增长，在某个凌晨醒来时，你发现：数据库已死。</p>
<p>　　传统软件系统实则应该叫数据库软件系统，是一个数据库系统，开发这样的系统非常简单，成本 也非常低廉，只要根据需求先设计好数据表结构，然后，就找一些大学毕业生写大量SQL语句，虽然还使用 JAVA/PHP/.NET等语言，但实际上这些语言只是将SQL送往数据库执行的运输工，没有什么价值和地位。</p>
<p>　　所以，这样的系统运行在互联网环境下以后，主要负载就集中在数据库的SQL运行上，也就是说：整个软件系统性能关键点就集中在数据库上了，数据库是性能主角，是王者；虽然你购置了昂贵的Websphere/weblogic等应用服务器，但是由于Java只是运输工，根本起不到性能上负载分担的作用。</p>
<p>　　著名的社区网站MySpace就是因为一个好的idea，用户疯狂增长，但是系统却不能平滑承受增长的用户访问，这些用户访问网站缓慢、无法访问甚至丢失数据，他们经过几次伤筋动骨的架构升级，在微软SQLServer直接技术支持下， 好容易才勉强应付过去。看看他们痛苦经历，你是否也愿意再来一次呢？详细情况： <a target="_blank" href="http://www.jdon.com/jivejdon/thread/34601.html">http://www.jdon.com/jivejdon/thread/34601.html</a></p>
<p>　　从中可以看出，数据库性能微调和挖潜总是有限度的，对数据库性能优化提高性能的步伐永远赶不上用户增长量， 有人也提出数据库集群的概念，其实数据库集群是一个骗人概念，一般只是备份，在集群数量和failover上有制约， 否则，数据库巨头Oracle不会跑到JavaEE阵营摇旗呐喊，还最早推出EJB3服务器，并扬言要收购JavaEE过去老大 Bea Weblogic。</p>
<p>　　很显然，数据库成已经为软件系统的主要性能瓶颈了，单纯依靠数据库自救的方式已经行不通，是宣布数据库退出主角时候了，那么由谁来宣布：教皇数据库已死？无疑是Java。</p>
<p>　　Java社区早在本世纪初就提出中间件概念，用以取代数据库地位，实则就是将软件系统主要负载从数据库上转移到中间件服务器上，分担负载。 也就是说：Java社区提出：既然数据库已经成为瓶颈，修修补补也无济于事，不如放弃它，不再依赖它。</p>
<p>　　也就是说：Java不再做SQL的运输工，不再是跑龙套的了，而是主角，那么如何让Java成为主角呢？那必须依赖<a target="_blank" href="http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=面向对象&useGBK=on">对象</a>这个概念，对象是生活在中间件服务器内存中，它又是数据库数据的业务封装，它和数据库有着 千丝万缕的关系，但是它又和<a target="_blank" href="http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=阻抗&useGBK=on">关系数据库存在天然矛盾</a>，两者水火不容。</p>
<p>　　过去，我们是将业务逻辑写成SQL送往数据库执行，导致数据库成为业务逻辑主要运行瓶颈，那么，如果我们将 业务逻辑用对象概念表达，而不是SQL，那么我们的业务逻辑就围绕内存中的对象反复计算，这样，负载不是集中在 对象运行的中间件服务器上（也就是应用服务器Weblogic/websphere/JBoss/Tomcat）？而对象/中间件都是用Java 语言表达的，无疑，这样的架构，Java才成为主角。</p>
<p>　　再进一步想想：如果我们从软件系统开始之初，就使用对象分析设计，不与数据库沾边，整个流程就完全OO，分析设计直至代码都摆脱了数据库影响，这个流程如下：<br />
</p>
<p>　　分析建模 细化设计(通过<a target="_blank" href="http://www.jdon.com/jivejdon/key/ddd"><strong>Evans DDD</strong></a>) 架构设计 代码实现 调试测试 部署运行。<br />
<br />
　　那么数据库在什么时候建立呢？数据库表结构的创建可以延缓到部署运行时，由Hibernate/EJB CMP/JPA等ORM技术自动实现。这样， 整个上游环节就不涉及数据库技术，而是使用更符合自然的表达OO方式，软件质量就更高了。我在J道网站已经大量阐述了如何从OO分析 到OO实现的过程，包括我的Jdon框架也直接支持这样一个自然方式。</p>
<p>　　现在，很多人已经理解，分析设计要用OO，但是数据库是运行阶段缺少不了的，确实，这是正确观点，我们夺取数据库的王位，不是将它打倒，只是理性和平移交权力重心而已，数据库退出主角地位，让位于Java中间件，也预示着过去数据库为王的时代的结束， 但是数据库会和操作系统一样，成为我们现代软件系统一个不可缺少重要的基础环节。</p>
<p>　　正是基于这样事实，虽然我早在2005年喊出&#8220;<a target="_blank" href="http://www.jdon.com/artichect/dbover.htm">数据库时代的终结</a>一文，回帖长达几百贴， 大部分是怀疑论，不信论，由此可见，由于传统观点影响和不及时与国际新思想同步，国内数据库保皇派还是有相当人数的。我BanQ人微言轻，抛出这些观点被保皇派讥讽为所疯话，那么看看，著名ORM框架Hibernate和SEAM框架创始人Gavin King的一段观点：<br />
</p>
<p>　　In almost all enterprise applications, the database is the primary bottleneck, and the least scalable tier of the runtime environment. 数据库成为了大多数企业应用的主要瓶颈，也成为了运行环境中最不具伸缩性的层。... PHP/Ruby的用户会说什么都不共享（share nothing）的架构照样具有很好的伸缩性，.... 这些傻瓜真正想的是&#8220;除了数据库以外什么都不共享(Share nothing except for the database)&#8221;的架构。更多<a target="_blank" href="http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=34551&message=23116480>3116480">参看这里</a></p>
<p>　　所谓伸缩性，就是弹性，整个软件架构既支持小负载运行，也支持大负载支持，只要增加服务器即可； 由于软件系统负载已经从SQL转移到内存中的对象上，那么我们就可以通过增加这些应用服务器数量，通过分布式计算甚至云计算，达到业务对象在多台应用服务器之间传递共享，而不必通过数据库这个环节，既减轻数据库负载，又能轻松扩充性能，不必走 集中试大型主机之路，只要添置低廉PC服务器即可。经过权威测试：websphere/weblogic的20台PC服务器<a target="_blank" href="javascript:window.location.href=encodeURI('http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=集群')">集群</a>性能不亚于一台SUN/IBM的中型机，性价比已经一目了然了。</p>
<p>　　JavaEE的服务器的<a href="javascript:window.location.href=encodeURI('http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=集群')">集群</a>相对于Linux等操作系统<a target="_blank" href="javascript:window.location.href=encodeURI('http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=集群')">集群</a>的好处在于：<a target="_blank" href="javascript:window.location.href=encodeURI('http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=集群')">JavaEE集群</a>能够针对某个繁忙负载大的具体业务功能进行集群，换句话说： 就是做到精确制导，精确解决问题，而显然，Linux操作系统的集群则无法直至业务核心的。</p>
<p>　　从另外一个方面看：虽然现在PHP号称走上对象路线，Ruby的铁轨开始铺进企业，但是他们的运行环境实则依赖数据库的， 特别是Ruby On Rails还是最适合<a target="_blank" href="http://www.jdon.com/jivejdon/key/ddd"><strong>Evans DDD</strong></a>对象建模路线，但是目前来讲还是"披着羊皮的狼"，批着DDD，实则是以数据库中心。当然相信 ROR等将来会提供分布式计算环境，但是JavaEE在2002年时就通过EJB以及<a target="_blank" href="javascript:window.location.href=encodeURI('http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=分布式缓存')">分布式缓存</a>成熟稳定地提供分布式计算的中间件，并且已经大量成熟应用。</p>
<p>　　本文结束以前，我相信大家明白，在众多语言平台竞争中，为什么Java能够击败过去拳王数据库，夺得新的拳王冠军，以及他的特点所在。有人可能会说：你忘记谈.NET了，这个不用我回答你，用微软中国董事长张亚勤的话回答：<a target="_blank" href="http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=33890&message=23114056>3114056">8年前.NET战略很天真</a>， 你会将你的重要业务企业计算依赖一个很天真不成熟的技术吗？除非你自己也很天真:)。<br />
<a href="http://www.jdon.com/artichect/dbdead.htm"><span style="color: red">进入原文:http://www.jdon.com/artichect/dbdead.htm</span></a></p>
 <img src ="http://www.blogjava.net/tidelgl/aggbug/231751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tidelgl/" target="_blank">∪∩BUG</a> 2008-09-28 22:50 <a href="http://www.blogjava.net/tidelgl/archive/2008/09/28/231751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>