<b>SQL和Non-SQL之间做出挑选</b>[Access防范]
本文“<b>SQL和Non-SQL之间做出挑选</b>[Access防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
近来IT圈有很多关于Non-SQL数据模子,放宽数据一致性,以换取高可伸缩性的谈论 .在美国旧金山近期就有这样的会议.
对各种模子举行了谈论,包含:Memcached、分布式Hashtable、Column-数据存储等数据拜候模子.这些Non-SQL存储办理筹划主要的侧重点在于高可伸缩性上,主要的特点是:
数据分布在大量服务器上
每台服务器独立运行 (例:最低限度的彼此合作).
有了这样的分布式环境,供应严密的数据整合是一个宏大的挑衅,因此某种程度的一致性会有所丧失. (但也取决于履行,丧失的东西是不一样的).我严重猜疑这能否是可行的,增添到数据分区到传统的RDBMS,而不改变它的数据完好性的要求.
从数据拜候情势的角度来看,memcache代表ad/hoc拜候方法的完毕,偏向于一个更小的数据子集,并且用户数据完好不可猜测.这显示出对要求ACID原子操作的宏大挑衅.当然,人们可以理论上可以让这些 Non-SQL 系统利用2PC,PAXOs 等事件处理协议,但没有人利用,因为它会很慢.当你正在利用Memcached,那么利用程序必须有一个相当宽松的数据一致性的要求.
从别的一方面来说,假如我们可以“限制”数据拜候模子,那么我们可以成立一个高度专业化的数据筹划与精密的履行筹划,我们乃至可以消除并发的情形.按照这一办法将可实现非常高的可扩大性. Map/Reduce是这一办法的典型例子.目前的挑衅是需求 一个额外的算法转换步骤以重新布置利用到有限的MapReduce模子.
不过,我认为对比差别的数据库模子而不关注差别层面(比方线程),是没有多粗心义的.
什么是数据拜候情势?
Batch-oriented,要求扫描整个数据集(比方Map/Reduce 范例)
Ad/hoc, 小的、未知数据子集的拜候不可猜测性(利用当前拜候)
一个调集内基于key-based 查找
一个调集内基于Value-based 查找(作为布尔表达式的尺度)
尺度若何定义?(等于、多于/少于、前缀匹配、类似性匹配)
内部/外部加入横跨多个调集
在数据的“构造筹划“和呼应指标起着很大的作用.
key/value 存储
Relational 存储
Column-oriented 存储
什么是数据一致性要求?
每个人任什么时刻候必须可以随时看到更新的信息
可以看过期信息,只要每个人都能看到一样的图片.
可以看过期信息,假如过期程度有时间限制(最新20分钟内)
“数据更新”机构扮演重要角色.
断绝机制 (LOCK, MVCC)
更新合作机制(2PC, PAXOS, Async Gossip)
需求更多的研究,衡量各种抉择,以及它若何影响可伸缩性.这将需求一段时间让该行业找到各种利用范例的最佳情势.
以上是“<b>SQL和Non-SQL之间做出挑选</b>[Access防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |