Vertica Configuration Groups¶
Launchpad Blueprint: https://blueprints.launchpad.net/trove/+spec/vertica-configuration-groups
Problem Description¶
The Vertica guestagent currently does not support configuration groups for the single instance case.
Proposed Change¶
While Vertica has minimal required configuration as one of its design goals, it is nonetheless possible to configure a large number of parameters 1.
Databases in Trove and Vertica¶
While Trove thinks of instances as being the parent of one or more databases, following the model of single-server MySQL, Vertica supports one or more nodes natively, and databases can span multiple nodes. Configuration options can also be applied at both the node and database level.
The Vertica guest agent currently does not support multiple Vertica databases for both the single instance and clustered cases, so only configuration options valid at the database level will be exposed.
Configuration Changes¶
Vertica recommends against writing configuration changes to a configuration file for version 7.1. It is unclear if this applies to 7.2, or has been remedied, but for the purposes of providing support for both 7.1 and 7.2, writing to this file will be avoided 3. Configurations can be applied with the use of the ALTER DATABASE command, and current configuration settings can be retrieved via the CONFIGURATION_PARAMETERS system view 2.
Vertica supports 360 different options as of Vertica 7.2.1. Options related to authentication and big data support have been excluded. For a complete list of the options that will be supported, see the Appendix section.
Configuration¶
None
Database¶
None
Public API¶
None
Public API Security¶
None
Python API¶
None (empty section added after merging)
CLI (python-troveclient)¶
None (empty section added after merging)
Internal API¶
CLI (python-troveclient)¶
This work will enable the following client commands:
configuration-attach
configuration-create
configuration-default
configuration-delete
configuration-detach
configuration-instances
configuration-list
configuration-parameter-list
configuration-parameter-show
configuration-patch
configuration-show
configuration-update
Note that the configuration groups API is not currently supported for clusters, so only support for single-instance Vertica will be provided.
Guest Agent¶
Implement update_overrides and apply_overrides in the manager and service modules.
The following existing files will be updated:
guestagent/datastore/experimental/vertica/manager.py guestagent/datastore/experimental/vertica/service.py guestagent/datastore/experimental/vertica/system.py
Alternatives¶
None
Implementation¶
Assignee(s)¶
Alex Tomic <atomic@tesora.com>
Milestones¶
mitaka-3
Work Items¶
provide support for viewing and modifying the vertica database-level configuration options
implement configuration-related manager API calls:
def update_overrides(self, context, overrides, remove=False) def apply_overrides(self, context, overrides)
Upgrade Implications¶
None.
Dependencies¶
None.
Testing¶
Unit tests will be added to validate implemented functions, and integration tests added or modified from the new scenario testing framework as needed.
Documentation Impact¶
The datastore documentation should be updated to reflect the enabled features.
Dashboard Impact (UX)¶
None.
Appendix¶
The following is the list of parameters that will be supported:
ActivePartitionCount AddressCollectorInterval AdvanceAHMInterval AHMBackupManagement AllowNonAsciiNames AnalyzeRowCountInterval AnalyzeStatsPlanMaxColumns AnalyzeStatsSampleBands ARCCommitPercentage AuditConfidenceLevel AuditErrorTolerance BasicVerticaOptions BlockCacheSize BufferQueryOutputForPossibleRetry CachePositionIndex CascadeResourcePoolAlwaysReplan CatalogCheckpointChunkSizeKB CatalogCheckpointMinLogSizeKB CatalogCheckpointPercent CatalogDeindexRename CheckCRCs CheckDataTargetSortOrder ClusterRecoveryWait CollationExpansion CompressCatalogOnDisk CompressDistCalls CompressNetworkData ComputeApproxNDVsDuringAnalyzeStats ContainersPerProjectionLimit CopyFromVerticaWithIdentity DatabaseHeartbeatInterval DBDCorrelationSampleRowCount DBDCorrelationSampleRowPct DBDCountDistinctSampleRowCount DBDCountDistinctSampleRowPct DBDDeploymentParallelism DBDDynamicSampling DBDEncodingSampleRowCount DBDEncodingSampleRowPct DBDLargestTableRowCountBoundary DBDLogInternalDesignProcess DBDMaxConcurrencyForEncodingExperiment DBDRepLargeRowCountPct DBDRepSmallRowCountPct DBDSampleStorageBandCount DBDSkewDetectionSampleRowCount DBDSkewDetectionSampleRowPct DBDUseOnlyDesignerResourcePool DefaultIntervalStyle DefaultSessionLocale DisableInheritedPrivileges DisableLocalResegmentation DisableNodeDownOptimization DisablePrejoinProjections DisallowMars DiskSpacePollingInterval DMLCancelTM EEVerticaOptions EnableAccessPolicy EnableAllRolesOnLogin EnableApportionLoad EnableAutoDMLStats EnableBlockMemoryManager EnableCooperativeParse EnableDataCollector EnabledCipherSuites EnableEEThreadPool EnableEMMJMultiblockSIPS EnableExprsInProjections EnableForceOuter EnableGroupByProjections EnableJIT EnableNewPrimaryKeysByDefault EnableNewUniqueKeysByDefault EnableParallelHashBuild EnableParallelSort EnablePatternMatchingAnyRow EnablePlanStability EnablePlanStabilityLookup EnableResourcePoolCPUAffinity EnableRuntimePriorityScheduler EnableSSL EnableStorageBundling EnableStrictTimeCasts EnableTopKProjections EnableUDTProjections EnableUniquenessOptimization EnableVirtualCoreCount EpochMapInterval EscapeStringWarning EvaluateDeletePerformanceSampleStorageBandCount EvaluateDeletePerformanceSampleStorageCount ExcludeEphemeralNodesInQueries ExternalTablesExceptionsLimit FailoverToStandbyAfter FencedUDxMemoryLimitMB FilesPerProjectionLimit FlexTableDataTypeGuessMultiplier FlexTableRawSize ForceUDxFencedMode FsyncCatalogForLuck FsyncDataForLuck GBHashMemCapMB GlobalEEProfiling GlobalHeirUsername GlobalQueryProfiling GlobalSessionProfiling GroupGeneratorHashingEnabled HadoopConfDir HCatConnectionTimeout HCatParserName HCatSlowTransferLimit HCatSlowTransferTime HCatSourceName HCatWebserviceName HCatWebserviceVersion HistoryRetentionEpochs HistoryRetentionTime JavaBinaryForUDx JavaSideProcessMinHeapSizeMB KeepMinMaxOnAllColumns LGELagThreshold LoadMaxFinalROSCount LockTimeout LogHeartbeatInterval LowDiskSpaceWarningPct MaxAutoSegColumns MaxBundleableROSSizeKB MaxClientSessions MaxConstraintChecksPerQuery MaxDataCollectorFileSize MaxDesiredEEBlockSize MaxDVROSPerContainer MaxLogLineLength MaxMrgOutROSSizeMB MaxOptMemMB MaxOptMemMBInDBD MaxParsedQuerySizeMB MaxPartitionCount MaxQueryRetries MaxRecoverErrors MaxRecoverHistoricPasses MaxRefreshErrors MaxRefreshHistoricPasses MaxROSPerStratum MergeJoinInnerInitialMB MergeOutCache MergeOutInterval MinimumCatalogDiskMegabytes MinimumDataDiskMegabytes MinimumDataDiskTempMegabytes MinSortMergeJoinMB MoveOutInterval MoveOutMaxAgeEpochs MoveOutMaxAgeTime MoveOutSizePct NewEEGroupBySmallMemMB NewEEROSSubdivisionRows NewEEThreads NoRecoverShutdownWait OptVerticaOptions ParallelizeLocalSegmentLoad PatternMatchAllocator PatternMatchingMatchLimitRecursion PatternMatchingMaxPartition PatternMatchingMaxPartitionMatches PatternMatchingPerMatchWorkspaceSize PatternMatchingUseJit PatternMatchStackAllocator PinProcessors PinProcessorsOffset PreExcavatorReplicatedProjection PruneDataCollectorByTime PruneSystemTableColumns PurgeMergeoutPercent RangeWindowMaxMem ReapBeforeRecover RecoverByContainer RecoveryDirtyTxnWait ReflexiveMoveout RefreshByContainer RemoteInitiatorBufSize RemoveSnapshotInterval ReplayDeleteAlgorithmSwitchThreshold ResLowLimPctOfHighLim RestrictSystemTables ROSCacheBlocks ROSCacheLargeBlocks ROSPerStratum SaveDCEEProfileThresholdUS SecurityAlgorithm SegmentAutoProjection SegmentDataCollector SessionProfilingAgeOut SlowDeleteConsoleWarningLimit SlowDeleteSystemWarningLimit SmallROSSize SnapshotRetentionTime SnmpTrapDestinationsList SnmpTrapEvents SnmpTrapsEnabled SortCheckOption SortOrderReportLevel SortWorkerThreads SSLCA SSLCertificate SSLPrivateKey StandardConformingStrings StrictUDxParameterChecking SyslogEnabled SyslogEvents SyslogFacility SystemMonitorInterval SystemMonitorThreshold TerraceRoutingFactor TextIndexComputeDeletedTokens TextIndexMaxTokenLength TopKHeapMaxMem TransactionIsolationLevel TransactionMode TrustConstraintsAsUnique UDxFencedBlockTimeout UDxFencedCancelTimeout UDxFencedExternalProcedureTimeout UseModularHashForReseg UseOnlyResilientRedistribution UseRecoveringNodesInVirtualTableQueries UseSafeDecompression UseV50IntegerDivision UseZygoteForExternalProcedures WarnOnIncompleteStartupPacket WithClauseMaterialization