1. 程式人生 > >學習cassandra(1)入門,使用場景(寫多讀少)和搭建啟動使用,整合Spring boot

學習cassandra(1)入門,使用場景(寫多讀少)和搭建啟動使用,整合Spring boot

1.場景 這個nosql資料庫適合寫多讀少的情況

2.入門

wget http://mirror.bit.edu.cn/apache/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz

解壓

tar -xvf apache-cassandra-3.11.1-bin.tar.gz
cd apache-cassandra-3.11.1

修改配置檔案

通用配置
vim conf/cassandra.yaml 
jvm配置
vim conf/jvm.options

啟動

[[email protected] apache-cassandra-3.11
.1]# bin/cqlsh localhost Connected to Test Cluster at localhost:9042. [cqlsh 5.0.1 | Cassandra 3.11.1 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help.

建立keyspace

tables由keyspace維護

CQL stores data in tables, whose schema defines the layout of said data in the table, and those tables are grouped in keyspaces.


官網原話

cqlsh> CREATE KEYSPACE Excelsior
   ...            WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
cqlsh> use Excelsior;
cqlsh:excelsior> CREATE TABLE t (
             ...     pk int,
             ...     t int,
             ...     v text,
             ...
s text static, ... PRIMARY KEY (pk, t) ... ); cqlsh:excelsior> cqlsh:excelsior> INSERT INTO t (pk, t, v, s) VALUES (0, 0, 'val0', 'static0'); cqlsh:excelsior> INSERT INTO t (pk, t, v, s) VALUES (0, 1, 'val1', 'static1'); cqlsh:excelsior> cqlsh:excelsior> SELECT * FROM t; pk | t | s | v ----+---+---------+------ 0 | 0 | static1 | val0 0 | 1 | static1 | val1

這裡寫圖片描述
這個表表示建立了一張名為t的表。屬性pk和t是主鍵,s(有static字尾)是全域性的。
插入和查詢還可以經過JSON

cqlsh:excelsior> select json * from t;

 [json]
------------------------------------------------
 {"pk": 0, "t": 0, "s": "static5", "v": "val0"}
 {"pk": 0, "t": 1, "s": "static5", "v": "val1"}
 {"pk": 0, "t": 2, "s": "static5", "v": "val3"}
 {"pk": 0, "t": 4, "s": "static5", "v": "val4"}
 {"pk": 0, "t": 5, "s": "static5", "v": "val5"}

(5 rows)
cqlsh:excelsior> insert into t json '{"pk": 0, "t": 5, "s": "static6", "v": "val6"}';
cqlsh:excelsior> select json * from t;

 [json]
------------------------------------------------
 {"pk": 0, "t": 0, "s": "static6", "v": "val0"}
 {"pk": 0, "t": 1, "s": "static6", "v": "val1"}
 {"pk": 0, "t": 2, "s": "static6", "v": "val3"}
 {"pk": 0, "t": 4, "s": "static6", "v": "val4"}
 {"pk": 0, "t": 5, "s": "static6", "v": "val6"}

3. 常用運維命令

檢視所有的keyspaces
cqlsh> desc keyspaces

檢視所有的tables
cqlsh> use excelsior;
cqlsh:excelsior> desc tables;
查看錶結構
cqlsh:excelsior> desc table t;

5. 設定外網訪問

修改conf/cassandra.yuml

rpc_address: 0.0.0.0
broadcast_rpc_address: 123.56.13.70

重啟

6. 整合Spring boot cassandra

pom.xml

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

登入cassandra建立keyspace和table

CREATE KEYSPACE mykeyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };

desc keyspaces;

use mykeyspace ;
CREATE TABLE customer (id TimeUUID PRIMARY KEY, firstname text, lastname text);
CREATE INDEX customerfistnameindex ON customer (firstname);
CREATE INDEX customersecondnameindex ON customer (lastname);

app.applications

spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=123.56.13.70
spring.data.cassandra.port=9042

示例程式碼:

@SpringBootApplication
public class DemoCassandraApplication  implements CommandLineRunner {

    @Autowired
    private CustomerRepository repository;

    @Override
    public void run(String... args) throws Exception {
        this.repository.deleteAll();

        // save a couple of customers
        this.repository.save(new Customer(UUIDs.timeBased(), "Alice", "Smith"));
        this.repository.save(new Customer(UUIDs.timeBased(), "Bob", "Smith"));

        // fetch all customers
        System.out.println("Customers found with findAll():");
        System.out.println("-------------------------------");
        for (Customer customer : this.repository.findAll()) {
            System.out.println(customer);
        }
        System.out.println();

        // fetch an individual customer
        System.out.println("Customer found with findByFirstName('Alice'):");
        System.out.println("--------------------------------");
        System.out.println(this.repository.findByFirstName("Alice"));

        System.out.println("Customers found with findByLastName('Smith'):");
        System.out.println("--------------------------------");
        for (Customer customer : this.repository.findByLastName("Smith")) {
            System.out.println(customer);
        }
    }

    public static void main(String[] args) {
            System.out.println("Math.abs(x)" +Math.abs(-2147483648));
            System.out.println(0-(-2147483648));
            System.out.println(Integer.MIN_VALUE);
            ConfigurableApplicationContext ctx = SpringApplication.run(DemoCassandraApplication.class, args);
            ConfigurableEnvironment env =  ctx.getEnvironment();
            String rst = JSON.toJSONString(env, SerializerFeature.PrettyFormat, SerializerFeature.WriteClassName,
                    SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat);
            System.out.println(rst);
    }

}
public interface CustomerRepository extends CrudRepository<Customer, String> {

    @Query("Select * from customer where firstname=?0")
    public Customer findByFirstName(String firstName);

    @Query("Select * from customer where lastname=?0")
    public List<Customer> findByLastName(String lastName);
}
@Table
public class Customer {

    @PrimaryKey
    private UUID id;

    private String firstName;

    private String lastName;

    public Customer() {
    }

    public Customer(UUID id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString() {
        return String.format("Customer[id=%s, firstName='%s', lastName='%s']", this.id,
                this.firstName, this.lastName);
    }

}

相關推薦

學習cassandra(1)入門使用場景()搭建啟動使用,整合Spring boot

1.場景 這個nosql資料庫適合寫多讀少的情況 2.入門 wget http://mirror.bit.edu.cn/apache/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz 解壓

LevelDB(適用於場景

一、LevelDB入門LevelDB是Google開源的持久化KV單機資料庫,具有很高的隨機寫,順序讀/寫效能,但是隨機讀的效能很一般,也就是說,LevelDB很適合應用在查詢較少,而寫很多的場景。LevelDB應用了LSM (Log Structured Merge) 策略,lsm_tree對索引變更進行延

hbase內存規劃(型)

介紹 讀寫 包括 技術分享 image mark color heap cti //簡單說來主要包括讀多寫少型和寫多讀少型),內存的相關配置卻完全不同。 1、針對不同應用場景,對多種工作模式下的參數進行詳細說明,並結合相關示例對集群規劃中最核心模塊-內存規劃進行介紹。2、H

Redis學習筆記1--入門

ase list ica cati ctu apple string replace first 一、Redis簡介: Redis(http://redis.io)是一款開源的、高性能的鍵-值存儲(key-value store),它是用ANSI C來編寫。Redis的項目

Mybatis學習系列(1) –– 入門簡介

connector ring cti 行操作 底層 數據庫連接 lean lose style MyBatis簡介 Mybatis是Apache的一個Java開開源項目,是一個支持動態Sql語句的持久層框架。Mybatis可以將Sql語句配置在XML文件中,避免將Sql語

UnityShader學習筆記1 — — 入門知識整理

空閑 vertex 相關 發布 rect triangle 節點 image style 註:資料整理自《Unity Shader入門精要》一書 一、渲染流程概念階段: 應用階段:(1)準備好場景數據:(如攝像機位置,物體以及光源等)        (2)粗粒度剔

一個Action中可以個類似的業務控制方法

1)通過模組根路徑 + 功能子路徑 = 訪問模組下子功能的路徑 @Controller @RequestMapping(value="/user") public class UserAction{ @RequestMapping(value="/add") public St

Vue.js學習記錄-1-入門 + TodoList案例

Vue入門     MVVM框架:觀察者雙向繫結         model - viewModel - view         Js物件    觀察者     DOM     Vue.js         輕量級MVVM框架         資料驅動 + 元件化前端開發

java se 學習筆記(1)識別符號資料型別陣列

準備瞭解一下java的基本語法,以解決學習的《軟體工程》《需求工程》《軟體測試》《視覺化》課程 學校所學mfc框架較為繁瑣。 Javac 原始檔,————》.class (二進位制),給jvm閱讀 //向主方法傳入引數, 引數1 引數2...(中間用空格隔開)

MongoDB學習筆記1(入門)

一、文件的注意事項: 1.  鍵值對是有序的,如:{ "name" : "stephen", "genda" : "male" } 不等於 { "genda" : "male", "name" : "stephen" } 2.  文件資訊是大小寫敏感的,如:{ "name" : "stephen" } 不等

shmget 共享記憶體 同步檔案一個程序個程序同步

首先,看看老大給我的任務:實現一個模組間的記憶體管理庫, 實現以下功能 1、該記憶體庫通訊的資料量不確定, 最大5Mbit/s  2、該記憶體庫用於模組間的資料互動 3、該記憶體庫只允許一個模組寫入, 但可多個模組讀取, 但需要各個讀取模組沒有任何相互干擾, 比如一個模組

學習vue 20天了點東西

往昔 最初團隊裡使用Angularjs進行開發,剛開始還好,到了專案後期越發感覺Angularjs太重了,以至於後來重構專案時,毅然放棄Angularjs,投入了Vue的懷抱。除了組建團隊時,是我搭建了基於Angularjs的前端開發框架,之後都是由前端小組開發。前段時間,由於公司層面的原因,整個團隊解散,不

Spring學習1):控制反轉(IoC)依賴注入(DI)的詳解以及註解(annotation)開發入門案例

前言 以往的java學習中,我們要想得到一個物件,就把它new出來。如:Apple apple = new Apple(); 在一些複雜的系統中,一個物件A可能依賴於物件B,C等(程式碼表現為A類持有B,C類的物件作為A類的屬性)。以往來說,我們想要使用B,

Scrapy框架的學習(2.scrapy入門簡單爬取頁面並使用管道(pipelines)儲存資料)

上個部落格寫了:  Scrapy的概念以及Scrapy的詳細工作流程 https://blog.csdn.net/wei18791957243/article/details/86154068 1.scrapy的安裝  pip install scrapy

JS學習筆記1——不要使用JavaScript內建的parseInt()Number()函式利用mapreduce操作實現一個string2int()函式

map/reduce練習題:不要使用JavaScript內建的parseInt()和Number()函式,利用map和reduce操作實現一個string2int()函式。 分析:把一個字串"13579"先變成Array——[1, 3, 5, 7, 9],再利用reduce

Python學習--3.1切片迭代列表生成器生成器迭代器

切片 >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] 取前3個元素,應該怎麼做? 笨辦法: >>> [L[0], L[1], L[2]] ['Micha

卷積神經網路(cnn)學習筆記1:入門

卷積神經網路       卷積神經網路(Convolutional Neural Network,CNN)是深度學習技術中極具代表的網路結構之一,在影象處理領域取得了很大的成功,在國際標準的ImageNet資料集上,許多成功的模型都是基於CNN 的。CNN相較於傳統的影象

FullCalendar學習筆記1-入門

官網下載解壓後修改了demos裡面basic-views的一些引數,完整HTML參考:<!DOCTYPE html> <html> <head>   <meta charset='utf-8' />   <link hre

ETL-Kettle學習筆記(入門簡介簡單操作)

KETTLE Kettle:簡介 ETL:簡介 ETL(Extract-Transform-Load的縮寫,即資料抽取、轉換、裝載的過程),對於企業或行業應用來說,我們經常會遇到各種資料的處理,轉換,遷移,所以瞭解並掌握一種etl工具的使用,必不可少的,Kettle就是強大的ETL工具。 Kettle:概念

(壓力分擔)(MYSQL)數據庫一實驗

配置文件 服務器 change 數據庫 master 四臺虛擬機主從配置請查詢之前MYSQL讀寫分離參考文檔,這裏不再贅述。詳細說明amoeba配置文件的書寫:實驗過程中,為了測試服務的內部運行過程,將slave服務器關閉,之後再開啟slave的時候,會發現Slave_SQL_Runnin