Oracle 12c R2最近发布的版本支持数据库分片功能,该功能意在提升Oracle旗舰数据库在云架构环境中的性能,从数据库水平扩展框架中获益。
在云环境中提升数据扩展性对Oracle来说非常重要,因为Oracle在从内部构建环境迁移到云环境的过程中会承担更多负载,同时会要求成本更低。
Oracle分片功能吸取了Cassandra、MongoDB和Amazon DynamoDB这些NoSQL数据库的长处。这些数据库以及其它一些NoSQL数据库都支持分片技术,使得数据库可以水平跨多个服务器部署。
该技术不仅局限在NoSQL,在许多主流关系数据库中也是支持的,例如PostgreSQL和MySQL数据库。
在Oracle 2016年全球大会上的Oracle数据库路线地图讨论会上,Oracle公司负责数据库服务器技术的执行副总裁Andrew Mendelsohn表示:“Amazon采用分片技术已经许多年了”。不过,他指责Amazon的实现需要太多人工干预。
有许多分片方案需要应用程序代码控制很多活动。Mendlesohn说,Oracle使用的是本地数据库分片架构,减少了数据库管理系统的控制工作,节省了开发时间。
他补充说,Oracle最初策略是支持跨一千台服务器分片,但是预计支持能力还要扩展。
服务器场环境分片应用
Facebook运行开源关系型数据库MySQL数据库数据场中大量使用了分片技术。或许这很令人惊讶,不过这家社交媒体巨头也使用Oracle数据库,用于财务和运营应用系统。Sudhi Vijayakumar是Facebook公司数据库系统架构师,他在Oracle全球大会分片技术分会上交流时提到了以上信息。
Vijayakumar曾与Oracle公司工程师一起工作过,一直在准备数据集市的概念验证实施,将实现准实时报表生成。他说:“我们期待Oracle实现分片技术。”
他建议Oracle分片能支持应用增长需求,无需额外人员来管理。通常传统企业比较关注这个目标,像Facebook这种使用云环境的标杆企业关注这方面还是比较少见的。
Oracle创新进退维谷
Oracle分片可以使用公司的RAC(实时应用集群),也可以不用。这些集群使用了共享磁盘的方式提供了我们熟悉的关系型数据一致性,Oracle用这种方式扩展数据库已经有好多年了。
很多人认为RAC方式关联成本过于昂贵,在许多情况下,软件架构师会构建超大规模云。而且,大部分工作可以通过“最终一致性”得以满足。这样公司就可以在打造许多分布式数据技术的同时,比较广泛的使用分片技术。
Guy Harrison是澳大利亚墨尔本的位独立咨询顾问和作家。他认为,对于大规模扩展分片技术是比RAC更好的架构。RAC更多依赖于纵向扩展,而不是横向扩展;RAC需要使用独立于数据库节点的共享磁盘系统。
他说:“使用分片技术,每个节点都有自己的磁盘,磁盘可能直接在商用服务器上。如果你需要添加节点,可以一并添加磁盘、CPU和内存,使用更廉价的商用‘pizza box’服务器。”(pizza box 服务器这里表示普通廉价的服务器。)
他说,节点之间需要的协作较少,当然也取决于应用程序。这种架构缺点是集群范围内的查询效率会较低,一致性稍差,跨集群实现真正的ACID一致性是很难维护的。
Harrison对于现在从内部部署应用和数据库迁移向云环境的整体趋势几乎没有什么疑问。他表示,数据库是***迁移到云端的部分,通常数据库会根据应用的情况进行考虑。
他说:“在许多情况下,人们要构建新东西时,会在内部花大价钱购置大量硬件和从云端获取方便的服务之间做比较。这不是一个太艰难的决定。与你可以在云环境中租用到的环境相比,构建这些基础设施是非常昂贵的。”
Harrison说,他对Oracle数据库向云迁移很感兴趣。不过,与其他人一样,他也期望向云迁移能带来相应的经济效益。
“在某种程度上,他们要获得比内部部署更好的收益。如果没有一点利益,想让他们的用户迁移到云环境是很困难的。所以,这是个棘手的问题。”