package org.cloudgraph.cassandra; import java.util.Iterator; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ColumnDefinitions; import com.datastax.driver.core.ColumnMetadata; import com.datastax.driver.core.HostDistance; import com.datastax.driver.core.KeyspaceMetadata; import com.datastax.driver.core.Metadata; import com.datastax.driver.core.PoolingOptions; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; import com.datastax.driver.core.SimpleStatement; import com.datastax.driver.core.SocketOptions; import com.datastax.driver.core.TableMetadata; import com.datastax.driver.core.exceptions.QueryValidationException; import com.datastax.driver.core.policies.DCAwareRoundRobinPolicy; public class CQLClient { public static void main(String[] args) throws Exception { int concurrency = 50; final int maxRequestsPerConnection = 128; int maxConnections = concurrency / maxRequestsPerConnection + 1; String host = "u16551142.onlinehome-server.com"; PoolingOptions pools = new PoolingOptions(); pools.setMaxSimultaneousRequestsPerConnectionThreshold(HostDistance.LOCAL, concurrency); pools.setCoreConnectionsPerHost(HostDistance.LOCAL, maxConnections); pools.setMaxConnectionsPerHost(HostDistance.LOCAL, maxConnections); pools.setCoreConnectionsPerHost(HostDistance.REMOTE, maxConnections); pools.setMaxConnectionsPerHost(HostDistance.REMOTE, maxConnections); // Create session to hosts Cluster cluster = new Cluster.Builder() .addContactPoints(host) .withPoolingOptions(pools) .withSocketOptions(new SocketOptions().setTcpNoDelay(true)) .withLoadBalancingPolicy(new DCAwareRoundRobinPolicy()) .build(); //cluster.getConfiguration().getProtocolOptions().setCompression(ProtocolOptions.Compression.SNAPPY); Session session = cluster.connect(); Metadata metadata = cluster.getMetadata(); System.out.println(String.format("Connected to cluster '%s' on %s.", metadata.getClusterName(), metadata.getAllHosts())); for (KeyspaceMetadata keyspaceMeta : metadata.getKeyspaces()) { for (TableMetadata tableMeta : keyspaceMeta.getTables()) { for (ColumnMetadata columnMeta : tableMeta.getColumns()) { } //tableMeta.getPartitionKey() //tableMeta.getPrimaryKey() //tableMeta.getOptions() } } try { session.execute("DROP KEYSPACE cqlclient;"); } catch (QueryValidationException e) { e.printStackTrace(); } try { session.execute("CREATE KEYSPACE cqlclient WITH replication = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };"); } catch (QueryValidationException e) { e.printStackTrace(); } session.execute("USE cqlclient;"); StringBuilder sb = new StringBuilder(); try { sb = new StringBuilder(); sb.append("DROP TABLE user;"); session.execute(sb.toString()); } catch (QueryValidationException e) { e.printStackTrace(); } try { sb = new StringBuilder(); sb.append("CREATE TABLE user (key bigint PRIMARY KEY, name text, age int);"); session.execute(sb.toString()); } catch (QueryValidationException e) { e.printStackTrace(); } sb = new StringBuilder(); sb.append("UPDATE user SET name='hank', age=34 WHERE key=1;"); SimpleStatement statement = new SimpleStatement(sb.toString()); ResultSet rs = session.execute(statement); sb = new StringBuilder(); sb.append("INSERT INTO user (name, age, key) VALUES ('galye', 44, 2);"); statement = new SimpleStatement(sb.toString()); rs = session.execute(statement); sb = new StringBuilder(); sb.append("SELECT * FROM user"); statement = new SimpleStatement(sb.toString()); rs = session.execute(statement); for (ColumnDefinitions.Definition def : rs.getColumnDefinitions()) { System.out.println(def.getKeyspace() + ":" + def.getTable() + ":" + def.getType() + ":" + def.getName()); } Iterator<Row> iter = rs.iterator(); while (iter.hasNext()) { Row row = iter.next(); System.out.println(row); } System.exit(0); } }