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