Cassandra,NoSQL的一种,从数据库排名上,看得出来,NoSQL系列,排名第三(Redis虽然是KV,但是没有人用它当数据库,都是做缓存)
MongoDB是文档型的,Cassandra和Hbase都属于KV型,且实现机制类似,都是基于LSM树设计,受Google Bigtable启发,不过Hbase属于Hadoop体系,过于重载,因此Cassandra首当其冲,是NoSQL里比较牛逼的
当然不是没有问题,比如事务是最终一致性,强一致性的就不适合Cassandra,这也造就了Cassandra无中心,可以线性扩容的良好特性(这一点很重要啊,10台--100台---1000台,吞吐量线性提升),因此特别适合做监控数据的存储。
Rank | DBMS | Database Model | Score | ||||
---|---|---|---|---|---|---|---|
May 2017 | Apr 2017 | May 2016 | May 2017 | Apr 2017 | May 2016 | ||
1. | 1. | 1. | Oracle | Relational DBMS | 1354.31 | -47.68 | -107.71 |
2. | 2. | 2. | MySQL | Relational DBMS | 1340.03 | -24.59 | -31.80 |
3. | 3. | 3. | Microsoft SQL Server | Relational DBMS | 1213.80 | +9.03 | +70.98 |
4. | 4. | 5. | PostgreSQL | Relational DBMS | 365.91 | +4.14 | +58.30 |
5. | 5. | 4. | MongoDB | Document store | 331.58 | +6.16 | +11.36 |
6. | 6. | 6. | DB2 | Relational DBMS | 188.84 | +2.18 | +2.88 |
7. | 7. | 8. | Microsoft Access | Relational DBMS | 129.87 | +1.69 | -1.70 |
8. | 8. | 7. | Cassandra | Wide column store | 123.11 | -3.07 | -11.39 |
9. | 9. | 9. | Redis | Key-value store | 117.45 | +3.09 | +9.21 |
10. | 10. | 10. | SQLite | Relational DBMS | 116.07 | +2.27 | +8.81 |
11. | 11. | 11. | Elasticsearch | Search engine | 108.82 | +3.15 | +22.51 |
12. | 12. | 12. | Teradata | Relational DBMS | 76.32 | -0.23 | +2.58 |
13. | 13. | 13. | SAP Adaptive Server | Relational DBMS | 67.75 | +0.29 | -3.73 |
14. | 14. | 14. | Solr | Search engine | 63.77 | -0.60 | -1.85 |
15. | 15. | 15. | HBase | Wide column store | 59.50 | +1.04 | +7.67 |
参考地址:https://db-engines.com/en/ranking
-----------------------------------------------------------------啰嗦半天,说正题-----------------------------------------------------------------
1. 准备下载包,太简单了,百度一下,直接到官网点Download tar包
参考地址:http://cassandra.apache.org/download/
2. 安装,太简单了,直接丢Linux下面解压即可
3. 配置,主要改conf下面的cassandra.yaml,改如下几个地方:
(1)集群名字,总要改一下嘛,叫Test Cluster总不太正式
cluster_name: 'zhengyan'
(2)各种数据文件的存放路径总要改一下的嘛,之前都丢到/var下面,总不太好,特别是系统盘一般比较小
hints_directory: /data01/cassandra/hints
data_file_directories:
- /data01/cassandra/data
commitlog_directory: /data01/cassandra/commitlog
cdc_raw_directory: /data01/cassandra/cdc_raw
saved_caches_directory: /data01/cassandra/saved_caches
(3)改本地hostname和本地ip,多网卡的时候用
PS:关于rpc的地址,如果设置为空,就跟listen address一致,而且官方墙裂建议用防火墙屏蔽这个端口
listen_address: 192.168.1.107
rpc_address: 192.168.1.107
(4)改seeds,这个用在多节点的时候,节点之间Gossip协议通信用,一般配置3台,多了也影响效率
seed_provider:
- seeds: "192.168.1.107" #ps:这里是个例子,不需要把本机写上
(5)改Snitch的模式,多节点肯定要配置多个rack多个dc,这样才能做好副本的分配,实现高可用
endpoint_snitch: GossipingPropertyFileSnitch
(6)因为下一步要使用KairosDB,因此需要把thrift的rpc端口打开,默认是关闭的,都推荐用CQL了,不走thrift
start_rpc: true
由于使用了GossipPropertyFileSnitch,需要同时修改cassandra-rackdc.properties,把本地的rack和dc设置一下
dc=datacenter1
rack=rack1
然后到bin路径下,直接执行./cassandra启动即可,是不是太简单了,几十M的包就实现了那么多牛逼的功能,回想起SAP HANA,2个G的包。。这就是商业和开源吧,商业软件更倾向于大而全,开源就专门解决一个问题