• 列族数据库

这一次使用的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=test
    spring.data.cassandra.port=9042
    spring.data.cassandra.username=test
    spring.data.cassandra.password=test复制代码
  2. 定义一个实体类,并加上@Table的注解,让其成为对应的表
    @Table(value = "user")
    public class User implements Serializable {@PrimaryKeyprivate 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并自定义一个操作:
    @Repository
    public interface UserRepository extends CassandraRepository<User,String> {User findUserById(String id);
    }复制代码
  4. 编写一个Service,将UserRepository注入并运用其自带的一些操作完成增删改查的功能。
    @Service
    public class UserService {@AutowiredUserRepository repository;public void add(User u){repository.insert(u);System.out.println("INSERT SUCCESS");}……
    }复制代码

转载于:https://juejin.im/post/5b610b2ce51d4519601af693

NoSQL实现(3)——Cassandra相关推荐

  1. NoSql数据库:Cassandra,Mongo,Redis数据库比较

    1.什么是NoSql数据库? NoSql(不仅是Sql)数据库是可水平扩展,持久存储半结构或非结构化数据并具有灵活模式的非关系数据库. 这些数据库支持多种数据模型,例如键值,文档,列族,基于图形的,内 ...

  2. NoSQL Manager for Cassandra 与 NoSQL Manager for MongoDB 破解

    以下为三手乃至四手转载 ,因转载失败只能重新发布 1.方式一 删除这两个地方的东西就好了 运行 -->regedit HKEY_CURRENT_USER\Software\NoSQL Manag ...

  3. [zz]NoSQL对比:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j

    原文自:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis Cassandra vs MongoDB vs CouchDB vs Re ...

  4. 数据源管理 | 分布式NoSQL系统,Cassandra集群管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.Cassandra简介 1.基础描述 Cassandra是一套开源分布式NoSQL数据库系统.它最初由Facebook开发,用于储存收件箱 ...

  5. cassandra mongodb选择——cassandra:分布式扩展好,写性能强,以及可以预料的查询;mongodb:非事务,支持复杂查询,但是不适合报表...

    Of course, like any technology MongoDB has its strengths and weaknesses. MongoDB is designed for OLT ...

  6. Cassandra 3.x官方文档(1)---关于Cassandra

    写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...

  7. nosql数据库学习总结

    大数据时代的数据库选择:SQL还是NoSQL? 执行大数据项目的企业面对的关键决策之一是使用哪个数据库,SQL还是NoSQL?SQL有着骄人的业绩,庞 大的安装基础;而NoSQL正在获得可观的收益,且 ...

  8. 金融系统 mysql,mysql - 适用于CRM,CMS和其他金融系统的RDBMS与NoSQL [已结束]

    我已经在互联网上阅读了整个SQL和NoSQL的内容(花了几天时间,所以我有权这样称呼它:),但我仍然觉得我离决定我们的产品将要使用的平台还很远. 我们即将开始设计一套新的产品,主要适合CRM/CMS类 ...

  9. NoSQL和SQL怎么选用?

    简介:NoSQL 有分很多种,其中key-value NoSQL (Redis, MemcacheD, etc) 的选用相对比较清楚些,大多是当后端Data storage的cache层来用.这篇主要 ...

最新文章

  1. Linux在线求助 man page
  2. XCMS V1.0 Beta1 发布
  3. how tomcat works 1 simple web server
  4. s3c6410 开发板Linux系统支持 K9GAG08U0E的方法
  5. 成功解决AttributeError: 'Word2Vec' object has no attribute 'index2word'
  6. wincc无法修改服务器名称_WinCC(TIA)组件SIVARC在BA空调及冷热源系统改造项目中的应用...
  7. 让iis支持下载apk,ipa文件
  8. AAAI2020录用论文汇总(一)
  9. Numpy基础(part2)--ndarray数组
  10. 关于移动手机端富文本编辑器qeditor图片上传改造
  11. android intent bundle传递参数,Android 使用Intent和Bundle传递数据及如何传递enum
  12. CSDN插件限时内测,新用户抢永久免费去广告特权
  13. 由脚本创建的新元素事件不触发和用的easyUI插件中的多选框不起作用的解决方法...
  14. leetcode个人题解——#18 4sums
  15. 《剑指offer》面试题17——合并两个有序的链表(C++):
  16. 计算机实验报告protel,PROTEL_99SE实验报告
  17. wps2019无法使用粘贴复制快捷键
  18. linux查看wifi信号命令_详细解析:Linux系统的无线网络命令
  19. 让我们愉快的切割吧 - 4:如何在无特定间隔符下拆分字母和数字
  20. 重生之我是赏金猎人(九)-从本无法触发的xss到梦幻联动挖掘多个致命接口下的XSS触发点

热门文章

  1. 高金吉院士:让机器“自愈化”引领新科技变革
  2. 新基建下的自动驾驶:单车智能和车路协同之争
  3. 《麻省理工学院技术评论》评出最新十大突破性技术
  4. 《Nature》重磅 | 研究员利用机器学习发现近 6000 种未知病毒
  5. 我在互联网大厂,和同事谈恋爱
  6. 大写的服!90 后程序员利用业余时间帮网友鉴定毒蘑菇,拥有百万粉丝成网络大 V...
  7. webpack2--webpack 4.X 快速创建demo
  8. ant-design-pro Login 中的 UserName 和 Password 的验证规则 rules
  9. 洗礼灵魂,修炼python(85)-- 知识拾遗篇 —— 深度剖析让人幽怨的编码
  10. mac -- 安装OpenCV