Homebrew安装各数据库服务
Homebrew安装Cassandra
$ brew install Cassandra
安装cqlsh
$ pip install cql
alias为连接Cassandra服务设立别名
$ vim ~/.bashrc
文件中填入以下命令:
alias conn_cassandra='cqlsh -u <use_rname> -p <password> -k <keyspace> 10.125.111.111'
保存并退出文件后,运行:
$ source ~/.bashrc
有可能出现在开启新终端后别名失效的情况
此时可以打开.bash_profile文件
$ vim ~/.bash_profile
在最后行填入以下命令
source ~/.bashrc
注:利用homebrew安装以上服务不需要设置环境变量,因其已自动设置了环境变量。
Cassandra常用操作
启动和关闭本地Cassandra服务
$ brew services start Cassandra
$ brew services stop Cassandra
连接Cassandra服务器
$ conn_cassandra
退出Cassandra服务器(mongodb、redis相同)
exit
Cassandra基本操作
select JSON <key1>,<key2>,<key3> from <table> where <key1>='value of key1' and <key2>='value of key2' and <key3>='value of key3' allow filtering;
Homebrew安装MongoDB
与上述安装Cassandra步骤类似
$ brew install mongodb
alias为连接mongodb设立别名
alias conn_mongodb='mongo --host mongodb://<user_name>:<password>@10.125.111.111:27017/<your_mongodb_name>'
启动和关闭本地mongodb服务与Cassandra相同,将Cassandra换成mongodb即可。
mongodb常用操作
mongodb中可以有多个databases,每个database可以创建多个collections,collection是底层数据分区(partition)的单位,每个collection都有多个底层的数据文件组成。
首先可以查看help。
查看DB、表状态信息:db.stats()
、db.<your_table>.stats()
查看全部collections:show collections
列出collection的所有项目:db. collection.find()
查询:db.<your_table>.find({"_id": "84d3457edb0a4bad8f76607f880cb2be"})
Homebrew安装Redis
$ brew install redis
alias为连接Redis设立别名
alias conn_redis='redis-cli -h <host_domain_name>'
启动和关闭本地Redis服务与mongodb、Cassandra相同,将mongodb、Cassandra换成Redis即可。
Redis常用操作
Redis是Key-Value型NoSQL,基于键值对中的值,提供了5中数据结构:string、list、zset、hash、set。
执行help @generic
可以查看所有操作符:
以下以string型data_statistics:test_interval_time
键举例:
查看所有键:KEYS *
⚠️ 线上Redis禁止使用KEYS *pattern* ! 命令会引起阻塞,导致雪崩(相当于关系性数据的库的 select *)
查看名称中包含last_time
的key:KEYS *last_time*
键总数:dbsize
获取键值:GET data_statistics:test_journey_interval_last_time
检查键是否存在:exists data_statistics:test_journey_interval_last_time
删除键:DEL
查询键类型:TYPE
查询内部编码:OBJECT encoding
Hash类型以collection_data:did:84d3457edb0a4bad8f76607f880cb2be
键进行举例:
取回单个域HGET key field:
HGET collection_data:did:84d3457edb0a4bad8f76607f880cb2be F110
取回所有域:
HGETALL collection_data:did:84d3457edb0a4bad8f76607f880cb2be
数据库对比
数据库 | 类型 | 存储对象 | 存储格式 | 存储方式 | 速度 | 事务操作 |
---|---|---|---|---|---|---|
MySQL | SQL | String | K-V | 持久化存储 | 较慢 | 支持 |
MongDB | 介于SQL与NoSQL之间 | file | BSON | 虚拟内存+持久化 | 高速读写 | 不支持 |
Redis | NoSQL(K-V型) | String、hash、set、list等 | K-V | 内存+持久化 | 低于MongoDB | 支持,但不支持回滚 |
Cassandra | NoSQL | 列存储 | MemTable数据格式 | CommitLog持久化 | 极高写入 | 支持,但不支持回滚 |
MySQL、MongoDB与Redis的比较推荐这篇博客
Mysql在大数据量时效率显著下降,MongoDB更多时候作为关系数据库的一种替代。
应用场景
Redis适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。
例如:股票价格、数据分析、实时数据搜集、实时通讯。
MongoDB适用于需要动态查询支持;需要使用索引而不是 map/reduce功能;需要对大数据库有性能要求;需要使用 CouchDB但因为数据改变太频繁而占满内存的应用程序。
例如:你本打算采用 MySQL或 PostgreSQL,但因为它们本身自带的预定义栏让你望而却步。
Cassandra适用于当使用写操作多过读操作(记录日志)如果每个系统组建都必须用 Java编写。
例如:银行业,金融业(虽然对于金融交易不是必须的,但这些产业对数据库的要求会比它们更大)写比读更快,所以一个自然的特性就是实时数据分析
MySQL插入和查询性能都非常的高效,适用于数据量不是非常大,需要大量的插入和查询的场景。
例如:web网站系统、用户的登录日志,操作日志、数据仓库系统、嵌入式系统(嵌入式环境对软件系统最大的限制是硬件资源非常有限,而mysql在硬件资源的使用方面可伸缩性非常强,而且mysql有专门针对嵌入式环境的版本)等。