Cassandra和Redis通常都用于快速获取和存储海量数据,并帮助轻松完成海量数据的实时流传输。
由于Cassandra是Apache产品,因此使用Cassandra的最大好处之一就是它支持HiveQL(类似于SQL的语法)。Cassandra遵循常规的基于列/表格式的数据库的结构,该结构非常受历史RDMS支持。它还不支持完整的CAP(一致性,可用性和分区容忍度),可以考虑与AP相同(可用性和分区容忍度)。假设您有一项业务需求,即将更多数据写入或存储到系统中而不是读取数据,那么Cassandra将是不错的选择之一。这就是为什么Cassandra在银行或金融等某些特定行业中太受欢迎的原因,在这些行业中,书写而不是阅读(考虑包括交易数据在内的整个数据)的正常态度。
Redis在大数据获取和存储方面比Cassandra更快,尤其是在实时流传输的情况下。Redis通常维护一个磁盘支持的内存数据库。它通常维护主从架构(如Hadoop架构所示)。而且非常有趣的一点是,它主要遵循CAP(一致性,可用性和分区容差)定理中的CP(均值一致性和分区容差)。如果组织确实具有快速变化的海量数据,那么使用Redis而不考虑任何其他选择将非常有用。但是由于Radis主要位于内存数据库中,因此应该具有一些近似的数据大小估计值,其中要考虑内存大小以及所有大小。对于任何具有实际数据分析和整合实时 使用海量数据进行数据流传输,Redis始终是任何行业的绝佳选择。
现在,对于任何软件架构师来说,根据行业需求选择一种精确的工具来处理巨大的实时数据是一个大问题。有时对于一个特定的组织有两种不同的要求,可能需要同时遵循Cassandra和Redis。
Cassandra和Redis之间的主要区别
以下是要点列表,描述了Cassandra和Redis之间的主要区别:
卡桑德拉(Cassandra)最好写得多一些而少读一些。而Redis始终用于快速更改写入和读取的数据。
Cassandra可以采用支持HiveQL(类似于SQL的语言)的表格格式保存大量数据,而Redis将数据存储为键-值对,通常不支持任何类似SQL的语言。
Cassandra完全用Java语言编写,而Redis用C,C ++编写。
Cassandra通常遵循磁盘绑定的内存数据库,而Redis遵循磁盘支持的内存数据库。
与CAP(一致性,可用性和分区容忍)定理相比,Cassandra遵循AP(可用性和分区容忍),而Redis遵循CP(一致性和分区容忍)。
Cassandra可以进行磁盘交换,因此在VM或磁盘存储上具有重要意义,而VM和磁盘存储已被Redis放弃,目前,Redis不可用磁盘交换。
在分发和复制(N,R,W)的情况下,Cassandra是可调整的权衡策略。而Redis遵循正确的主从复制内存数据库。
由于Cassandra支持普通的查询类型语言,因此可以轻松地达到按列或验证键范围或任何数据搜索条件进行的查询。而Redis总是按键返回简单值或哈希表,因为它始终将数据存储为键值对。
Cassandra遵循大表之类的功能,它保存列或列族作为数据列表。尽管Redis没有列概念,但它始终将数据存储为键值对。
对于执行任何范围查询,Redis总是会更好,因为它具有具有高分表结构的sorted set选项,而对于Cassandra,则需要编写适当的查询来获取那些数据,而这些数据昂贵且速度不如Redis。
Redis有一些特殊的实用程序,例如set,has lists,hashs,它们有助于进行联合,差异,跨部门,返回队列或阻止POP,返回多个字段的对象。而对于Cassandra,我们始终需要编写查询来执行相同的操作。
基础比较 Cassandra Redis
语言 Java程序语言 Redis:C,C ++编程语言
主要用途 像SQL一样轻松地存储大量数据集。 Redis: 存储和读取海量数据的速度非常快。
许可证 Apache证明许可证。 Redis:BSD提供许可证。
协议 节俭的二进制CQL3 Redis:像Telnet一样,并且始终是二进制安全的。
最佳使用 如果需要写的数据多于读取的数据,那么Cassandra始终是一个绝佳的选择。而且,如果所提供系统的所有组件都使用Java进行设置,那么像Cassandra这样的Apache东西将再次成为自动选择。 Redis:如果需要非常频繁且快速地更改大量数据,则Redis是始终选择的正确选项。但是Redis的数据库大小总是可以预见的,应该根据内存大小来保持大小。
例子 主要要求写作要比总读更快的行业,例如银行业,金融业。 Redis:对于任何实时活动,例如股价分析。