NoSQL数据库 Cassandra(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

   随着互联网技术的发展,对数据存储的要求越来越高,在容量、安全性、备份、高可用性等方面都有很高的需求,很受欢迎的关系型数据库有SQLServer、MySQL、Orcale等,非关系型数据库有key、value型的Redis,Memcached,文档型数据库有MongoDB、CouchDB,还有列簇类型的Hbase、Cassandra。种类繁多,要学习的知识点越来越多,我们在技术选型时,必须遵循“没有最好的技术,只有最适合的技术”。因为业务的需要有的折腾新的技术,接下来将初步研究Cassandra的过程做一下笔记,以便后期查阅。

  1、初识Cassandra 

  Apache Cassandra是高度可扩展的,高性能的分布式NoSQL数据库。 Cassandra旨在处理许多服务器上的大量数据,提供高可用性而无需担心单点故障。

  Cassandra具有能够处理大量数据的分布式架构。 数据放置在具有多个复制因子的不同机器上,以获得高可用性,而无需担心单点故障。

官网:http://cassandra.apache.org/     帮助文档:http://cassandra.apache.org/doc/latest/contactus.html 

目前主流的版本:Apache Cassandra 3.11  Apache Cassandra 3.0  

                              Apache Cassandra 2.2    Apache Cassandra 2.1

  目前没发现Cassandra比较新书籍,网上能搜到的Cassandra 实战  Cassandra 权威指南 是基于0.6与0.7,相对目前常用的版本已经很陈旧,所以当我们学习Cassandra 时,最好的方式是研究官方文档。

1.1  Cassandra与关系数据库比较 

Cassandra 关系数据库
Cassandra用于处理非结构化数据。 RDBMS用于处理结构化数据。
Cassandra具有灵活的模式。 RDBMS具有固定的模式。
在Cassandra中,表是“嵌套键值对”列表(行x列键x列值)。 在RDBMS中,表是数组的数组(一行x列)
在Cassandra中,keyspace是包含与应用对应的数据的最外层的容器。 在RDBMS中,数据库是包含与应用程序对应的数据的最外层的容器。
在Cassandra中,表或列族是键空间的实体。 在RDBMS中,表是数据库的实体。
在Cassandra中,行是一个复制单元。 在RDBMS中,行是单条记录。
在Cassandra中,列是一个存储单元。 在RDBMS中,列是表示关系的属性。
在Cassandra中,使用集合来表示关系。 在RDBMS中,有外键,连接等的概念。

  在MySQL等关系型数据库中,都有表和库的概念,不同类型的数据库中库的创建等方式都是不一样的,MySQL等关系型数据库必须先用CREATE语句创建数据库和表结构才能插入数据,而Redis中根据配置文件中数据库的个数,已经生成若干个数据库,只需要用SELECT切换即可。MongoDB又是特殊的一种特殊的数据库,里面没有表的概念是库和集合,在一定的情形下,不用自己创建,可以直接插入数据非常的便捷。Cassandra里面没有库的概念,里面是keyspace和表的实体。有些使用方法和MySQL等关系型数据库相似,有些地方两者又有很大的差距。

1.2  Cassandra与HBase比较

HBase Cassandra
HBase是基于Bigtable(Google) Cassandra基于DynamoDB(亚马逊)。 它最初是由前亚马逊工程师在Facebook开发的。 这是Cassandra支持多数据中心的原因之一。
HBase使用Hadoop基础架构(Zookeeper,NameNode,HDFS)。 部署Hadoop的组织必须具备Hadoop和HBase的知识。 Cassandra与Hadoop分开开发,其基础工具和操作知识的要求与Hadoop不同。 然而,对于分析,许多Cassandra部署使用Cassandra + Storm(使用zookeeper)和/或Cassandra + Hadoop。
HBase-Hadoop基础工具有几个由Zookeeper,Name Node,HBase master和数据节点组成的“移动部件”,Zookeeper是集群的,自然是容错的。名称节点需要集群为容错。 Cassandra使用单个节点类型。 所有节点相等并执行所有功能。 任何节点都可以作为协调器,确保没有Spof。 添加Storm或Hadoop当然会增加基础设施的复杂性。
HBase非常适合进行基于范围的扫描。 Cassandra不支持基于范围的行扫描,这可能在某些用例中是有限制的。
HBase提供跨越一个HBase集群的异步复制。 Cassandra随机分区提供了跨越单行的行复制。
HBase仅支持有序分区。 Cassandra正式支持有序分区,但Cassandra没有生产用户使用有序分配,由于“热点”创建并操作困难等热点引起。
由于有序分区,HBase可以轻松地水平放置,同时还支持Rowkey范围扫描。 如果数据存储在Cassandra的列中以支持范围扫描,Cassandra中行大小的实际限制是10兆字节。
HBase支持原子比较和设置,HBase支持一行内的事务。 Cassandra不支持原子比较和设置。
HBase不支持单行读取负载平衡,一行只有一个区域服务器一次提供。 Cassandra将支持单行读取负载平衡。
Bloom过滤器可用于HBase作为另一种形式的索引。 Cassandra使用bloom过滤器进行键查找。
触发器由HBase中的协处理器功能支持。 Cassandra不支持协处理器功能

   近年来随着大数据技术与产业链的发展,Hadoop、Spark、Storm等技术发展迅速,同时,好多做大数据相关的技术人员供不应求,身价翻了好多,让我这种屌丝好生羡慕。而HBase是大数据存储领域里的先锋和基石。扮演着非常重要的角色。但是整体架构的体量确实不小,整体的架构比Cassandra复杂很多,无形中加大了系统的复杂度和可维护性。

1.3  使用Cassandra的互联网公司 

国外:

  • eBay:200+TB,400+M写,100+M读,应用场景:商品详情页上的Social Signals,如Like,Want,Own,Favorites等;用户和商品的hunch taste graph;时间序列如移动通知,反作弊,soa,监控,日志服务等;

  • Netflix:包含288+96+60个实例的大规模集群,每秒110万的写操作,3个AWS EC2 美国东部region的zone自动复制副本,总计330万写操作/秒;

  • Apple:75000+ nodes, 10s  of PBs,Millions ops/s, largest cluster 1000+ nodes

国内:

  • 360  从公开的资料看,应该有至少1500台服务器的集群。360选用cassandra的原因如下:团队人员少,需求紧,选择开源项目;无单点,无中心,适合在线业务;代码易懂,团队成员有代码基础;社区比较活跃

  • 杭州同盾科技  具体使用量暂不清楚,只知道底层的数据存储等架构主要基于Cassandra,是一家大数据风控、反欺诈公司,发展非常迅速。

2、安装与实践  

1、环境需求

1
2
3
4
5
6
7
8
9
10
11
Installing Cassandra
 
 
Prerequisites
The latest version of Java 8, either the Oracle Java Standard Edition 8 or OpenJDK 8. To
verify that you have the correct version of java installed,  type  java -version.
For using cqlsh, the latest version of Python 2.7. To verify that you have
the correct version of Python installed,  type  python --version
根据官网知道文档需要java8以及python2.7的支持  现在好多生产环境已经都在使用CentOS7.X操作系
统了,而CentOS7.X是自带python2.7,我们自行检查一下,缺少python2.7和java8的情况,请自己安装
即可。

2、常见安装方式

二进制安装方式简答快捷,不需要编译,安装包下载后,对网络依赖比较低。

3、单机安装测试

操作系统:CentOS  7.1

Cassandra:Cassandra 3.11.1  

安装方式:yum安装  能够上网,

yum源信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/etc/yum .repos.d /cassandra .repo
[cassandra]
name=Apache Cassandra
baseurl=
gpgcheck=1
repo_gpgcheck=1
gpgkey=
安装
sudo  yum  install  cassandra
 
启动服务
service cassandra start
 
服务开机启动
chkconfig cassandra on

Cassandra的相关内容比较多,后续再介绍常见的对keyspace的操作,以及对表操作,增删改查,日常监控、安全与备份、高可用性集群等相关知识。



本文转自 tianya1993 51CTO博客,原文链接:http://blog.51cto.com/dreamlinux/1976556,如需转载请自行联系原作者

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
存储 监控 NoSQL
九大核心NoSQL数据库及使用场景详解
【10月更文挑战第6天】在当今大数据与云计算飞速发展的时代,NoSQL数据库以其灵活的数据模型、可扩展性和高性能,成为了众多应用场景下的首选。本文将为您详细介绍九大核心NoSQL数据库及其典型使用场景,帮助您在工作和学习中更好地选择和应用。
63 3
|
13天前
|
存储 缓存 NoSQL
常见的 NoSQL 数据库有哪些?
常见的 NoSQL 数据库有哪些?
20 2
|
1月前
|
SQL NoSQL 数据库
Cassandra数据库与Cql实战笔记
Cassandra数据库与Cql实战笔记
18 1
Cassandra数据库与Cql实战笔记
|
29天前
|
存储 SQL JSON
介绍一下RDBMS和NoSQL数据库之间的区别
【10月更文挑战第21天】介绍一下RDBMS和NoSQL数据库之间的区别
60 2
|
29天前
|
存储 SQL NoSQL
数据库技术深度探索:从关系型到NoSQL的演变
【10月更文挑战第21天】数据库技术深度探索:从关系型到NoSQL的演变
38 1
|
1月前
|
存储 NoSQL 搜索推荐
nosql
【10月更文挑战第14天】nosql
21 2
|
1月前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
|
1月前
|
存储 SQL 分布式计算
NoSQL 简介
10月更文挑战第10天
33 0
|
1月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
|
1月前
|
存储 NoSQL Java
Java中NoSql 数据库的使用
Java中NoSql 数据库的使用
26 0
下一篇
无影云桌面