仓酷云

标题: 发一篇为什么不必MySQL? [打印本页]

作者: 变相怪杰    时间: 2015-1-16 20:14
标题: 发一篇为什么不必MySQL?
你可以配置MySQL运行在微小的嵌入式应用程序中,处理的数据可能不足1Mb??而你也可以用它来处理数Tb的数据。MySQL获得这种可扩展性的路径之一是通过一个人们所熟知的存储过程,这是一个运行在程序之外的微型、预编译程序。注重:这篇文档写于20005月。因而,它其实不能申明MySQL的最新特征。但从中我们仍旧能够懂得RDBMS的一些基础观点、道理,从而在理论中更好地使用数据库,同时也才干对一些不实的炒作坚持需要的小心。
为什么不必MySQL

BenAdida  译者:马维达

几近每周、偶然乃至更加频仍,总有人会问我们为什么不接纳MySQL作为OpenACSRDBMS(干系式数据库办理体系)。ACSClassicteamArsDigita)也几回再三地在他们的论坛上碰到一样的发问。假如MySQL关于Slashdot来讲充足好的话,它也必定可以用于OpenACS,不是吗?
不合错误。这篇冗长的论文将实验注释为什么MySQL不但对OpenACS来讲是毛病的选择,它也不该被用于任那边理关头数据的体系。
RDBMS的目标
RDBMS的目标是供应一种牢靠的永世存储机制,在ACID测试中详细表述了这类机制的十分严厉的特征。我将间接援用PhilipGreenspun的出色注释(以Oracle作为RDBMS的代表):
原子性(Atomicity
事件的实行了局大概被全体提交、大概被全体回滚(rollback)。要末一切的变化都失效,要末就没有变化失效。假定一个用户正在编纂一条正文,Web剧本告知数据库“将旧正文值拷贝到审计表中,并用新文本更新举动表”。假如在拷贝以后、更新之前硬盘变满的话,审计表拔出就将被回滚。
分歧性(Consistency
数据库从一种无效形态转换到另外一种无效形态。仅在从命用户界说的完全性束缚时,一个事件才是正当的。不同意不法的事件,并且,假如不克不及满意某完全性束缚的话,该事件会被回滚。比方,假定你界说了一条划定规矩:论坛表中的帖子必需与无效的用户ID相干联。然后你招聘了JoeNovice来编写办理页面。Joe编写了一个删除用户页面,它不会反省删除是不是会发生一些无主的论坛帖子。但是像Oracle如许的RDBMS将会举行反省,并中断任何事件,假如它发生的论坛帖子为已被删除的用户所具有的话。
断绝性(Isolation
一个事件的了局关于其他事件是不成见的,直到该事件完成为止。比方,假定你有一个显现新用户和他们的照片的页面。依照出书者的请求,在页面中每一个用户都有一张脸部照片,假如用户没有照片的话就显现一幅暗示无照片的图象。在新用户Jane在你的站点注册的同时,老用户Bill正在检察新用户页面。处置Jane的注册的剧本会对多少表举行拔出:usersmugshotsusers_demographics。假如Jane的脸部照片很年夜的话,上述拔出大概会必要一些工夫。假如Bill的查询在Jane的事件提交之前入手下手的话,Bill基本不会在他的新用户页面上看到Jane,即便在Jane的事件中,对某些表的拔出已完成。
耐久性(Durability
一旦提交(完成),事件的了局将是永世性的,并能免于将来的体系和介质妨碍。假定你的电子商务体系未来自某消耗者的订单拔出数据库表中,并唆使CyberCash收取该消耗者500美圆的用度。俄然间,在你的服务器收到CyberCash的复兴之前,有人绊失落了呆板的电源线。在如许的情形下,Oracle将不会健忘该订单。并且,假如有程序员将咖啡洒进了磁盘驱动器中,安装一个新磁盘,并将事件复兴到咖啡倾泻时为止是大概的;数据将显现你曾试图收取或人500美圆,而且还不分明在CyberCash那边产生了甚么。
假如你所要的是疾速的裸存储,往利用文件体系。假如你想要在多台呆板间举行共享,往利用NFS。假如你想要复杂的牢靠性,以凑合过于复杂的妨碍,往利用镜像。想要给它们加上SQL接口?往利用MySQL
如今,假如你所要的是如许的数据存储,它可以使你的数据集的多少方面坚持恒定,可以对这些数据举行庞大的操纵、而永不违背上述的那些束缚,可以将多个用户同时举行的部分事情相互断绝开来,而且可以从任何品种的妨碍中举行安稳的恢复,那就给你本人找一个真实的RDBMS。是的,它会比MySQL文件体系慢,就像TCPUDP慢一样,但它们却供应了更好的服务包管。
MySQL的近况与将来
构建真实的RDBMS是一项困难的义务,大概比任何其他体系成绩都要困难。市场上的年夜多半产物(OracleSybasePostgreSQLInterbase)已举行了多年的开辟,有些还凌驾了1015年。
MySQL的开辟职员宣称他们就义了某些特征,以包管更好的功能。只管这也许是一种追踪非关头数据(好比点击率追踪)的风趣办法,在处置关头数据时,就义完整的数据完全性是不成承受的,即便是为了速率也一样云云。
MySQL成熟时,OpenACS团队很乐意对其举行间隔更近的考查。可是,MySQL团队仿佛其实不了解真实的ACID才能的观点和主要性:MySQLTodo在一个很长的列表中提到了“事件”,个中包含了诸如“就寝历程占用CPU吗”如许的成绩。别的,MySQL手册宣称MySQL将很快经由过程表锁的利用来完成“原子操纵”,但却“没有回滚”。这是对术语“原子的”堂堂皇皇的误用:“原子操纵”意味着大概一切操纵都完成,大概没有操纵完成。假如没有回滚才能的话,在一组语句的两头产生的硬件或电力妨碍将损坏块的原子性。
回滚不但是一种便当的特征,它是牢靠的数据存储的关头性基本。
有很多很好的来由利用MySQL,但对牢靠的、依从ACID的数据存储的需求却并不是是个中之一。
更多的细节
lMySQL没有子查询。
关于庞大的查询,MySQL用户必需实行两次或更多的系列查询,每次都必要在使用和数据库间举行历程间通讯或收集通讯。这明显地下降了MySQL的速率上风
lMySQL没有存储历程。
lMySQL没有触发器或外键束缚。
lMySQL只要表级锁定。
结语
企业级体系不会为了速率而就义特定的特征。RDBMSACID属性关于任何干键数据来讲都是相对必须品。在非ACID依从的体系上运转的关头网站是在自找贫苦。
OpenACS项目回绝冲破ACID测试的主要法例。我们要构建的是企业级的开放源码Web工具包。PostgreSQL、很快另有InterBase将成为这一项目符合的候选RDBMS。而MySQL只是一个有着SQL接口的被丑化的文件体系。

曾经的功能列表可能会迅速变得过时了。而且,有些功能对有的应用程序非常重要,但是对别的应用程序则不一定。
作者: 谁可相欹    时间: 2015-1-18 19:20
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
作者: 第二个灵魂    时间: 2015-1-25 23:13
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
作者: 精灵巫婆    时间: 2015-2-4 13:16
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
作者: 山那边是海    时间: 2015-2-9 23:26
大侠们有推荐的书籍和学习方法写下吧。
作者: 再现理想    时间: 2015-2-28 05:10
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
作者: 若天明    时间: 2015-3-9 21:22
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
作者: 深爱那片海    时间: 2015-3-17 02:01
大侠们有推荐的书籍和学习方法写下吧。
作者: 变相怪杰    时间: 2015-3-23 16:51
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2