时间:2021-07-01 10:21:17 帮助过:54人阅读
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 一说起数据库,大多数情况下就等于在说关系型数据库(RDBMS),关系型数据库都使用SQL查询语言作为访问数据库,有些简单的产品直接运行在桌面机上,但如果你在服务器上部署用于重要的业务计算的数据库
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入
一说起数据库,大多数情况下就等于在说关系型数据库(RDBMS),关系型数据库都使用SQL查询语言作为访问数据库,有些简单的产品直接运行在桌面机上,但如果你在服务器上部署用于重要的业务计算的数据库,就必须要大型关系数据库,如果有钱的话可以购买成熟的Oracle,SQL Server,DB2等商业产品,如果没有预算或资金不足,可以使用开源的数据库,如MySQL和PostgreSQL。
关系数据库在多个表中存储数据,表与表之间使用外键进行关联。关系数据库一词源于在IBM工作的Edgar Codd在1970发表的一篇论文。基于这个数据库模型的产品很快就代替了许多层次型和其它技术种类的数据库。虽然它的性能还比不上替代品,但在数据布局,添加和访问方面却更加灵活。
得益于计算机处理速度越来越快(RDBMS也在许多方面得到了增强),后台进程的性能得到了显著提升,但关系数据库的缺点暴露得越来越多,对象数据库正欲取代关系数据库,但在相当长的一段内它们将会并存。随着真正大规模分布式计算基础设施的完善,即使RDBMS不会被新兴技术取代,但很多新兴技术都会作为其一个补充。
RDBMS最根本的问题是它的处理架构和存储,所有事务都是绝对可靠的(ACID,原子性,一致性,隔离和耐用性,它是一套用来描述性能要求的术语),这对于金融系统是绝好的解决方案,提款时要立即返回银行存款余额,系统要防止同一时间偶然发生从同一余额提款多次。假设数据要保存很长一段时间,RDBMS及其关联的基础架构也要支持才行,在传统数据库角色背景下它的意义非凡,不仅是商务上想保存几年甚至更长时间,按照法律要求也要保存多年。
但我们在大型分布式系统中看到的是越来越多地使用替代方法,这些方法不要求严格的一致性或产生大量的不需要永久保存的中间结果,它们也可以使用复制提高性能和可用性。
http://www.allthingsdistributed.com/2008/12/eventually_consistent.html。
亚马逊的SimpleDB就实现了这种模式,它保持每个域的多个副本,当数据写入或更新(使用PutAttributes,DeleteAttributes,CreateDomain或DeleteDomain)时如果返回成功,则所有数据的副本都会被更新,但要将更新传播到所有存储位置是需要时间的,数据最终将会一致,但立即的读取操作可能看不到最新的修改。
我们看到许多产品本质上是通过增加RDBMS的数量来减少它们需要存储的数据的容量,Terracotta是一款商业产品,它可以为Java应用提供分布式缓存,Terracotta说它们一般可以卸下40-60%的事务,性能自然提高了很多。
Memcached是一款类似的开源分布式内存缓存系统,它将数据(连同相关的结构)分布到多个系统,以减少访问数据存储,它广泛用于大型网站,如Twitter,YouTube和Wikimedia。
但这些技术不能象RDBMS取代传统层次数据库那样取代RDBMS,相反,它们会权衡那些在数据库中不是非必需的特性,如完全一致性。
目前许多应用比传统业务应用程序更多地使用异步和读密集技术,面需要跨多个系统实现高性能。要为组织实施这种应用,配对的RDBMS和各种各样的分布式数据存储,只有可伸缩的方法才是唯一出路,同时需要考虑一个价格平衡点才使业务发展具有重要意义。