Create keyspaces and column families - marcusbb/astyanax GitHub Wiki

Astyanax provides a mechanism to programmatically create keyspaces and column families based on the Keyspace and ColumnFamily objects. The API will pick up the names and validators from the object but will allow for overrides in an operation Map<String, Object>. The API supports all properties supported by the CLI.

Create a Keyspace

Assuming you already created your keyspace object you can then create the actual keyspace by calling

keyspace.createKeyspace(ImmutableMap.<String, Object>builder()
    .put("strategy_options", ImmutableMap.<String, Object>builder()
        .put("us-east", "3");
        .put("eu-west", "3");
        .build())
    .put("strategy_class",     "NetworkTopologyStrategy")
    .build()
     );

Dropping a keyspace

keyspace.dropKeyspace()

Create a column family using defaults

ColumnFamily<String, String> CF_STANDARD1 = ColumnFamily
    .newColumnFamily("Standard1", StringSerializer.get(), StringSerializer.get());

keyspace.createColumnFamily(CF_STANDARD1,null);

Create a column family and add indexes

keyspace.createColumnFamily(CF_STANDARD1, ImmutableMap.<String, Object>builder()
    .put("column_metadata", ImmutableMap.<String, Object>builder()
        .put("Index1", ImmutableMap.<String, Object>builder()
            .put("validation_class", "UTF8Type")
            .put("index_name",       "Index1")
            .put("index_type",       "KEYS")
            .build())
        .put("Index2", ImmutableMap.<String, Object>builder()
            .put("validation_class", "UTF8Type")
            .put("index_name",       "Index2")
            .put("index_type",       "KEYS")
            .build())
        .build())
    .build());

Drop a column family

keyspace.dropColumnFamily(CF_STANDARD1);
⚠️ **GitHub.com Fallback** ⚠️