博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NoSQL实现(3)——Cassandra
阅读量:5746 次
发布时间:2019-06-18

本文共 2355 字,大约阅读时间需要 7 分钟。

  • 列族数据库

这一次使用的NoSQL数据库是Cassandra,它是一种列族数据库。与传通用数据库不同,列族数据库将数据存在列族中,一个列族中可以有多个列,一条记录可以有多个列族且用一个唯一的标识rowkey来表示。列族数据库的各行不一定要具备相同的列,可以在某一行中添加一个列而不把它加入其它行中。它与传统数据库的记录区别可以从以下两张图中看出来:

传统数据库,一行即为一个记录,每一条记录对应的列都相同
列族数据库,每一条记录可以有多个列族,且拥有的列可以不相同

  • Cassandra的配置

在Cassandra服务器的安装时,需要修改以下几个地方:

  1. data_file_directories:这是Cassandra数据存储的目录,可以将其修改到自己建立的data文件夹中。
  2. commitlog_directory :Cassandra提交日志文件夹,也可以将其修改。
  3. saved_caches_directory:Cassandra应保存计数器缓存,将缓存保存到设置的saved_caches_directory中

除此之外,因为在例子中写好了用户名和密码,因此需要将Cassandra服务器的验证方式修改为用户名+密码的验证方式,为此需要修改cassandra.yaml中的其它几个配置,让Cassandra使用用户名/密码验证:

  1.  authenticator :后端认证,用于标识用户,Cassandra提供了两种方法:AllowAllAuthenticator,PasswordAuthenticator。
    AllowAllAuthenticator:不执行任何检查 - 将其设置为禁用身份验证。 PasswordAuthenticator:依赖用户名/密码对来验证用户。如果使用了这个认证方式,那么还需要将role_manager设置为CassandraRoleManager。
     默认值为AllowAllAuthenticator,因为需要修改为用户名/密码验证所以将其修改为: 

    authenticator: org.apache.cassandra.auth.PasswordAuthenticator 复制代码
  2. authorizer:后端授权,用于限制访问/提供权限,Cassandra提供了两种类型:AllowAllAuthorizer,CassandraAuthorizer。
    AllowAllAuthorizer:允许任何用户的任何操作。
    CassandraAuthorizer :通过授权决定登录之后用户具有哪些权限
    默认值为AllowAllAuthorizer,这里可以将其改成

    authorizer: org.apache.cassandra.auth.CassandraAuthorizer复制代码
  3. role_manager:部分认证和授权后端,用于维护角色之间的授权和成员资格。Cassandra只提供了CassandraRoleManager,它将角色信息存储在system_auth中。

  • 实例
  1. 先在application.properties里对连接Cassandra服务器进行配置:
    #连接节点spring.data.cassandra.contact-points=127.0.0.1#键值空间spring.data.cassandra.keyspace-name=testspring.data.cassandra.port=9042spring.data.cassandra.username=testspring.data.cassandra.password=test复制代码
  2. 定义一个实体类,并加上@Table的注解,让其成为对应的表
    @Table(value = "user")public class User implements Serializable {    @PrimaryKey    private String id;    @Column(value = "name")    private String name;    @Column(value = "age")    private int age;    public User(String id,String name,int age){        this.id = id;        this.name = name;        this.age = age;    }   ……}复制代码
    与MongoDB不同,在标识主键的时候,Cassandra使用的注解是@PrimaryKey而不是@Id
  3. 编写一个UserRepository接口,让它继承CassandraRepository并自定义一个操作:
    @Repositorypublic interface UserRepository extends CassandraRepository
    { User findUserById(String id);}复制代码
  4. 编写一个Service,将UserRepository注入并运用其自带的一些操作完成增删改查的功能。
    @Servicepublic class UserService {    @Autowired   UserRepository repository;    public void add(User u){        repository.insert(u);        System.out.println("INSERT SUCCESS");    }  ……}复制代码

转载地址:http://ipozx.baihongyu.com/

你可能感兴趣的文章
[数分提高]2014-2015-2第2教学周第2次课
查看>>
LeetCode - Excel Sheet Column Number
查看>>
OS Kernel Parameter.semopm
查看>>
解决SpringMVC的@ResponseBody返回中文乱码
查看>>
java设计模式2--抽象工厂模式(Abstract Factory)
查看>>
Nginx 用log_format设置日志格式
查看>>
选择比能力更重要,我们怎么来选择加入哪个创业项目呢?
查看>>
使用maven创建一个例子
查看>>
Oracle---number数据类型
查看>>
lr场景运行报错的解决方法
查看>>
如何实现4分频?
查看>>
Cordova4.0 系列 -- 基本环境搭建(1)
查看>>
muduo网络图书馆评测
查看>>
VC获得window操作系统版本号, 获取操作系统位数
查看>>
新浪微薄份额2(分享)
查看>>
AndroidStudio调用so文件
查看>>
企业退信的常见问题?
查看>>
【转】Android自动化测试之MonkeyRunner录制和回放脚本(四)
查看>>
(转)如何判断链表中是否有环
查看>>
Android正在使用Handler实现消息分发机制(零)
查看>>