在本文中,我们将介绍Cassandra名字的含义、Cassandra的发展简史、Cassandra这项技术的特点及优势,以及对于这项技术的未来展望。
本文将用浅显易懂的方式,帮助您将对Cassandra这项技术的前世今生有一个粗略的了解。

 
谁是Cassandra
 
Apache Cassandra是一种分布式的NoSQL数据库。它具有成功应用所需的持续可用性、高性能、可线性扩展等特点。
 
 
Cassandra(卡珊德拉)是希腊神话中特洛伊国王普里阿摩斯的女儿,她是一个具有预言能力的先知,却因受到阿波罗诅咒,其预言永远不得被人们相信。Cassandra预见到了特洛伊城的毁灭,却因无人相信而无力阻止。
有人曾这样评述卡珊德拉:她和古希伯来的众先知一样直视事理的真相,不论过去、现在或未来;但是她的明晰无误的眼力,和她心中负荷的宇宙事理的可怖奥秘,却使她隔绝于正常的人生,使她在世人眼中成了个疯子。这便是古来先知们一再遭遇的命运。
 
 
 
虽然Cassandra作为先知不被人相信,但是作为一种面向未来的技术,越来越多的开发者和科技公司已经看到了Cassandra的价值并且从中受益。

 
Cassandra简介
 
Apache Cassandra是一种开源的、分布式的NoSQL数据库。它最早是由Facebook内部开发,后来于2008年7月公开了源码。
Cassandra不仅具有现代应用所要求的持续可用性(没有宕机时间)、高性能以及线性扩展的特点,其操作也十分简易,而且可以便捷地跨数据中心和跨区域进行数据复制。
Cassandra可以支持PB级别的信息处理,也可以负载每秒上百万条的并发操作。强大的功能使得Cassandra能够帮助企业和组织在多云及混合云架构中处理巨量的数据。
作为一个在Cassandra这项技术上深耕十余年的企业,DataStax致力于同开源社区一起开创属于Cassandra的世代,并巩固其在云原生应用数据库中的领先地位。
 
 
 

Cassandra简史
 
Cassandra最早是由Facebook工程师Avinash Lakshman和Prashant Malik开发,用于提高Facebook邮件收件箱的搜索功能。通过使用Cassandra,用户可以更快地找到他们需要的邮件和内容。
 
Cassandra的架构结合了亚马逊Dynamo论文中提出的分发模型和Google BigTable论文中描述的日志结构存储引擎(log-structured storage engine),从而实现了在不同节点间的横向拓展。其结果是Cassandra作为一种高可拓展性的数据库,能搞定大多数数据量巨大及性能密集型的使用场景。
 
2008年7月,Facebook公开了Cassandra的源码。2009年3月,Cassandra成为了Apache孵化器的开源项目。之后在2010年4月,Cassandra从Apache孵化器毕业,成为了Apache基金会的最高级别项目之一。时至今日,Cassandra在Apache许可证2.0版本下可自由使用。
 
 
DataStax的团队由Cassandra数据库演进过程中的领军人物组成,他们贡献了Cassandra 3.0版本中大部分的代码。在4.0及之后的版本中,我们的团队也在持续积极地与开源社区紧密合作,为Cassandra的未来贡献所能。
 

技术特点及优势
 
01 开源
从Linux这样的操作系统到管理数据的基础设施,当代的软件开发组织已经大量地在使用开源技术。开源技术的吸引力不仅来自于其可负担性和可延展性,其避免被套牢捆绑的灵活性也相当受到欢迎。
使用开源技术的企业和团体往往能更快地习得新技术且进行创新。
 
02 灵活性,相似的接口
Cassandra查询语句(CQL)与SQL非常相近,大多数开发者可以用很短的时间对CQL熟悉起来。(如果你需要帮助,这里有一份CQL入门介绍
 
03 高性能
大多数传统数据库都采用了主从结构 (primary / secondary architecture),其中只有唯一的一级数据备份可以有读写操作,二级数据备份则只能有读取的操作。这种结构的缺点是高延迟、高成本以及在规模方面的低可用性。
在Cassandra中,并没有一个节点负责向整个节点集群复制数据,而是每一个节点都可以进行读写操作。这一特点增强了数据库的性能和弹性。
 
04 随时随地在线
由于Cassandra的每一个节点都可以进行读写操作,数据可以被快速复制到混合的云环境,也可以快速分布到不同的地理位置。
 
如果一个节点出现了故障,用户会被自动转到最近一个工作正常的节点。用户甚至不会注意到有节点出现了问题,因为他们使用的应用即使在这种情况下也能正常运作。
也就是说,应用程序会永远处于可用状态,数据也能随时获取且不会丢失。
 
不仅如此,Cassandra内置的修复服务会立刻修复节点故障带来的数据一致性问题,并不需要人为干预。当有节点出现故障,系统的效率甚至不会受到影响。
 
05 可拓展性
在传统的环境中,扩展应用往往是一个耗时耗钱的过程,需要购买更贵的硬件来实现系统的垂直扩展。
 
Cassandra则只需通过增加节点的方式进行水平扩展即可。例如,使用4个节点可以负荷200,000操作/秒,而增加到8个节点就可以拥有400,000操作/秒的性能。点击这里查看原文。
 
06 无缝复制
如今,领头企业越来越多地采用多数据中心、混合云甚至是多云的部署方案,从而可以利用不同部署的优势并避免被单一供应商的生态系统所限制。
 
企业要想最大限度地利用多云环境,则需要底层的云数据库提供可延展性、安全性和性能的保障。
 
所以在意料之中的是,云数据库市场预计每年将增长65%,并且在2022年前达到689亿美元的市值。
 
 

 
未来展望
 
Cassandra传统上被人们认为是一个极为强大的数据库,可以在绝大多数使用场景中脱颖而出,然而也是比较难学习和操作的数据库之一。
DataStax致力于与Cassandra社区一起让Cassandra成为更容易为个人使用、为企业采用和延伸的技术。
  • 将提供简化的开发者接口APIs,包括REST和GraphQL
  • 将在CQL中添加更多与SQL类似的功能,包括索引(indexing)、表的合并(Joins)、ACID(Atomicity原子性、Consistency一致性、Isolation隔离性、Durability持久性)及对JSON的完全支持
  • 标准的管理接口APIs及正式的、有官方支持的Kubernetes Operator
  • 将使存储引擎变为可插拔的,并同其它接口APIs一起实现数据库部署和配置的定制化

什么是Cassandra数据库的更多相关文章

  1. Cassandra 数据库安装部署

    安装版本 cassandra-3.11.4 系统版本 more /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 准备工作 Cassan ...

  2. Cassandra数据库Java訪问

    针对的时Cassandra 2.0 数据库 Java本地client訪问Cassandra,首先建立Javaproject,使用Maven进行管理. 引入依赖: <dependency> ...

  3. 行业动态 | 利用Cassandra数据库揭开家族祖先的秘密

        FamilySearch选择了基于Apache Cassandra的DataStax Enterprise (DSE)来加速用户增长,并通过更快的反应时间.高可用性以及零数据库宕机来提供强大的 ...

  4. 在Apache Cassandra数据库软件中报告高严重性RCE安全漏洞

    研究人员披露了ApacheCassandra一个现已修补的高严重性安全漏洞的细节,如果这个漏洞得不到解决,可能会被滥用来获取受影响安装的远程代码执行(RCE). DevOps公司JFrog的安全研究员 ...

  5. 用Java实现向Cassandra数据库中插入和查询数据

    所用jar包: 其中jxl.jar和dom4j.jar,jaxen-1.1-beta-6.jar是解析XML文件用的jar包,如果不解析XML文件可以不用. 代码如下: package com.loc ...

  6. 过滤文本文档中的数据并插入Cassandra数据库

    代码如下: package com.locationdataprocess; import java.io.BufferedReader; import java.io.File; import ja ...

  7. Cassandra 数据库, python cqlsh命令

    ★  cql操作数据库(cqlsh.bat: python cqlsh命令操作<优缺点:https://blog.csdn.net/vbirdbest/article/details/77662 ...

  8. cassandra数据库

    一.下载地址:http://www.apache.org/dyn/closer.lua/cassandra/3.0.11/apache-cassandra-3.0.11-bin.tar.gz 二.安装 ...

  9. Cassandra 数据库设计

    Cassandra 2.* CQL3.1 最近更新:2015-10-30 索引的设计 在Cassandra中经常会发现,索引不够用,不好用,各种不强大. 比如,我关注的人的需求uid + follow ...

随机推荐

  1. 什么是SSL双向认证,与单向认证证书有什么区别?

    SSL/TLS证书是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书.服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书.但是, ...

  2. 修改MongDB的数据类型

    语法: db.集合.find({"列":{$type:2}}).forEach(function(x){ x.列=parseFloat(x.列);db.order.save(x) ...

  3. moviepy音视频剪辑:使用fl_time进行时间特效处理报错OSError: Error in file xxxx, Accessing time

    ☞ ░ 前往老猿Python博文目录 ░ 老猿在使用moviepy音视频剪辑的fl_time进行时间特效处理时,系统报错: OSError: Error in file F:\video\WinBas ...

  4. 云原生时代 给予.NET的机会

    .NET诞生于与Java的竞争,微软当年被罚款20亿美元. Java绝不仅仅是一种语言,它是COM的替代者! 而COM恰恰是Windows的编程模型.而Java编程很多时候比C++编程要容易的多,更致 ...

  5. 华大MCU单片机之HC32F003/HC32F005 hc32f005_ddl_Rev1.9.0 Lite精简版库使用心得

    之前几个项目开发都是用的华大HC32F003_DDL_Rev1.0.2的库函数,今年刚开始入手华大,刚开始不是很了解这个芯片,看到库能用就上手了.这个版本的库编译效率很低,16K的芯片一下就写爆了.后 ...

  6. 剑指offer二刷——数组专题——数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

  7. 换种思路写Mock,让单元测试更简单

    开篇引入 单元测试中的Mock方法,通常是为了绕开那些依赖外部资源或无关功能的方法调用,使得测试重点能够集中在需要验证和保障的代码逻辑上.在定义Mock方法时,开发者真正关心的只有一件事:" ...

  8. CF1400G - Mercenaries

    1400G - Mercenaries 考场上想到枚举,但是只想到了 \(2 ^ m\) 枚举矛盾,然后用 NOI Online 2 游戏 类似的容斥掉,结果式子推着推着就复杂度爆了 wtcl. (U ...

  9. CSP-S2020初赛游记

    前一星期 感觉没怎么复习初赛啊,经常旷初赛练习赛--整天刷复赛题被老师怒斥了. zhoukangyang 天天做初赛(但是一天还是稳定做 \(2\) 道黑题),是不是要 AK 了啊(慌... 前一天 ...

  10. 算法——n皇后问题

    n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案. 每一种解法包含一个明确的 n 皇后问题的棋 ...