2016年 8月11日
关于Apache Cassandra
关于这个文档
欢迎来到由DataStax提供的cassandra文档。为了保证你在使用这份文档时获得最好的体验,先花一些时间看一看DataStax文档的使用建议。
登录页面提供了一些支持的平台,产品兼容性,规划和测试集群部署,推荐的生产配置,故障排除,第三方软件,额外的信息资源,管理员和开发人员的话题,和之前文档的信息。
ApacheCassandra概述
Apache Cassandra™是一个大规模可扩展的开源NoSQL数据库。Cassandra在跨多数据中心和云计算的时候,管理大量的关系型,半关系型,和非关系型数据是完美的。Cassandra在很多商业服务器之间传递持续可用性,线性扩展,和操作简易性,没有单点故障,同时为了最大的灵活性和最快的响应时间的设计,它有一个强大的动态的数据模型。
DataStax Distribution of Apache Cassandra3.x最新的版本是3.6
Cassandra如何工作的?
Cassandra的一切为了可扩展的架构意味着,它能够胜任管理PB级别的数据和每秒上千的并发用户/事务的操作。
Cassandra是一个分区的行存储数据库 | Cassandra的架构允许任何授权的用户使用CQL语言连接数据中心的任何节点来登陆数据库。为了易用性,CQL使用了跟SQL相似的语法规则。和Cassandra交互的最基本的方法是使用CQL shell ,cqlsh命令。使用cqlsh,你可以创建keyspaces和tables,向table里插入和查询以及更多操作。这个Cassandra的发行版适用于Cassandra 2.2的CQL和后来的版本。如果你想使用图形界面工具,你可以使用DataStax DevCenter. 为了生产使用,DataStax提供了一系列的驱动,使CQL表达式可以从客户端传输到集群然后返回。 |
数据自动分区 | Cassandra提供了在所有节点之间的数据自动分区方法,然后数据加入到一个环或者数据集群里。开发者或者管理员不需要写代码来把数据分布到集群中去,因为数据是透明分区在集群的所有节点中的。 |
内置的和可定制的复制策略 | Cassandra也提供了内置的和可定制的复制策略,在多个节点上保存着冗余的备份,并且加入到Cassandra环中。这意味着如果集群中的任何节点挂掉,在集群中的其他机器上还有一份或者多份节点的可用数据备份。备份策略可以配置成一个数据中心,多个数据中心,和多个云可用区域。 |
Cassandra可线性扩展 | Cassandra提供了线性可扩展,意味着存储空间可以简单的通过在线添加新节点来增加容量。举个例子,如果2个节点可以处理每秒100,000个事务,那么4个节点可以支持每秒200,000个事务,8个节点可以解决每秒400,000个事务。 |
Cassandra与关系型数据库有什么不同?
Cassandra从根本上就被设计成一个点对点通信的分布式数据库。As a bestpractice, queries should be one per table。数据规范化使这个成为了可能。由于这个原因,表之间的joins这个概念不存在,虽然如此,客户端的joins仍然可以在应用中使用。
NoSQL是什么?
最普遍的翻译是“不仅仅是SQL”,意思是,这种数据库使用一种和关系型数据库不同的存储方式。
有很多种不同类型的NoSQL数据库,因此即使是最常用的类型的直接比较都是没有用的。今天的数据库管理员必须要polyglot-friendly,意思是说,他们必须要懂得如何使用多种不同类型的关系型数据管理系统和NoSQL数据库。
什么是CQL?
Cassandra 查询语言(CQL)是进入Cassandra数据库管理系统的主要接口。使用CQL跟使用SQL(结构化查询语言)很类似。CQL和SQL共享相同的抽象概念表,都是由列和行组成的。和SQL最主要的不同点是,Cassandra不支持joins操作和子查询。相反的,通过在schema级别的CQL的特性例如集合和集群可以看出,Cassandra强调的是反范式。
推荐使用CQL和Cassandra进行交互。更好的性能,阅读的简单,和使用CQL是现代的Cassandrad相对于旧版的Cassandra API的优势。
CQL文档包含一个数据建模的题目,例子,和命令参考。
我该如何和Cassandra交互?
最基本的和Cassandra交互的方法就是使用CQL shell,cqlsh命令。使用cqlsh,你可以创建keyspace和tables,向table里插入和查询以及更多操作。如果你想使用图形界面工具,你可以使用DataStax DevCenter。为了生产使用,DataStax提供了一系列的驱动,使CQL表达式可以从客户端传输到集群然后返回。
我该如何把数据从Cassandra移入/移出?
数据使用CQL INSERT命令插入,CQL COPY命令和CSV文件,或者sstableloader。但是实际上,首先你必须考虑到你的客户端程序将会如何查询表,然后再做数据建模。在关系型和非关系型数据库之间的模式的不同,导致直接把数据从关系型数据库转移到Cassandra会注定失败。
Cassandra还有哪些其他的工具?
Cassandra自动安装了nodetool,一个很有用的Cassandra命令行管理工具。同时也默认安装了压力负载和基准测试的工具,cassandra-stress。
运行Cassandra我需要什么样的硬件/云环境?
Cassandra被设计成可以在普通规格的商品硬件上面运行。在云端,Cassandra能够适应大多数普通的环境。
译者注:本篇文章来源于datastax cassandra的官方文档的第一章,由于最近在学习cassandra数据库,而且公司也刚刚使用cassandra数据库,所以有很多东西还不太了解,有的地方翻译的比较生硬。本人还保留了好几本关于cassandra的英文书籍,由于平时比较懒,不太愿意看英文原版的书籍,因此借这个机会,强迫自己把它们读完,后面会陆陆续续,尽自己最大能力把它们翻译出来,也算是给自己一个交代。