javascript
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的自定義存儲庫實現功能。
給定這些存儲庫類,提供查詢支持的自定義存儲庫,其余的代碼是將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的支持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 星际1虫族电脑6d(星际争霸1虫族兵种详
- 下一篇: jsf标签p:ajax_JSF AJAX