All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.datastax.oss.driver.api.querybuilder.schema.RelationOptions Maven / Gradle / Ivy

The newest version!
/*
 * Copyright DataStax, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.datastax.oss.driver.api.querybuilder.schema;

import static com.datastax.oss.driver.api.querybuilder.SchemaBuilder.RowsPerPartition;

import com.datastax.oss.driver.api.querybuilder.SchemaBuilder;
import com.datastax.oss.driver.api.querybuilder.schema.compaction.CompactionStrategy;
import com.datastax.oss.driver.shaded.guava.common.collect.ImmutableMap;
import edu.umd.cs.findbugs.annotations.CheckReturnValue;
import edu.umd.cs.findbugs.annotations.NonNull;

public interface RelationOptions>
    extends OptionProvider {

  /**
   * Defines the false-positive probability for SSTable bloom filters.
   *
   * 

If no call was made to this method, the default value set is: * *

    *
  • 0.01 for the size-tiered compaction strategy; *
  • 0.1 for the leveled compaction strategy. *
*/ @NonNull @CheckReturnValue default SelfT withBloomFilterFpChance(double bloomFilterFpChance) { return withOption("bloom_filter_fp_chance", bloomFilterFpChance); } /** * Defines whether or not change data capture is enabled. * *

Note that using this option with a version of Apache Cassandra less than 3.8 or DataStax * Enterprise 5.0 will raise a syntax error. * *

If no call is made to this method, the default value set is {@code false}. */ @NonNull @CheckReturnValue default SelfT withCDC(boolean enabled) { return withOption("cdc", enabled); } /** * Defines the caching criteria. * *

If no call is made to this method, the default value is determined by the global caching * properties in cassandra.yaml. * * @param keys If true, caches all keys, otherwise none. * @param rowsPerPartition Whether to cache ALL, NONE or the first N rows per partition. */ @NonNull @CheckReturnValue default SelfT withCaching(boolean keys, @NonNull RowsPerPartition rowsPerPartition) { return withOption( "caching", ImmutableMap.of( "keys", keys ? "ALL" : "NONE", "rows_per_partition", rowsPerPartition.getValue())); } /** Defines documentation for this relation. */ @NonNull @CheckReturnValue default SelfT withComment(@NonNull String comment) { return withOption("comment", comment); } /** * Defines the compaction strategy to use. * * @see SchemaBuilder#sizeTieredCompactionStrategy() * @see SchemaBuilder#leveledCompactionStrategy() * @see SchemaBuilder#timeWindowCompactionStrategy() */ @NonNull @CheckReturnValue default SelfT withCompaction(@NonNull CompactionStrategy compactionStrategy) { return withOption("compaction", compactionStrategy.getOptions()); } /** * Configures compression using the LZ4 algorithm with the given chunk length and crc check * chance. * * @see #withCompression(String, int, double) */ @NonNull @CheckReturnValue default SelfT withLZ4Compression(int chunkLengthKB, double crcCheckChance) { return withCompression("LZ4Compressor", chunkLengthKB, crcCheckChance); } /** * Configures compression using the LZ4 algorithm using the default configuration (64kb * chunk_length, and 1.0 crc_check_chance). * * @see #withCompression(String, int, double) */ @NonNull @CheckReturnValue default SelfT withLZ4Compression() { return withCompression("LZ4Compressor"); } /** * Configures compression using the Snappy algorithm with the given chunk length and crc check * chance. * * @see #withCompression(String, int, double) */ @NonNull @CheckReturnValue default SelfT withSnappyCompression(int chunkLengthKB, double crcCheckChance) { return withCompression("SnappyCompressor", chunkLengthKB, crcCheckChance); } /** * Configures compression using the Snappy algorithm using the default configuration (64kb * chunk_length, and 1.0 crc_check_chance). * * @see #withCompression(String, int, double) */ @NonNull @CheckReturnValue default SelfT withSnappyCompression() { return withCompression("SnappyCompressor"); } /** * Configures compression using the Deflate algorithm with the given chunk length and crc check * chance. * * @see #withCompression(String, int, double) */ @NonNull @CheckReturnValue default SelfT withDeflateCompression(int chunkLengthKB, double crcCheckChance) { return withCompression("DeflateCompressor", chunkLengthKB, crcCheckChance); } /** * Configures compression using the Deflate algorithm using the default configuration (64kb * chunk_length, and 1.0 crc_check_chance). * * @see #withCompression(String, int, double) */ @NonNull @CheckReturnValue default SelfT withDeflateCompression() { return withCompression("DeflateCompressor"); } /** * Configures compression using the given algorithm using the default configuration (64kb * chunk_length, and 1.0 crc_check_chance). * *

Unless specifying a custom compression algorithm implementation, it is recommended to use * {@link #withLZ4Compression()}, {@link #withSnappyCompression()}, or {@link * #withDeflateCompression()}. * * @see #withCompression(String, int, double) */ @NonNull @CheckReturnValue default SelfT withCompression(@NonNull String compressionAlgorithmName) { return withOption("compression", ImmutableMap.of("class", compressionAlgorithmName)); } /** * Configures compression using the given algorithm, chunk length and crc check chance. * *

Unless specifying a custom compression algorithm implementation, it is recommended to use * {@link #withLZ4Compression()}, {@link #withSnappyCompression()}, or {@link * #withDeflateCompression()}. * * @param compressionAlgorithmName The class name of the compression algorithm. * @param chunkLengthKB The chunk length in KB of compression blocks. Defaults to 64. * @param crcCheckChance The probability (0.0 to 1.0) that checksum will be checked on each read. * Defaults to 1.0. */ @NonNull @CheckReturnValue default SelfT withCompression( @NonNull String compressionAlgorithmName, int chunkLengthKB, double crcCheckChance) { return withOption( "compression", ImmutableMap.of( "class", compressionAlgorithmName, "chunk_length_kb", chunkLengthKB, "crc_check_chance", crcCheckChance)); } /** Defines that compression should be disabled. */ @NonNull @CheckReturnValue default SelfT withNoCompression() { return withOption("compression", ImmutableMap.of("sstable_compression", "")); } /** * Defines the probability of read repairs being invoked over all replicas in the current data * center. * *

If no call is made to this method, the default value set is 0.0. * * @param dcLocalReadRepairChance the probability. * @return this {@code TableOptions} object. */ @NonNull @CheckReturnValue default SelfT withDcLocalReadRepairChance(double dcLocalReadRepairChance) { return withOption("dclocal_read_repair_chance", dcLocalReadRepairChance); } /** * Defines the default 'time to live' (expiration time) of writes in seconds. * *

If no call is made to this method, the default value is 0 (no TTL). */ @NonNull @CheckReturnValue default SelfT withDefaultTimeToLiveSeconds(int ttl) { return withOption("default_time_to_live", ttl); } /** * Defines the time to wait before garbage collecting tombstones (deletion markers). * *

The default value allows a great deal of time for consistency to be achieved prior to * deletion. In many deployments this interval can be reduced, and in a single-node cluster it can * be safely set to zero. * *

If no call is made to this method, the default value set is 864000 secs (10 days). */ @NonNull @CheckReturnValue default SelfT withGcGraceSeconds(int gcGraceSeconds) { return withOption("gc_grace_seconds", gcGraceSeconds); } /** * Defines the memtable flush period in milliseconds. * *

If set, this forces flushing of memtables after the specified time elapses. * *

If no call is made to this method, the default value is 0 (unset). */ @NonNull @CheckReturnValue default SelfT withMemtableFlushPeriodInMs(int memtableFlushPeriodInMs) { return withOption("memtable_flush_period_in_ms", memtableFlushPeriodInMs); } /** * Defines the minimum index interval. This is the gap between index entries in the index summary. * A lower value will increase the size of the index (more RAM usage) but potentially improve disk * I/O. * *

If no call is made to this method, the default value set is 128. */ @NonNull @CheckReturnValue default SelfT withMinIndexInterval(int min) { return withOption("min_index_interval", min); } /** * Defines the maximum index interval. * *

If no call is made to this method, the default value set is 2048. * * @see #withMinIndexInterval(int) */ @NonNull @CheckReturnValue default SelfT withMaxIndexInterval(int max) { return withOption("max_index_interval", max); } /** * Defines the probability with which read repairs should be invoked on non-quorum reads. The * value must be between 0 and 1. * *

If no call is made to this method, the default value set is 0.1. */ @NonNull @CheckReturnValue default SelfT withReadRepairChance(double readRepairChance) { return withOption("read_repair_chance", readRepairChance); } /** * Defines the configuration for coordinator to replica speculative retries. * *

This overrides the normal read timeout when read_repair_chance is not 1.0, sending a request * to other replica(s) to service reads. * *

Valid values include: * *

    *
  • ALWAYS: Retry reads of all replicas. *
  • Xpercentile: Retry reads based on the effect on throughput and latency. *
  • Yms: Retry reads after specified milliseconds. *
  • NONE: Do not retry reads. *
* *

Using the speculative retry property, you can configure rapid read protection in Cassandra * 2.0.2 and later. Use this property to retry a request after some milliseconds have passed or * after a percentile of the typical read latency has been reached, which is tracked per table. * *

If no call is made to this method, the default value set is {@code 99percentile}. */ @NonNull @CheckReturnValue default SelfT withSpeculativeRetry(@NonNull String speculativeRetry) { return withOption("speculative_retry", speculativeRetry); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy