Index
All Classes and Interfaces|All Packages|Constant Field Values
B
- builder() - Static method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- builder() - Static method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
- builder() - Static method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation.MaintenanceStats
- builder() - Static method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunSpec
- buildMaintenanceRunSpec() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceService
-
Generates a maintenance service run-specification containing realms in states
ACTIVEandINACTIVEas "to retain" and realms in statePURGINGas "to purge".
C
- check() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- countFromLastRunMultiplier() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
Maintenance service sizes the bloom-filters used to hold the identified references and objects according to the expression
lastRun.numberOfIdentified * countFromLastRunMultiplier. - createdAtGraceTime() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
Objects and references that have been created after a maintenance run has started are never purged.
D
- DEFAULT_COUNT_FROM_LAST_RUN_MULTIPLIER - Static variable in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- DEFAULT_CREATED_AT_GRACE_TIME - Static variable in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- DEFAULT_CREATED_AT_GRACE_TIME_STRING - Static variable in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- DEFAULT_DELETE_BATCH_SIZE - Static variable in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- DEFAULT_EXPECTED_OBJ_COUNT - Static variable in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- DEFAULT_EXPECTED_REFERENCE_COUNT - Static variable in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- DEFAULT_INITIALIZED_FPP - Static variable in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- DEFAULT_MAX_ACCEPTABLE_FPP - Static variable in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- DEFAULT_RETAINED_RUNS - Static variable in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
- deleteBatchSize() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
Size of the delete-batches when purging objects.
- detailedInformation() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
-
Human-readable detailed information, possibly including technical error information.
- Discussion Not all databases offer support to perform "prefix key" deletions, which are, for example, necessary to purge a whole realm. Some databases do support "deleting a huge number of rows". Some have another API for prefix-key deletions, for example, Google's BigTable dropRowRange on the table-admin-client. Relational databases may require different configurations with respect to isolation level to run those maintenance operations in a "better" way. Some databases do not support such "prefix-key deletions" at all, for example, Apache Cassandra or RocksDb or Amazon's DynamoDb. Backend implementations therefore expose whether it can leverage "prefix-key deletions" when one or more realms are to be purged. If a Backend does not support "prefix-key deletions", the whole repository has to be scanned. Purging unreferenced data The other maintenance operations like purging a catalog or unreferenced objects or references a two-step approach that works even for large multi-tenant setups: Memoize the current timestamp, subtract some amount to account for expected wall-clock drifts. Identify all objects and references that must be retained, memoize those in a probabilistic data structure (bloom filter). See below. Scan the whole database to identify the objects and references that were not identified as being referenced in the previous step. Delete the unreferenced objects and references if, and only if, their createdAtMicros() timestamp is less than the timestamp memoized in the first step. Identifying objects and references Implementations of @ApplicationScoped PerRealmRetainedIdentifier are called to identify the references and objects that have to be retained for a realm. Implementations of @ApplicationScoped ObjTypeRetainedIdentifier are called for each identified object of the requested object type. Realm status The maintenance service implementation will check the current status of the realm to retain and to purge, that the status is valid for being retained (valid: ACTIVE and INACTIVE) and being purged (valid: PURGING). Realms that have been asked to be purged and for which no data has been encountered will be state-transitioned to PURGED. System realm The system realm is maintained like every other realm. Future export use cases (TBD/TBC) These can be useful in a hosted and multi-tenant SaaS environment, when an export of the data for a particular realm is requested. Export live/referenced objects, filtered by realm. A possible implementation would hook into the implementation of PerRealmRetainedIdentifier via a delegate over Persistence. The actual approach and implementation is therefore out of the scope of the maintenance service. Low-level export, filtered by realm. This one is different from the one above, as it would export references and all object-parts, in contrast to fully materialized objects. A possible implementation would hook into the scanning-part of the maintenance service implementation. - Search tag in package org.apache.polaris.persistence.nosql.maintenance.api
- Section
E
- expectedObjCount() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
Provides the expected number of objects in all realms to retain, defaults to 100000L, must be at least
100000. - expectedReferenceCount() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
Provides the expected number of references in all realms to retain, defaults to 100L, must be at least
100.
F
- filterInitializedFpp() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
False-positive-probability (FPP) used to initialize the bloom-filters for identified references and objects.
- finished() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
- Future export use cases (TBD/TBC) These can be useful in a hosted and multi-tenant SaaS environment, when an export of the data for a particular realm is requested. Export live/referenced objects, filtered by realm. A possible implementation would hook into the implementation of PerRealmRetainedIdentifier via a delegate over Persistence. The actual approach and implementation is therefore out of the scope of the maintenance service. Low-level export, filtered by realm. This one is different from the one above, as it would export references and all object-parts, in contrast to fully materialized objects. A possible implementation would hook into the scanning-part of the maintenance service implementation. - Search tag in package org.apache.polaris.persistence.nosql.maintenance.api
- Section
I
- identifiedObjs() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
-
Number of invocations of
RetainedCollector.retainObject(ObjRef). - identifiedReferences() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
-
Number of invocations of
RetainedCollector.retainReference(String). - Identifying objects and references Implementations of @ApplicationScoped PerRealmRetainedIdentifier are called to identify the references and objects that have to be retained for a realm. Implementations of @ApplicationScoped ObjTypeRetainedIdentifier are called for each identified object of the requested object type. Realm status The maintenance service implementation will check the current status of the realm to retain and to purge, that the status is valid for being retained (valid: ACTIVE and INACTIVE) and being purged (valid: PURGING). Realms that have been asked to be purged and for which no data has been encountered will be state-transitioned to PURGED. System realm The system realm is maintained like every other realm. Future export use cases (TBD/TBC) These can be useful in a hosted and multi-tenant SaaS environment, when an export of the data for a particular realm is requested. Export live/referenced objects, filtered by realm. A possible implementation would hook into the implementation of PerRealmRetainedIdentifier via a delegate over Persistence. The actual approach and implementation is therefore out of the scope of the maintenance service. Low-level export, filtered by realm. This one is different from the one above, as it would export references and all object-parts, in contrast to fully materialized objects. A possible implementation would hook into the scanning-part of the maintenance service implementation. - Search tag in package org.apache.polaris.persistence.nosql.maintenance.api
- Section
- includeSystemRealm() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunSpec
-
Whether to run maintenance on the system realm, defaults to
true.
M
- MaintenanceConfig - Interface in org.apache.polaris.persistence.nosql.maintenance.api
-
Maintenance service configuration.
- MaintenanceRunInformation - Interface in org.apache.polaris.persistence.nosql.maintenance.api
- MaintenanceRunInformation.MaintenanceStats - Interface in org.apache.polaris.persistence.nosql.maintenance.api
- maintenanceRunLog() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceService
-
Retrieve information about recent maintenance runs.
- MaintenanceRunSpec - Interface in org.apache.polaris.persistence.nosql.maintenance.api
-
Configures a maintenance run.
- MaintenanceService - Interface in org.apache.polaris.persistence.nosql.maintenance.api
- maxAcceptableFilterFpp() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
Expected maximum false-positive-probability (FPP) used to check the bloom-filters for identified references and objects.
N
- newer() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation.MaintenanceStats
-
Number of items that were written after the calculated grace time.
O
- objectScanRateLimitPerSecond() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
Optionally limit the number of objects scanned per second.
- objStats() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
- org.apache.polaris.persistence.nosql.maintenance.api - package org.apache.polaris.persistence.nosql.maintenance.api
-
Maintenance operations include a bunch of tasks that are regularly executed against a backend database.
P
- performMaintenance(MaintenanceRunSpec) - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceService
-
Perform maintenance.
- perRealmPerObjTypeStats() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
- perRealmReferenceStats() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
- purged() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation.MaintenanceStats
-
Number of scanned items that have been purged.
- purgedRealms() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
-
Number of realms that were directly purges, if the backend supports this.
- Purging unreferenced data The other maintenance operations like purging a catalog or unreferenced objects or references a two-step approach that works even for large multi-tenant setups: Memoize the current timestamp, subtract some amount to account for expected wall-clock drifts. Identify all objects and references that must be retained, memoize those in a probabilistic data structure (bloom filter). See below. Scan the whole database to identify the objects and references that were not identified as being referenced in the previous step. Delete the unreferenced objects and references if, and only if, their createdAtMicros() timestamp is less than the timestamp memoized in the first step. Identifying objects and references Implementations of @ApplicationScoped PerRealmRetainedIdentifier are called to identify the references and objects that have to be retained for a realm. Implementations of @ApplicationScoped ObjTypeRetainedIdentifier are called for each identified object of the requested object type. Realm status The maintenance service implementation will check the current status of the realm to retain and to purge, that the status is valid for being retained (valid: ACTIVE and INACTIVE) and being purged (valid: PURGING). Realms that have been asked to be purged and for which no data has been encountered will be state-transitioned to PURGED. System realm The system realm is maintained like every other realm. Future export use cases (TBD/TBC) These can be useful in a hosted and multi-tenant SaaS environment, when an export of the data for a particular realm is requested. Export live/referenced objects, filtered by realm. A possible implementation would hook into the implementation of PerRealmRetainedIdentifier via a delegate over Persistence. The actual approach and implementation is therefore out of the scope of the maintenance service. Low-level export, filtered by realm. This one is different from the one above, as it would export references and all object-parts, in contrast to fully materialized objects. A possible implementation would hook into the scanning-part of the maintenance service implementation. - Search tag in package org.apache.polaris.persistence.nosql.maintenance.api
- Section
R
- Realm status The maintenance service implementation will check the current status of the realm to retain and to purge, that the status is valid for being retained (valid: ACTIVE and INACTIVE) and being purged (valid: PURGING). Realms that have been asked to be purged and for which no data has been encountered will be state-transitioned to PURGED. System realm The system realm is maintained like every other realm. Future export use cases (TBD/TBC) These can be useful in a hosted and multi-tenant SaaS environment, when an export of the data for a particular realm is requested. Export live/referenced objects, filtered by realm. A possible implementation would hook into the implementation of PerRealmRetainedIdentifier via a delegate over Persistence. The actual approach and implementation is therefore out of the scope of the maintenance service. Low-level export, filtered by realm. This one is different from the one above, as it would export references and all object-parts, in contrast to fully materialized objects. A possible implementation would hook into the scanning-part of the maintenance service implementation. - Search tag in package org.apache.polaris.persistence.nosql.maintenance.api
- Section
- realmsToProcess() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunSpec
- realmsToPurge() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunSpec
- referenceScanRateLimitPerSecond() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
Optionally limit the number of references scanned per second.
- referenceStats() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
- retained() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation.MaintenanceStats
-
Number of scanned items that were retained, because those were indicated to be retained by a realm identifier or obj-type identifier.
- retainedRuns() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceConfig
-
Number of retained maintenance run objects, must be at least
2.
S
- scanned() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation.MaintenanceStats
-
Number of scanned items.
- started() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
- statusMessage() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
-
Human-readable status message.
- success() - Method in interface org.apache.polaris.persistence.nosql.maintenance.api.MaintenanceRunInformation
- System realm The system realm is maintained like every other realm. Future export use cases (TBD/TBC) These can be useful in a hosted and multi-tenant SaaS environment, when an export of the data for a particular realm is requested. Export live/referenced objects, filtered by realm. A possible implementation would hook into the implementation of PerRealmRetainedIdentifier via a delegate over Persistence. The actual approach and implementation is therefore out of the scope of the maintenance service. Low-level export, filtered by realm. This one is different from the one above, as it would export references and all object-parts, in contrast to fully materialized objects. A possible implementation would hook into the scanning-part of the maintenance service implementation. - Search tag in package org.apache.polaris.persistence.nosql.maintenance.api
- Section
All Classes and Interfaces|All Packages|Constant Field Values