一位同事最近告诉我有关Cassandra的一些好处,我决定尝试一下。 Apache Cassandra 快速入门中将Apache Cassandra描述为“当今最流行的NoSQL数据库之一”。 Apache Cassandra的 主页指出:“当您需要可扩展性和高可用性而不影响性能时, Apache Cassandra数据库是正确的选择。” Cassandra是正在使用的公司 ,如易趣 , Netflix的 , 的Adobe , reddit的 , Instagram的 ,和Twitter的 。 这篇文章总结了Cassandra入门的步骤。
可以从Apache Cassandra主页上 下载 Apache Cassandra 。 下载页面指出“ Apache Cassandra的最新稳定版本是2.0.7 (于2014-04-18发行)”,这是我将在本文中讨论和使用的版本。
对于这篇文章,我从Planet Cassandra Downloads下载并安装了DataStax Community Edition。 DataStax社区2.0.7版包括“ Apache Cassandra生产中最稳定和推荐的版本(2.0.7)”。 有适用于Mac OS X , Microsoft Windows和几种Linux的 DataStax Community Edition下载。
下一个屏幕快照显示了DataStax Community Edition安装随附的Apache Cassandra的“ bin”目录的目录列表。
从该“ bin”目录,只需运行适当的可执行文件即可启动Cassandra服务器。 对于单台Windows机器,该命令为cassandra.bat
,此步骤在下一个屏幕快照中说明。
交互式命令行工具cqlsh也位于Apache Cassandra的“ bin”子目录中。 该工具类似于Oracle数据库的 SQL * Plus , MySQL数据库的 mysql和PostgreSQL的 psql 。 它允许人们输入各种CQL ( Cassandra查询语言 )语句,例如插入新数据和查询数据。 下一个屏幕快照显示了从Windows计算机上的命令行启动cqshl 。
从上一张图像可以得出一些有用的观察结果。 从启动cqlsh
的输出显示,此版本的Apache Cassandra为2.0.7,此版本的cqlsh
为4.1.1,相关的CQL规范为3.1.1 。 前一个屏幕快照还演示了通过运行“ HELP”命令提供的帮助。 我们可以看到有多个“文档化的Shell命令”以及更多的“ CQL帮助主题”。
上一个屏幕快照展示了cqlsh中的“ help”命令列出了可以在其上专门运行help命令的各个主题。 例如,下一个屏幕快照演示了在cqlsh中运行“帮助类型”的输出。
在此屏幕快照中,我们看到cqlsh支持的CQL数据类型 ,例如ascii
, text
/ varchar
, decimal
, int
, double
, timestamp
, list
, set
和map
。
Cassandra中的键空间
键空间在Cassandra中很重要。 尽管本文涵盖了Cassandra 2.0,但Cassandra 1.0文档很好地解释了Cassandra中的键空间:“在Cassandra中,键空间是应用程序数据的容器,类似于关系数据库中的架构。 键空间用于将列族组合在一起。 通常,一个集群每个应用程序只有一个密钥空间。” 本文档继续说明键空间通常用于按复制策略对列族进行分组。 下一个屏幕截图演示了如何在cqlsh
创建键空间并列出可用的键空间。
上一个屏幕快照包括使用命令SELECT * FROM system.schema_keyspaces;的示例。 查看可用的键空间。 如果只想列出可用键空间的名称列表,而没有其他所有详细信息,则很容易使用desc键空间 ,如以下屏幕快照所示。
创建列族(“表”)
创建键空间后,可以创建列族(或表)。 下一个屏幕快照演示了如何将新创建的movies_keyspace
与movies_keyspace
一起use movies_keyspace;
语句,然后显示使用cqlsh
命令SOURCE(类似于在SQL * Plus中使用@
)来运行外部文件以创建表(列族)。 屏幕快照演示列出可用表与desc tables
命令并列出一个给定表的具体细节与(在这种情况下,电影) desc table movies
命令。
上面的屏幕快照展示了如何使用SOURCE命令运行名为createMovie.cql
的外部文件。 接下来显示createMovie.cql
文件的代码清单。
CREATE TABLE movies
(
title varchar,
year int,
description varchar,
PRIMARY KEY (title, year)
);
在列族中插入数据和从中查询
下一个屏幕快照演示了如何将数据插入到新创建的列族/表中[ insert into movies_keyspace.movies (title, year, description) values ('Raiders of the Lost Ark', 1981, 'First of Indiana Jones movies.');
]。 该图像还显示了如何查询列族/表以查看其内容[ select * from movies
]。
Cassandra不是关系数据库
查看刚刚显示的Cassandra查询语言(CQL)语句可能会使某人相信Cassandra是关系数据库。 但是,CQL是Cassandra 2.0中添加的类似关系的功能,旨在帮助具有SQL专业知识的人更容易地采用Cassandra。 同样, 在2.0 / 2.1中添加了触发器 。 尽管存在这些Cassandra功能的目的是使关系数据库用户更轻松地采用Cassandra,但Cassandra与关系数据库之间还是存在很大差异。
Cassandra数据模型是Apache Cassandra 1.0文档中的页面,该页面描述了Cassandra和关系数据库之间的一些关键区别。 这些包括:
- “ Cassandra不像表之间的关系数据库那样强制列族之间的关系”
- 卡桑德拉(Cassandra)中没有外键,卡桑德拉(Cassandra)中没有“ joining”。
- Cassandra“表”(列族)建模应基于要使用的预期查询进行。
结论
我才刚开始接触Cassandra,但也希望了解更多。 这篇文章重点介绍了获取和开始使用Cassandra的一些基础知识。 要真正了解Cassandra,需要了解许多有关Cassandra的知识以及一些“更深层次”的主题,这些知识包括Cassandra体系结构 (以及此处 ), Cassandra Data Modeling (以及此处 )以及Cassandra的优缺点 。
翻译自: https://www.javacodegeeks.com/2014/05/hello-cassandra.html