日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Data对Cassandra 3的支持

發布時間:2023/12/3 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Data对Cassandra 3的支持 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

名為Ingalls的新Spring Data發布火車的發布引起了我的關注,其中之一是Spring Data Cassandra最終支持Cassandra 3+。 因此,我回顧了我的一個舊樣本,并嘗試了較新版本的Cassandra。

安裝Cassandra

第一步是安裝本地版本的Cassandra,我繼續發現ccm工具在能夠啟動和拆除小型集群方面非常出色。 這是我正在運行的命令,用于啟動一個基于3個節點的Apache Cassandra 3.9集群。

ccm create test -v 3.9 -n 3 -s --vnodes

創建模式

連接到集群中的節點:

ccm node1 cqlshCREATE KEYSPACE IF NOT EXISTS sample WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};

接下來,我需要創建表來保存數據。 卡桑德拉(Cassandra)的一般建議是根據查詢模式對表進行建模-鑒于此,我首先定義一個表來保存基本的“旅館”信息:

CREATE TABLE IF NOT EXISTS sample.hotels (id UUID,name varchar,address varchar,state varchar,zip varchar,primary key((id), name) );

假設我必須支持兩種查詢模式–基于說第一個字母的酒店檢索和按州檢索酒店,我有一個“ hotels_by_letter”非規范化表來支持按“第一個字母”檢索:

CREATE TABLE IF NOT EXISTS sample.hotels_by_letter (first_letter varchar,hotel_name varchar,hotel_id UUID,address varchar,state varchar,zip varchar,primary key((first_letter), hotel_name, hotel_id) );

僅針對各種情況,就可以使用“ hotels_by_state”實例化視圖來支持按酒店所在的州進行檢索:

CREATE MATERIALIZED VIEW sample.hotels_by_state ASSELECT id, name, address, state, zip FROM hotelsWHERE state IS NOT NULL AND id IS NOT NULL AND name IS NOT NULLPRIMARY KEY ((state), name, id)WITH CLUSTERING ORDER BY (name DESC)

編碼庫

在Java方面,由于我要持久存儲并查詢一個稱為“ Hotel”的簡單域類型,因此如下所示:

@Table("hotels") public class Hotel implements Serializable {@PrimaryKeyprivate UUID id;private String name;private String address;private String state;private String zip;... }

現在,要能夠對該實體執行基本的CRUD操作,所需的就是一個存儲庫接口 ,如以下代碼所示:

import cass.domain.Hotel; import org.springframework.data.repository.CrudRepository;import java.util.UUID;public interface HotelRepository extends CrudRepository<Hotel, UUID>, HotelRepositoryCustom {}

此存儲庫還從HotelRepositoryCustom接口繼承,該接口將提供自定義查找器以支持按名字和狀態進行檢索。

現在要保留一個酒店實體,我要做的就是調用存儲庫方法:

hotelRepository.save(hotel);

實例化視圖中的數據由Cassandra自動同步和維護,但是“ hotels_by_letter”表中的數據必須通過代碼進行管理,因此我定義了另一個存儲庫來維護該表中的數據:

public interface HotelByLetterRepository extends CrudRepository<HotelByLetter, HotelByLetterKey>, HotelByLetterRepositoryCustom {}

自定義界面及其實現是為了方便根據酒店名稱的首字母在查詢中搜索此表,并通過
Spring數據Cassandra的自定義存儲庫實現功能。

import com.datastax.driver.core.querybuilder.QueryBuilder; import com.datastax.driver.core.querybuilder.Select; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.cassandra.core.CassandraTemplate; import org.springframework.stereotype.Repository;import java.util.List;@Repository public class HotelRepositoryImpl implements HotelRepositoryCustom {private final CassandraTemplate cassandraTemplate;@Autowiredpublic HotelRepositoryImpl(CassandraTemplate cassandraTemplate) {this.cassandraTemplate = cassandraTemplate;}@Overridepublic List<Hotel> findByState(String state) {Select select = QueryBuilder.select().from("hotels_by_state");select.where(QueryBuilder.eq("state", state));return this.cassandraTemplate.select(select, Hotel.class);} }@Repository public class HotelByLetterRepositoryImpl implements HotelByLetterRepositoryCustom {private final CassandraTemplate cassandraTemplate;public HotelByLetterRepositoryImpl(CassandraTemplate cassandraTemplate) {this.cassandraTemplate = cassandraTemplate;}@Overridepublic List<HotelByLetter> findByFirstLetter(String letter) {Select select = QueryBuilder.select().from("hotels_by_letter");select.where(QueryBuilder.eq("first_letter", letter));return this.cassandraTemplate.select(select, HotelByLetter.class);}}

給定這些存儲庫類,提供查詢支持的自定義存儲庫,其余的代碼是將Spring Boot的Cassandra Auto Configuration所促進的所有工作聯系在一起。

本質上就是全部, Spring Data Cassandra使與Cassandra 3+的交互變得非常簡單。

我相信,一個完整的工作項目可以更好地熟悉這個出色的庫,并且我的github倉庫中也提供了這樣的示例– https://github.com/bijukunjummen/sample-boot-with-cassandra

翻譯自: https://www.javacodegeeks.com/2017/01/spring-data-support-cassandra-3.html

總結

以上是生活随笔為你收集整理的Spring Data对Cassandra 3的支持的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。