欢迎投稿

今日深度:

Cassandra入门,

Cassandra入门,


Cassandra要解决的问题就是伸缩(web-scale)。没有中心节点(masterless),对应于CAP理论,Cassandra属于AP

几个概念
节点(node)
集群(cluster,ring)
数据中心
复制因数
Gossiper:节点之间相互通知自己状态。

Cassandra重要特性:

Primary Key = Partition Key + Clustering Key

Partition Key:用来决定数据在哪个节点读写。
Clustering Key:保证磁盘存储的顺序,以及数据模型的唯一性。

应用场景

Cassandra反模式

下载Cassandra:
http://www.apache.org/dyn/closer.lua/cassandra/3.11.2/apache-cassandra-3.11.2-bin.tar.gz

解压后运行
apache-cassandra-3.11.2\bin\cassandra.bat

通过nodetool查看:

D:\Tools\apache-cassandra-3.11.2\bin>nodetool status
Datacenter: datacenter1
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
UN  127.0.0.1  103.77 KiB  256          100.0%            043457d9-c61b-49ff-a6a3-5e1c118a554d  rack1

运行cqlsh

D:\Tools\apache-cassandra-3.11.2\bin>cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>

创建Keyspace,注意这里是 datacenter1,需要和nodetool status查询的Datacenter名字相同。

CREATE KEYSPACE mykeyspace WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1':'1'}

添加表

CREATE TABLE mykeyspace.myTable ( 
      name text, age int, group int,
      PRIMARY KEY (group,name));

插入数据,查询:

cqlsh> INSERT INTO mykeyspace.myTable(name, age, group) VALUES('andy', 33, 1);
cqlsh> SELECT * FROM mykeyspace.myTable;

 group | name | age
-------+------+-----
     1 | andy |  33

Java API操作
添加dependency:

  <dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>cassandra-driver-core</artifactId>
    <version>3.3.0</version>
  </dependency>

添加Java类:

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class CassandraTest {
    public static void main(String[] args) {
        Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
        Session session = cluster.connect();
        session.execute("INSERT INTO mykeyspace.myTable(name, age, group) VALUES('Test', 33, 2)");
        ResultSet rs = session.execute("SELECT * FROM mykeyspace.myTable WHERE group=? AND name=?", 2, "Test");
        System.out.println(rs.all());
        session.close();
        cluster.close();
    }
}

运行结果:

[Row[2, Test, 33]]

www.htsjk.Com true http://www.htsjk.com/cassandra/30849.html NewsArticle Cassandra入门, Cassandra要解决的问题就是伸缩(web-scale)。没有中心节点(masterless),对应于CAP理论,Cassandra属于AP 几个概念 节点(node) 集群(cluster,ring) 数据中心 复制因数 Gossi...
相关文章
    暂无相关文章
评论暂时关闭