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支持视图,视图也是一张表,主表会自动同步数据到主表上的视图