说起Cassandra的用途时,我们可以将其理解为一套理想的客户系统实现方案——其能够保证各类应用始终可用,包括产品目录、物联网、医疗系统以及移动应用。Cassandra于2010年成为Apache软件基金会的顶级项目,而且至今仍拥有极高人气。Cassandra专业知识能够帮助我们在人才市场上获得赏识。我们不禁要问——为什么这一开源项目能够大受欢迎?
随着现代云应用对正常运行时间及性能水平的要求逐步提高,已经有越来越多用户开始将注意力集中在Apache Cassandra数据库身上。
那么,为什么要选择Apache Cassandra?这套分布式OLTP数据库能够带来高可用性与线性可扩展能力。在说起Cassandra的用途时,我们可以将其理解为一套理想的客户系统实现方案——其能够保证各类应用始终可用,包括产品目录、物联网、医疗系统以及移动应用。这类项目一旦遭遇停机,企业可能面临严重的营收损失甚至失去忠诚的用户。Netflix公司早在2008年就开始使用这套开源数据库,而其做出的大力推动也真正让Cassandra引起了公众的重视。
Cassandra于2010年成为Apache软件基金会的顶级项目,而且至今仍拥有极高人气。Cassandra专业知识能够帮助我们在人才市场上获得赏识。我们不禁要问——为什么这一开源项目能够大受欢迎?
Cassandra能够利用Amazon发布的Dynamo论文中所提到的独特设计成果,从而保证硬件与网络出现大规模故障时继续保证可用性。利用点对点模型,其消除了单点故障可能性,从而帮助我们在机架故障甚至是网络整体下线的情况下得以幸存。我们能够在无需影响用户体验的情况下,顺利处理整体数据中心故障。只有能够应对故障的分布式系统才是一套拥有出色设计水平的分布式系统,而在Cassandra的帮助下,我们能够承受各类意外状况,并将应对机制纳入数据库架构及功能当中。
但大家可能要问,“不过,我之前只使用过关系型数据库,过渡过程是否非常艰难?”这个问题无法一概而论。Cassandra使用的数据模型对于关系数据库管理员来说并不陌生,我们同样使用表进行数据建模,并通过CQL——Cassandra查询语言——查询数据库。不过与SQL不同,Cassandra支持更为复杂的数据结构,例如嵌套与用户定义类型。例如,相较于为某张图片创建独立的存储表,我们可以直接将该数据存储在集合中以实现更为快速的查询速度。这种作法在CQL当中非常自然,而对应的图片表中则包含其名称、URL以及喜爱该图片的用户信息。
在高性能系统当中,毫秒级别的差异可能决定用户的实际体验与去留。然而,资源成本高昂的JOIN操作限制了我们的向外扩展通彻。通过对数据进行非规范化处理,我们能够尽可能降低请求数量,从而大幅降低磁盘空间成本并实现可预测的高性能应用。
当然,我们能够存储的绝不仅仅是图片数据。Cassandra针对高写入吞吐量进行了优化,这意味着其能够完美地处理大数据应用。时间序列与物联网用例的快速增长要求我们不断寻求新的方法以收集数据并改进数据的应用技术。
这就带来了新的问题:我们已经能够以现代化且具备成本效益的方式存储数据,但如何进一步提升处理能力?换言之,在数据收集完成后,我们该如何加以运用?我们如何有效分析数百TB数据?我们又该如何以秒为单位实时利用信息进行决策?Apache Spark正是问题的答案。
Spark可谓大数据处理的下一场革命。Hadoop与Mapreduce属于第一代革命性项目,它们让我们得以立足于大数据层面实现数据收集。而Spark则能够大幅提高性能并降低代码计算的复杂性,从而实现前所未有的数据分析能力。在Spark的帮助下,我们可以完成大量批处理计算,针对数据流处理结果进行反应并通过机器学习机制做出明智决策,最终利用遍历与递归理解复杂的信息。其目标不光是为客户提供更为快速可靠的应用连接能力(这部分效果由Cassandra负责实现),同时也需要利用信息做出业务决策地更好地满足客户需求。
大家可以点击此处查阅 Spark-Cassandra Connector方案说明 (开源),我们也强烈建议各位在DataStax Academy上查找免费的自学教程。