Repository: james-project Updated Branches: refs/heads/master dbc653d16 -> 50aacfe7f
MAILBOX-295 Add Cassandra TABLE creation options Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/432e1238 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/432e1238 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/432e1238 Branch: refs/heads/master Commit: 432e123817f766f0b3edda95a1c50e82a337112e Parents: dbc653d Author: benwa <[email protected]> Authored: Thu May 18 09:17:07 2017 +0700 Committer: benwa <[email protected]> Committed: Fri May 19 17:30:31 2017 +0700 ---------------------------------------------------------------------- .../cassandra/utils/CassandraConstants.java | 3 +++ .../cassandra/modules/CassandraAclModule.java | 6 +++++- .../modules/CassandraAnnotationModule.java | 7 ++++++- .../modules/CassandraApplicableFlagsModule.java | 7 ++++++- .../modules/CassandraDeletedMessageModule.java | 7 ++++++- .../modules/CassandraFirstUnseenModule.java | 4 ++++ .../modules/CassandraMailboxCounterModule.java | 7 ++++++- .../modules/CassandraMailboxModule.java | 11 ++++++++-- .../modules/CassandraMailboxRecentsModule.java | 7 ++++++- .../modules/CassandraMessageModule.java | 16 ++++++++++++-- .../modules/CassandraModSeqModule.java | 7 ++++++- .../cassandra/modules/CassandraQuotaModule.java | 22 ++++++++++++++------ .../modules/CassandraRegistrationModule.java | 5 ++++- .../modules/CassandraSubscriptionModule.java | 7 ++++++- .../cassandra/modules/CassandraUidModule.java | 7 ++++++- .../cassandra/CassandraDomainListModule.java | 12 +++++++---- .../james/rrt/cassandra/CassandraRRTModule.java | 16 ++++++++------ .../cassandra/access/CassandraAccessModule.java | 6 +++++- .../CassandraNotificationRegistryModule.java | 7 ++++++- .../vacation/CassandraVacationModule.java | 6 +++++- 20 files changed, 137 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java ---------------------------------------------------------------------- diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java index ec6f2df..b152088 100644 --- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java +++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraConstants.java @@ -21,4 +21,7 @@ package org.apache.james.backends.cassandra.utils; public interface CassandraConstants { int LIGHTWEIGHT_TRANSACTION_APPLIED = 0; + + + int DEFAULT_CACHED_ROW_PER_PARTITION = 10; } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java index 71527a2..e788b7e 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java @@ -29,6 +29,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraACLTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -45,7 +46,10 @@ public class CassandraAclModule implements CassandraModule { .ifNotExists() .addPartitionKey(CassandraACLTable.ID, timeuuid()) .addColumn(CassandraACLTable.ACL, text()) - .addColumn(CassandraACLTable.VERSION, bigint()))); + .addColumn(CassandraACLTable.VERSION, bigint()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java index 0dbe487..91740a2 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java @@ -28,6 +28,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraAnnotationTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -43,7 +44,11 @@ public class CassandraAnnotationModule implements CassandraModule { .ifNotExists() .addPartitionKey(CassandraAnnotationTable.MAILBOX_ID, timeuuid()) .addClusteringColumn(CassandraAnnotationTable.KEY, text()) - .addColumn(CassandraAnnotationTable.VALUE, text()))); + .addColumn(CassandraAnnotationTable.VALUE, text()) + .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java index 57d6f24..0ad45c7 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java @@ -30,6 +30,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraApplicableFlagTable; import org.apache.james.mailbox.cassandra.table.Flag; @@ -51,7 +52,11 @@ public class CassandraApplicableFlagsModule implements CassandraModule { .addColumn(Flag.DRAFT, cboolean()) .addColumn(Flag.FLAGGED, cboolean()) .addColumn(Flag.SEEN, cboolean()) - .addColumn(Flag.USER_FLAGS, set(text())))); + .addColumn(Flag.USER_FLAGS, set(text())) + .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java index c9a156f..2e97e36 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java @@ -28,6 +28,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import com.datastax.driver.core.DataType; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -43,7 +44,11 @@ public class CassandraDeletedMessageModule implements CassandraModule { SchemaBuilder.createTable(TABLE_NAME) .ifNotExists() .addPartitionKey(MAILBOX_ID, DataType.timeuuid()) - .addClusteringColumn(UID, DataType.bigint()))); + .addClusteringColumn(UID, DataType.bigint()) + .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = ImmutableList.of(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java index 1e3d1b8..871f779 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java @@ -24,6 +24,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraFirstUnseenTable; import com.datastax.driver.core.DataType; @@ -42,6 +43,9 @@ public class CassandraFirstUnseenModule implements CassandraModule { .addPartitionKey(CassandraFirstUnseenTable.MAILBOX_ID, DataType.timeuuid()) .addClusteringColumn(CassandraFirstUnseenTable.UID, DataType.bigint()) .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)) .clusteringOrder(CassandraFirstUnseenTable.UID, SchemaBuilder.Direction.ASC))); types = ImmutableList.of(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java index 9ecba5a..548bd8a 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java @@ -28,6 +28,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraMailboxCountersTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -44,7 +45,11 @@ public class CassandraMailboxCounterModule implements CassandraModule { .ifNotExists() .addPartitionKey(CassandraMailboxCountersTable.MAILBOX_ID, timeuuid()) .addColumn(CassandraMailboxCountersTable.COUNT, counter()) - .addColumn(CassandraMailboxCountersTable.UNSEEN, counter()))); + .addColumn(CassandraMailboxCountersTable.UNSEEN, counter()) + .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java index e26e54c..3b44c7e 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java @@ -28,6 +28,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathTable; import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable; @@ -47,13 +48,19 @@ public class CassandraMailboxModule implements CassandraModule { .addPartitionKey(CassandraMailboxTable.ID, timeuuid()) .addUDTColumn(CassandraMailboxTable.MAILBOX_BASE, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE)) .addColumn(CassandraMailboxTable.NAME, text()) - .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())), + .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))), new CassandraTable(CassandraMailboxPathTable.TABLE_NAME, SchemaBuilder.createTable(CassandraMailboxPathTable.TABLE_NAME) .ifNotExists() .addUDTPartitionKey(CassandraMailboxPathTable.NAMESPACE_AND_USER, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE)) .addClusteringColumn(CassandraMailboxPathTable.MAILBOX_NAME, text()) - .addColumn(CassandraMailboxPathTable.MAILBOX_ID, timeuuid()))); + .addColumn(CassandraMailboxPathTable.MAILBOX_ID, timeuuid()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = ImmutableList.of( new CassandraType(CassandraMailboxTable.MAILBOX_BASE, SchemaBuilder.createType(CassandraMailboxTable.MAILBOX_BASE) http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java index d2a41d1..65412c2 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java @@ -28,6 +28,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraMailboxRecentsTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -43,7 +44,11 @@ public class CassandraMailboxRecentsModule implements CassandraModule { SchemaBuilder.createTable(CassandraMailboxRecentsTable.TABLE_NAME) .ifNotExists() .addPartitionKey(CassandraMailboxRecentsTable.MAILBOX_ID, timeuuid()) - .addClusteringColumn(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID, bigint()))); + .addClusteringColumn(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID, bigint()) + .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java index 8654913..aa45f52 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java @@ -33,6 +33,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraMessageIdTable; import org.apache.james.mailbox.cassandra.table.CassandraMessageIds; import org.apache.james.mailbox.cassandra.table.CassandraMessageTable; @@ -40,10 +41,13 @@ import org.apache.james.mailbox.cassandra.table.Flag; import org.apache.james.mailbox.cassandra.table.MessageIdToImapUid; import com.datastax.driver.core.schemabuilder.SchemaBuilder; +import com.datastax.driver.core.schemabuilder.TableOptions; import com.google.common.collect.ImmutableList; public class CassandraMessageModule implements CassandraModule { + public static final int CACHED_MESSAGE_ID_ROWS = 1000; + public static final int CACHED_IMAP_UID_ROWS = 100; private final List<CassandraTable> tables; private final List<CassandraType> types; @@ -63,7 +67,11 @@ public class CassandraMessageModule implements CassandraModule { .addColumn(Flag.RECENT, cboolean()) .addColumn(Flag.SEEN, cboolean()) .addColumn(Flag.USER, cboolean()) - .addColumn(Flag.USER_FLAGS, set(text()))), + .addColumn(Flag.USER_FLAGS, set(text())) + .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CACHED_IMAP_UID_ROWS))), new CassandraTable(CassandraMessageIdTable.TABLE_NAME, SchemaBuilder.createTable(CassandraMessageIdTable.TABLE_NAME) .ifNotExists() @@ -78,7 +86,11 @@ public class CassandraMessageModule implements CassandraModule { .addColumn(Flag.RECENT, cboolean()) .addColumn(Flag.SEEN, cboolean()) .addColumn(Flag.USER, cboolean()) - .addColumn(Flag.USER_FLAGS, set(text()))), + .addColumn(Flag.USER_FLAGS, set(text())) + .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CACHED_MESSAGE_ID_ROWS))), new CassandraTable(CassandraMessageTable.TABLE_NAME, SchemaBuilder.createTable(CassandraMessageTable.TABLE_NAME) .ifNotExists() http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java index 3b90f16..9588642 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java @@ -29,6 +29,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -44,7 +45,11 @@ public class CassandraModSeqModule implements CassandraModule { SchemaBuilder.createTable(CassandraMessageModseqTable.TABLE_NAME) .ifNotExists() .addPartitionKey(CassandraMessageModseqTable.MAILBOX_ID, timeuuid()) - .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, bigint()))); + .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, bigint()) + .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java index 44fa861..a56aec7 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java @@ -28,6 +28,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraCurrentQuota; import org.apache.james.mailbox.cassandra.table.CassandraDefaultMaxQuota; import org.apache.james.mailbox.cassandra.table.CassandraMaxQuota; @@ -43,22 +44,31 @@ public class CassandraQuotaModule implements CassandraModule { public CassandraQuotaModule() { tables = ImmutableList.of( new CassandraTable(CassandraCurrentQuota.TABLE_NAME, - SchemaBuilder.createTable(CassandraCurrentQuota.TABLE_NAME) + SchemaBuilder.createTable(CassandraCurrentQuota.TABLE_NAME) .ifNotExists() .addPartitionKey(CassandraCurrentQuota.QUOTA_ROOT, text()) .addColumn(CassandraCurrentQuota.MESSAGE_COUNT, counter()) - .addColumn(CassandraCurrentQuota.STORAGE, counter())), + .addColumn(CassandraCurrentQuota.STORAGE, counter()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))), new CassandraTable(CassandraMaxQuota.TABLE_NAME, - SchemaBuilder.createTable(CassandraMaxQuota.TABLE_NAME) + SchemaBuilder.createTable(CassandraMaxQuota.TABLE_NAME) .ifNotExists() .addPartitionKey(CassandraMaxQuota.QUOTA_ROOT, text()) .addColumn(CassandraMaxQuota.MESSAGE_COUNT, bigint()) - .addColumn(CassandraMaxQuota.STORAGE, bigint())), + .addColumn(CassandraMaxQuota.STORAGE, bigint()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))), new CassandraTable(CassandraDefaultMaxQuota.TABLE_NAME, - SchemaBuilder.createTable(CassandraDefaultMaxQuota.TABLE_NAME) + SchemaBuilder.createTable(CassandraDefaultMaxQuota.TABLE_NAME) .ifNotExists() .addPartitionKey(CassandraDefaultMaxQuota.TYPE, text()) - .addColumn(CassandraDefaultMaxQuota.VALUE, bigint()))); + .addColumn(CassandraDefaultMaxQuota.VALUE, bigint()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = ImmutableList.of(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java index ee674d9..2c05ca3 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java @@ -42,7 +42,10 @@ public class CassandraRegistrationModule implements CassandraModule { SchemaBuilder.createTable(CassandraMailboxPathRegisterTable.TABLE_NAME) .ifNotExists() .addUDTPartitionKey(CassandraMailboxPathRegisterTable.MAILBOX_PATH, SchemaBuilder.frozen(CassandraMailboxPathRegisterTable.MAILBOX_PATH)) - .addClusteringColumn(CassandraMailboxPathRegisterTable.TOPIC, text())));types = Collections.singletonList( + .addClusteringColumn(CassandraMailboxPathRegisterTable.TOPIC, text()) + .withOptions() + .compactionOptions(SchemaBuilder.dateTieredStrategy()))); + types = Collections.singletonList( new CassandraType(CassandraMailboxPathRegisterTable.MAILBOX_PATH, SchemaBuilder.createType(CassandraMailboxPathRegisterTable.MAILBOX_PATH) .ifNotExists() http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java index 23773a2..8ec73fc 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java @@ -26,6 +26,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraSubscriptionTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -33,6 +34,7 @@ import com.google.common.collect.ImmutableList; public class CassandraSubscriptionModule implements CassandraModule { + public static final int PER_USER_CACHED_SUBSCRIPTIONS = 100; private final List<CassandraTable> tables; private final List<CassandraType> types; @@ -42,7 +44,10 @@ public class CassandraSubscriptionModule implements CassandraModule { SchemaBuilder.createTable(CassandraSubscriptionTable.TABLE_NAME) .ifNotExists() .addPartitionKey(CassandraSubscriptionTable.USER, text()) - .addClusteringColumn(CassandraSubscriptionTable.MAILBOX, text()))); + .addClusteringColumn(CassandraSubscriptionTable.MAILBOX, text()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(PER_USER_CACHED_SUBSCRIPTIONS)))); types = ImmutableList.of(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java index 54d922b..2df0029 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java @@ -29,6 +29,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -44,7 +45,11 @@ public class CassandraUidModule implements CassandraModule { SchemaBuilder.createTable(CassandraMessageUidTable.TABLE_NAME) .ifNotExists() .addPartitionKey(CassandraMessageUidTable.MAILBOX_ID, timeuuid()) - .addColumn(CassandraMessageUidTable.NEXT_UID, bigint()))); + .addColumn(CassandraMessageUidTable.NEXT_UID, bigint()) + .withOptions() + .compactionOptions(SchemaBuilder.leveledStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java ---------------------------------------------------------------------- diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java index cc59ad5..a682bfe 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java @@ -26,6 +26,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.domainlist.cassandra.tables.CassandraDomainsTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -37,10 +38,13 @@ public class CassandraDomainListModule implements CassandraModule { public CassandraDomainListModule() { tables = ImmutableList.of( - new CassandraTable(CassandraDomainsTable.TABLE_NAME, - SchemaBuilder.createTable(CassandraDomainsTable.TABLE_NAME) - .ifNotExists() - .addPartitionKey(CassandraDomainsTable.DOMAIN, text()))); + new CassandraTable(CassandraDomainsTable.TABLE_NAME, + SchemaBuilder.createTable(CassandraDomainsTable.TABLE_NAME) + .ifNotExists() + .addPartitionKey(CassandraDomainsTable.DOMAIN, text()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = ImmutableList.of(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java ---------------------------------------------------------------------- diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java index cf681f1..1374d48 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java @@ -26,6 +26,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTableTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -38,12 +39,15 @@ public class CassandraRRTModule implements CassandraModule { public CassandraRRTModule() { tables = ImmutableList.of( - new CassandraTable(CassandraRecipientRewriteTableTable.TABLE_NAME, - SchemaBuilder.createTable(CassandraRecipientRewriteTableTable.TABLE_NAME) - .ifNotExists() - .addPartitionKey(CassandraRecipientRewriteTableTable.USER, text()) - .addClusteringColumn(CassandraRecipientRewriteTableTable.DOMAIN, text()) - .addClusteringColumn(CassandraRecipientRewriteTableTable.MAPPING, text()))); + new CassandraTable(CassandraRecipientRewriteTableTable.TABLE_NAME, + SchemaBuilder.createTable(CassandraRecipientRewriteTableTable.TABLE_NAME) + .ifNotExists() + .addPartitionKey(CassandraRecipientRewriteTableTable.USER, text()) + .addClusteringColumn(CassandraRecipientRewriteTableTable.DOMAIN, text()) + .addClusteringColumn(CassandraRecipientRewriteTableTable.MAPPING, text()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = ImmutableList.of(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java index 33439af..53fb2f3 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java @@ -27,6 +27,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.jmap.cassandra.access.table.CassandraAccessTokenTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -43,7 +44,10 @@ public class CassandraAccessModule implements CassandraModule { SchemaBuilder.createTable(CassandraAccessTokenTable.TABLE_NAME) .ifNotExists() .addPartitionKey(CassandraAccessTokenTable.TOKEN, uuid()) - .addColumn(CassandraAccessTokenTable.USERNAME, text()))); + .addColumn(CassandraAccessTokenTable.USERNAME, text()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = ImmutableList.of(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java index 8023829..c920eba 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java @@ -26,6 +26,7 @@ import java.util.List; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.jmap.cassandra.vacation.tables.CassandraNotificationTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -42,7 +43,11 @@ public class CassandraNotificationRegistryModule implements CassandraModule { SchemaBuilder.createTable(CassandraNotificationTable.TABLE_NAME) .ifNotExists() .addPartitionKey(CassandraNotificationTable.ACCOUNT_ID, text()) - .addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text()))); + .addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text()) + .withOptions() + .compactionOptions(SchemaBuilder.dateTieredStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = ImmutableList.of(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/432e1238/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java index 48d3f1d..4565b86 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java @@ -28,6 +28,7 @@ import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.components.CassandraTable; import org.apache.james.backends.cassandra.components.CassandraType; import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule; +import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.jmap.cassandra.vacation.tables.CassandraVacationTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; @@ -49,7 +50,10 @@ public class CassandraVacationModule implements CassandraModule { .addUDTColumn(CassandraVacationTable.TO_DATE, SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME)) .addColumn(CassandraVacationTable.TEXT, text()) .addColumn(CassandraVacationTable.SUBJECT, text()) - .addColumn(CassandraVacationTable.HTML, text()))); + .addColumn(CassandraVacationTable.HTML, text()) + .withOptions() + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); types = ImmutableList.of(); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
