关于Apache Cassandra
Apache Cassandra™是一个大规模的可伸缩的开源NoSQL数据库。Cassandra在管理海量结构化、半结构化和非结构化的在数据中心或者云端中的数据时表现非常优秀。Cassandra在不同的服务器之中提供持续有效,线性扩展和操作简单的服务,没有单点故障,并且提供一个强大的动态数据模型和最大程度的灵活性以及最快的响应时间。
Cassandra是如何工作的?
Cassandra的自动扩展架构意味着它可以处理PB级的信息和上千的用户或者操作并发。
- Cassandra是一个相互分离的行存储数据库
Cassandra的架构允许任何授权用户去连接任何一个节点在不同的数据中心中,并且使用CQL语言进行访问。为了方便使用,CQL使用和SQL相同的语法。通常最基本的和Cassandra进行交互的方式是使用CQL shell,
cqlsh
。通过使cqlsh,你可以创建keyspaces
和tables
,插入一个表或者是查询一个表等等操作。如果你更倾向于使用图形化的工具,你可以使用DataStax DevCenter。对于在生产中使用Cassandra,DataStax提供了一些驱动来支持CQL语句从客户端到集群和后端。
- 自动数据分发
Cassandra提供自动的数据分发在所有加入一个环或者数据库集群的节点。没有任何需要管理员或者程序员需要配置或者编码的地方,因为数据在节点中的分发是透明的对于用户来说。
- 自带和定制的复制
Cassandra也提供自带的或者是定制的复制机制,通过存储冗余的数据副本在所有加入Cassadra环的节点中。这就意味着如何集群中任何一个节点出现宕机,一个或者多个数据的副本将依然有效的存在于其他机器上。复制可以配置成从一个数据中心到多个数据中心或者是多个不同的云端中。
- 线性扩展
Cassandra提供线性扩展,因此用户可以很方便的在线添加新的节点。例如,如果两个节点能够处理每秒10万个事务,那么4个节点将能够支持每秒20万个事务而8个节点将能够处理每秒40万个事务。
Cassandra和关系型数据库有什么不同?
通过端到端的通信,Cassadra被设计成分布式数据库的一部分。作为最佳实践,一条查询最好仅限一个表。数据被反向格式化来完成查询。由于这个原因,Cassandra中并不存在多个表中的JOINS
查询这个概念,尽管客户端的连接查询可以使用在应用中。
什么是NoSQL
通常的解释是不仅仅是SQL
,这就意味着数据库使用了一个和关系型数据库不同的存储方式。NoSQL有很多不同的类型,因此一个直观的比较使用人数最多的类型的数据库并没有太大意义。当今数据库管理员需要熟悉多种不同的数据库,并且能够了解如何使用不同的关系型和非关系型数据库。
什么是CQL
Cassandra Query Language
是Cassandra数据库管理系统的主要接口。使用CQL和使用SQL语句一样的简单。CQL和SQL使用了一些想听的抽象想法在设计表机构的列和行的时候。两者的主要区别是Cassandra不支持连接查询和子查询。但是,Cassandra强调不规则数据结构通过使用CQL的特性像集合和指定在集群中的模式级别。
CQL是最推荐使用的和Cassandra交互的方式。CQL新版在性能和可读性方面都优于老版。
CQL文档包括数据模型会话,例子和命令参考。
我如何和Cassandra进行交互?
使用CQL shell是最基本的访问方式。通过使用cqlsh,你可以创建keyspace和tables
,插入和查询表格等等。如果你更倾向于使用图形化的工具,你可以使用DataStax Dev Center。对于在生产中使用Cassandra,DataStax提供了一些驱动来支持CQL语句从客户端到集群和后端。
我该怎样将数据从Cassandra迁入或者迁出
Cassandra自动安装了nodetool,这是一个很有用的命令行管理工具。这个工具可以进行压力和性能测试,cassandra-stress也是默认被安装的工具之一。
我需要怎样的硬件或者云服务环境来运行Cassandra?
Cassandra被设计成可以运行在任何商业服务器上,通过普通的规范。在云上,Cassandra可以适配大部分云服务提供商。