Apache Cassandra是一个大规模可伸缩的开源NoSQL数据库。Cassandra完美地支持管理大量的结构化,半结构化和非结构化数据,且能够跨多个数据中心和云。Cassandra提供了持续可用性,线性扩展,操作简单,跨多个服务器而没有单点故障。且提供了一个有力的动态数据模型,支持最大的灵活性和快速响应。

  1. Cassandra工作原理

    Cassandra的build-for-scale架构,能够处理PB级的数据信息和每秒处理成千上万的并发用户操作。

    Cassandra是一个分区行存储数据库
    Cassandra的架构允许任何授权用户连接到任意数据中心的任意节点,使用CQL言访问数据。为了使用简单,CQL使用类SQL语法。最基本的方式与Cassandra交互是使用CQL shell(cqlsh)。使用cqlsh,你能够创建keyspacestables,插入和查询tables等等。如果你倾向于图形化工具,你可以使用DataStax DevCenterDataStax提供了一系列drivers,使得CQL语句可以从客户端发送给cluster和返回。其他的管理任务可以使用OpsCenter来完成
    自动的数据分
    Cassandra提供了自动的分发数据到集群中的所有节点。无需编写代码,数据透明分区到所有节点。
    内置的自定义复制
    Cassandra提供了内置和自定义复制,存储冗余备份到多个节点上。意味着如果集群中任意节点挂掉,可以使用一个或多个备份数据。复制策略为每个数据中心配置生效
    线性扩展
    Cassandra提供了线性扩展,意味着可以很容易的在线上添加一个新的节点。比如,2个节点可以每秒可以处理100000 transactions,那么4个节点每秒可以处理200000 transactions,8个节点可以每秒处理400000 transactions.

    intro_cassandra.png
  2. Cassandra与关系型数据的不同


            Cassandra设计成为使用peer-to-peer交互的分布式数据库。作为最佳实践,查询应该在每张表中。数据是非规范化的。因为这个原因,表之间的join操作不存在,但是可以在client-side 实现joins。

  3. 什么是CQL

              CassandraQuery Language(CQL)是最主要的接口对于Cassandra DBMS。使用CQL类似于使用SQLCQLSQL都使用表结构中的columnsrows。与SQL主要不同点是Cassandra不支持joinssubqueries(子查询)

  4. 如何与Cassandra交互

            最基本的方式与Cassandra交互是使用CQL shell(cqlsh)。使用cqlsh,你能够创建keyspaces和tables,插入和查询tables等等。如果你倾向于图形化工具,你可以使用DataStax DevCenter。DataStax提供了一系列drivers,使得CQL语句可以从客户端发送给cluster和返回。其他的管理任务可以使用OpsCenter来完成

  5. 什么是CQL

            Cassandra设计成为使用peer-to-peer交互的分布式数据库。作为最佳实践,查询应该在每张表中。数据是非规范化的。因为这个原因,表之间的join操作不存在,但是可以在client-side 实现joins。

  6. 如何插入数据

            数据的插入可以使用CQL INSERT命令,CQL COPY命令,CSV文件或sstableloader但在实际中,你需要考虑客户端应用程序如何去查询,所以首先需要数据建模。在关系型数据库和NoSql的范式变化意味着,从RDBMS中直接迁移到Cassandra注定是失败的

  7. Cassandra其他工具

            Cassandra自动安装了nodetool,一个有用的命令行管理工具。cassandra-stress一个压测工具,默认已安装。