springboot集成Cassandra浅谈及项目实践

1 篇文章 0 订阅
1 篇文章 0 订阅

pom.xml添加Cassandra依赖

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-cassandra</artifactId>
		</dependency>

application.properties配置Cassandra连接信息

spring.data.cassandra.contact-points=172.16.102.66,172.16.102.67,172.16.102.68
spring.data.cassandra.port=9042
spring.data.cassandra.keyspace-name=table
spring.data.cassandra.username=username
spring.data.cassandra.password=password
spring.data.cassandra.consistency-level=ONE
spring.data.cassandra.serial-consistency-level=ONE

spring.data.cassandra.contact-points:cassandra集群节点
spring.data.cassandra.port:cassandra默认端口9042,可以修改
spring.data.cassandra.keyspace-name:相当于mysql的数据库名
spring.data.cassandra.consistency-level=ONE代表只要有一个节点响应就返回,ALL代表所有节点都返回

创建持久层数据操作类

package com.zhcx.modules.mapper;

import java.util.List;

import org.springframework.data.cassandra.repository.Query;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.repository.CrudRepository;

import com.zhcx.modules.domain.AlipayBillRecord;

public interface AlipayBillRecordRepository extends CrudRepository<AlipayBillRecord, String> {

	@Query("select * from alipay_bill_record where app_id=?0 and bill_day=?1")
	List<AlipayBillRecord> queryByAppIdAndDay(String appId,String billDay);

	/**
	 * 根据条件查询总条数
	 * @param appId
	 * @param eventType
	 * @param tsPartition
	 * @return
	 */
	@Query("select count(*) from alipay_bill_record where app_id=?0 and bill_day=?1")
    long queryPageCount(String appId,String billDay);

	/**
	 * 分页查询数据
	 * @param appId
	 * @param eventType
	 * @param tsPartition
	 * @param pageRequest
	 * @return
	 */
	@Query("select * from alipay_bill_record where app_id=?0 and bill_day=?1")
    Slice<AlipayBillRecord> queryByPage(String appId,String billDay, Pageable pageRequest);
}

Cassandra使用心得

1.Cassandra是一个Nosql时序数据库,采用分布式架构,各节点数据同步保证最终一致性,底层数据存储使用sstable。
2.Cassandra插入数据很快,每秒能达到10w+,由于墓碑机制,删除数据相当于在sstable中插入一条标记为墓碑的数据,所以不适合做大量删除操作。
3.Cassandra有分区主键和集群主键,分区主键相当于mysql分表的分区键,确定存储数据的区块,一般建议一个区块不超过500M;集群主键确定区块中的唯一一条数据,如果插入两条分区主键和集群主键一样的数据,后者会覆盖前者。
4.Cassandra支持海量数据的快速存储,可以动态扩容节点;支持count函数,但不适合统计大量数据,统计很慢
5.Cassandra支持视图,视图也是一张表,主表会自动同步数据到主表上的视图

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中整合Cassandra可以通过以下几个步骤完成: 1. 添加Cassandra依赖:在`pom.xml`文件中添加Cassandra的驱动依赖,例如: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-cassandra</artifactId> </dependency> ``` 2. 配置Cassandra连接信息:在`application.properties`文件中配置Cassandra的连接信息,例如: ```properties spring.data.cassandra.contact-points=your-cassandra-host spring.data.cassandra.port=9042 spring.data.cassandra.keyspace-name=your-keyspace-name ``` 3. 创建实体类:创建与Cassandra表对应的实体类,使用`@Table`注解指定表名,使用`@PrimaryKey`注解指定主键,例如: ```java @Table("users") public class User { @PrimaryKey("id") private UUID id; @Column("name") private String name; // getters and setters } ``` 4. 创建Repository:创建一个继承自`CassandraRepository`的接口,用于定义对Cassandra表的操作,例如: ```java @Repository public interface UserRepository extends CassandraRepository<User, UUID> { List<User> findByName(String name); } ``` 5. 使用Repository:在需要访问Cassandra数据的地方使用自动注入的Repository进行操作,例如: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> getUsersByName(String name) { return userRepository.findByName(name); } } ``` 这样就完成了Spring Boot与Cassandra整合。你可以根据具体的业务需求,使用Repository提供的方法进行数据操作。如果需要更复杂的查询,可以使用Cassandra的查询语言CQL来编写自定义查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值