由于越来越多的企业负载正在迁移到NoSQL上,以利用非结构化数据以及可扩展性,更好的灵活性和低廉的成本。而Oracle(尽管他们在NoSQL和MySQL上也都有投资)对于这些新需求的响应并不是很好。
事实上,Oracle面对着更为糟糕的情况,即与企业级NoSQL兴起并驾齐驱的是对于“数据库响应负载”的企业级需求的兴起。在“主/从”上创造一个双关语(通常指的是复制),在以前无论厂商(如Oracle,Microsoft,IBM,SAP等)提供什么样的“大数据”,企业都必须将自己的工作负载与之进行适配。而如今企业有理由要求“大型数据库”提供拥有某些NoSQL关键功能的SQL RDBMS。
- 持续稳定正常的运行时间
- 跨地区的分布式能力
- 扩展,特别是写扩展
- Burst/Flex:横向扩展力
- 与用户和数据负载无关的稳定的DB性能
- 在存储不过载的情况下处理不同数据类型
- 在不突破预算的情况下完成所有上述工作
当然,这里所做的假设是NoSQL可以处理上述所有内容——而这一假设可能过于理想。并不是所有的NoSQL DBMS都能处理上述需求,特别是在有硬件问题凸显的情况下,预算就会超支了。
另一个更大的假设是:“非结构化数据”表明非确定的一致事务是必要的。企业将大部分工作负载部署在RDBMS数据库上,究其原因就是因为这些数据库保证了实时事务的一致性。
在你想要赚钱的时候,就使用SQL数据库吧。但这是为什么呢?
RDBMS有着四十年的历史,它已经让每个人都知道数据库要创建一致性事务。实际上,这称之为“ACID规范”,而这是NoSQL数据库无法提供的。换句话说,虽然NoSQL数据库可以处理非结构化数据并有着很好的可扩展性,但是它们在实时维护所有数据库节点的ACID规范,事务性,数据一致性以及参照完整性上却是糟糕透顶。
因此,你可以部署NoSQL数据库来省钱,但是当你想真正赚钱的时候,还是要使用SQL数据库。
不过,是否存在折中的选择呢?能否在获得RDBMS的ACID事务性的同时兼具NoSQL数据库的可扩展性和灵活性呢?像ClustrixDB这种可扩展的NewSQL数据库就是不错的选择。
类似于ClustrixDB的数据库可以处理很多下面的挑战:
- 不同于主从架构,ClustrixDB是点对点架构。所有节点总是完全一致的,而且对于HA来说,数据在整个集群上至少要存储两次。
- 不同于共享式存储,CPU和内存,ClustrixDB是非共享的。每个节点都有自己的编译器,查询执行引擎,数据,和反映集群中所有数据位置的数据映射。传入的查询会分配至工作负载最低的节点,而编译查询片段则分配至驻存有数据的位置,从而实现数据移动最小化和并行处理最大化的目的。
- 扩展是非常简单的,通过添加线性扩展的读写节点即可。这称之为‘Flex-Up’,而多个节点的添加删除可以通过单个(非常)短暂的数据库‘暂停’来实现。
- 自动背景数据分配平衡可以处理高速摄取。可以认为在没有任何DBA开销和应用程序变更的情况下,它是‘透明自动分片的’
- ClustrixDB设计用于不间断操作,它可以在没有数据库暂停或应用程序中断的情况下处理在线模式变更和节点损失。
总结
企业中非结构化数据的增加推动了NoSQL数据库的应用,而且企业也正在要求他们的SQL数据库具有和NoSQL类似的功能,比如:
- 可扩展,部署及可用性
- bursting/flexing增量定价
- 大规模并行分布/无共享
扩展SQL数据库所满足的那些需求是无法从诸如Oracle,SQLServer,IBM等‘大型数据库’厂商获得支持的。