数据网格 Data Grid和NoSQL相同和区别-异同

Data Grid数据网格是以ehcache的Terracotta兵马俑和Oracle的Coherence以及GigaSpaces为代表的分布式内存存储方案。

NoSQL则是不局限在Java领域,从key-value到neo4j等等,memcached也可以归结为NoSQL范围。

这两种有什么区别和相同点呢?

OCTO talks ! » Data Grid or NoSQL ? same, same but different…一文解惑,两者都是针对大数据BiG Data,可以降低成本,一个集群的几台低成本的服务器成本低于一台高端服务器的4倍。相同点还包括:

基于一个主键Key的分区数据Partitioning the data based on a key. 每台服务器对应一个 key.

将查询路由转发到包含查询结果数据的服务器。避免向所有服务器查询一段特殊数据。路由转发有不同实现,Cassandra实现服务器端的路由;Voldemort是使用客户端路由.

分布式系统都使用复制。

数据网格和NoSQL不同点则是:非常重要,取决于你的架构是面向延迟性latency架构,还是面向吞吐量throughput架构。

大部分系统架构权衡都是在延迟和吞吐量之间比较倾斜,这些倾斜决策将影响到计算机架构底层模块, 现代CPU设计总是倾向于纳秒级别的短暂延迟。

数据网格是采取内存作为主要存储,这样就带来很低的延迟;而NoSQL则是主要为web-scale工业也就是Web网站系统服务的,用户能够感受的延迟不是非常重要,比如几秒延迟,人是感觉不明显的,这时你不必相应快速,而是应该应付越来越多的请求,也就是解决吞吐量。

其他区别是:
NoSQL解决方案已经越来越特定化专业化;而数据网格更加可配置性,通用化。

数据库网格来自于不同的环境,你使用数据网格需要依赖关系数据库RDBMS,需要将数据保持在当地JVM中,还可能需要SQL .NET或ruby等等。

下图是一个比较:

数据网格提供更加复杂的部署选择,可以将数据网格和JVM合并一个JVM或者分开部署,当然,如果分布式部署,数据网格和NoSQL差不多,但是如果和本地JVM合并,对本地业务进行读写也许适合一些业务模型。

数据网格主要缺点是基于Java对象,必须知道Java对象,对象必须能够序列化,而NoSQL则是基于byte数组,对象校验序列化等可以手动管理。

最后作者总结:当进行选择时,首先询问自己:
1.系统负载变化程度和符合其变化所需的弹性。
2.和传统关系数据库RDBMS相比,成本损耗如何,经济低成本还是需要考虑的。
3.要有平台眼光,是否向多租户multi-tenant架构发展。