diff --git a/graphqlmetrics/migrations/20251223110743_new_graphql_schema_usage_table_5m_90d.sql b/graphqlmetrics/migrations/20251223110743_new_graphql_schema_usage_table_5m_90d.sql new file mode 100644 index 0000000000..ae1f66482b --- /dev/null +++ b/graphqlmetrics/migrations/20251223110743_new_graphql_schema_usage_table_5m_90d.sql @@ -0,0 +1,40 @@ +-- migrate:up +CREATE TABLE gql_metrics_schema_usage_5m_90d_v2 +( + Timestamp DateTime('UTC') CODEC(Delta(4), ZSTD(3)), + OrganizationID LowCardinality(String) CODEC(ZSTD(3)), + FederatedGraphID LowCardinality(String) CODEC(ZSTD(3)), + RouterConfigVersion LowCardinality(String) CODEC(ZSTD(3)), + OperationHash LowCardinality(String) CODEC(ZSTD(3)), + OperationName LowCardinality(String) CODEC(ZSTD(3)), + OperationType LowCardinality(String) CODEC(ZSTD(3)), + Path Array(String) CODEC(ZSTD(3)), + FieldName LowCardinality(String) CODEC(ZSTD(3)), + TypeNames Array(String) CODEC(ZSTD(3)), + NamedType LowCardinality(String) CODEC(ZSTD(3)), + ClientName LowCardinality(String) CODEC(ZSTD(3)), + ClientVersion LowCardinality(String) CODEC(ZSTD(3)), + SubgraphIDs Array(LowCardinality(String)) CODEC(ZSTD(3)), + IsArgument Bool CODEC(ZSTD(3)), + IsInput Bool CODEC(ZSTD(3)), + TotalUsages UInt64 CODEC(ZSTD(3)), + TotalErrors UInt64 CODEC(ZSTD(3)), + TotalClientErrors UInt64 CODEC(ZSTD(3)), + IsIndirectFieldUsage Bool DEFAULT false CODEC(ZSTD(3)), + IsNull Bool DEFAULT false CODEC(ZSTD(3)), + INDEX idx_path Path TYPE bloom_filter(0.01) GRANULARITY 4, + INDEX idx_source_ids SubgraphIDs TYPE bloom_filter(0.01) GRANULARITY 4, + INDEX idx_type_names TypeNames TYPE bloom_filter(0.01) GRANULARITY 4, + INDEX idx_total_usages TotalUsages TYPE minmax GRANULARITY 4, + INDEX idx_total_errors TotalErrors TYPE minmax GRANULARITY 4, + INDEX idx_total_client_errors TotalClientErrors TYPE minmax GRANULARITY 4 +) +ENGINE = SummingMergeTree +PARTITION BY toDate(Timestamp) +ORDER BY (FederatedGraphID, Timestamp, OrganizationID, FieldName, NamedType, OperationHash, ClientName, ClientVersion) +TTL toDateTime(Timestamp) + toIntervalDay(90) +SETTINGS index_granularity = 8192, ttl_only_drop_parts = 1 + +-- migrate:down + +DROP TABLE IF EXISTS gql_metrics_schema_usage_5m_90d_v2; \ No newline at end of file diff --git a/graphqlmetrics/migrations/20251223131620_migrate_data_90_to_68_days.sql b/graphqlmetrics/migrations/20251223131620_migrate_data_90_to_68_days.sql new file mode 100644 index 0000000000..a66afa2093 --- /dev/null +++ b/graphqlmetrics/migrations/20251223131620_migrate_data_90_to_68_days.sql @@ -0,0 +1,10 @@ +-- migrate:up + +-- Step 1: Migrate data from 90 to 68 days ago +INSERT INTO gql_metrics_schema_usage_5m_90d_v2 +SELECT * FROM gql_metrics_schema_usage_5m_90d +WHERE Timestamp >= now() - INTERVAL 90 DAY + AND Timestamp < now() - INTERVAL 68 DAY; + +-- migrate:down + diff --git a/graphqlmetrics/migrations/20251223131621_migrate_data_68_to_46_days.sql b/graphqlmetrics/migrations/20251223131621_migrate_data_68_to_46_days.sql new file mode 100644 index 0000000000..e560ee53c0 --- /dev/null +++ b/graphqlmetrics/migrations/20251223131621_migrate_data_68_to_46_days.sql @@ -0,0 +1,10 @@ +-- migrate:up + +-- Step 2: Migrate data from 68 to 46 days ago +INSERT INTO gql_metrics_schema_usage_5m_90d_v2 +SELECT * FROM gql_metrics_schema_usage_5m_90d +WHERE Timestamp >= now() - INTERVAL 68 DAY + AND Timestamp < now() - INTERVAL 46 DAY; + +-- migrate:down + diff --git a/graphqlmetrics/migrations/20251223131622_migrate_data_46_to_24_days.sql b/graphqlmetrics/migrations/20251223131622_migrate_data_46_to_24_days.sql new file mode 100644 index 0000000000..4218049794 --- /dev/null +++ b/graphqlmetrics/migrations/20251223131622_migrate_data_46_to_24_days.sql @@ -0,0 +1,10 @@ +-- migrate:up + +-- Step 3: Migrate data from 46 to 24 days ago +INSERT INTO gql_metrics_schema_usage_5m_90d_v2 +SELECT * FROM gql_metrics_schema_usage_5m_90d +WHERE Timestamp >= now() - INTERVAL 46 DAY + AND Timestamp < now() - INTERVAL 24 DAY; + +-- migrate:down + diff --git a/graphqlmetrics/migrations/20251223131623_migrate_data_24_to_1_day.sql b/graphqlmetrics/migrations/20251223131623_migrate_data_24_to_1_day.sql new file mode 100644 index 0000000000..cc19cf5cf7 --- /dev/null +++ b/graphqlmetrics/migrations/20251223131623_migrate_data_24_to_1_day.sql @@ -0,0 +1,10 @@ +-- migrate:up + +-- Step 4: Migrate data from 24 to 1 day ago +INSERT INTO gql_metrics_schema_usage_5m_90d_v2 +SELECT * FROM gql_metrics_schema_usage_5m_90d +WHERE Timestamp >= now() - INTERVAL 24 DAY + AND Timestamp < now() - INTERVAL 1 DAY; + +-- migrate:down + diff --git a/graphqlmetrics/migrations/20251223131624_migrate_data_last_1_day.sql b/graphqlmetrics/migrations/20251223131624_migrate_data_last_1_day.sql new file mode 100644 index 0000000000..a90ef17a03 --- /dev/null +++ b/graphqlmetrics/migrations/20251223131624_migrate_data_last_1_day.sql @@ -0,0 +1,9 @@ +-- migrate:up + +-- Step 5: Migrate data from the last 1 day +INSERT INTO gql_metrics_schema_usage_5m_90d_v2 +SELECT * FROM gql_metrics_schema_usage_5m_90d +WHERE Timestamp >= now() - INTERVAL 1 DAY; + +-- migrate:down + diff --git a/graphqlmetrics/migrations/20251223131629_drop_old_gql_metrics_schema_usage_5m_90d.sql b/graphqlmetrics/migrations/20251223131629_drop_old_gql_metrics_schema_usage_5m_90d.sql new file mode 100644 index 0000000000..8cc7dcac86 --- /dev/null +++ b/graphqlmetrics/migrations/20251223131629_drop_old_gql_metrics_schema_usage_5m_90d.sql @@ -0,0 +1,42 @@ +-- migrate:up + +DROP TABLE IF EXISTS gql_metrics_schema_usage_5m_90d; + +-- migrate:down + +CREATE TABLE gql_metrics_schema_usage_5m_90d +( + Timestamp DateTime('UTC') CODEC(Delta(4), ZSTD(3)), + OrganizationID LowCardinality(String) CODEC(ZSTD(3)), + FederatedGraphID LowCardinality(String) CODEC(ZSTD(3)), + RouterConfigVersion LowCardinality(String) CODEC(ZSTD(3)), + OperationHash LowCardinality(String) CODEC(ZSTD(3)), + OperationName LowCardinality(String) CODEC(ZSTD(3)), + OperationType LowCardinality(String) CODEC(ZSTD(3)), + Path Array(String) CODEC(ZSTD(3)), + FieldName LowCardinality(String) CODEC(ZSTD(3)), + TypeNames Array(String) CODEC(ZSTD(3)), + NamedType LowCardinality(String) CODEC(ZSTD(3)), + ClientName LowCardinality(String) CODEC(ZSTD(3)), + ClientVersion LowCardinality(String) CODEC(ZSTD(3)), + SubgraphIDs Array(LowCardinality(String)) CODEC(ZSTD(3)), + IsArgument Bool CODEC(ZSTD(3)), + IsInput Bool CODEC(ZSTD(3)), + TotalUsages UInt64 CODEC(ZSTD(3)), + TotalErrors UInt64 CODEC(ZSTD(3)), + TotalClientErrors UInt64 CODEC(ZSTD(3)), + IsIndirectFieldUsage Bool DEFAULT false CODEC(ZSTD(3)), + IsNull Bool DEFAULT false CODEC(ZSTD(3)), + INDEX idx_operation_hash OperationHash TYPE bloom_filter(0.001) GRANULARITY 1, + INDEX idx_path Path TYPE bloom_filter(0.01) GRANULARITY 1, + INDEX idx_source_ids SubgraphIDs TYPE bloom_filter(0.01) GRANULARITY 1, + INDEX idx_type_names TypeNames TYPE bloom_filter(0.01) GRANULARITY 1, + INDEX idx_total_usages TotalUsages TYPE minmax GRANULARITY 1, + INDEX idx_total_errors TotalErrors TYPE minmax GRANULARITY 1, + INDEX idx_total_client_errors TotalClientErrors TYPE minmax GRANULARITY 1 +) +ENGINE = SharedSummingMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}') +PARTITION BY toDate(Timestamp) +ORDER BY (OrganizationID, FederatedGraphID, ClientName, ClientVersion, RouterConfigVersion, OperationHash, Path, FieldName, NamedType, TypeNames, SubgraphIDs, IsArgument, IsInput, toUnixTimestamp(Timestamp)) +TTL toDateTime(Timestamp) + toIntervalDay(90) +SETTINGS index_granularity = 8192, ttl_only_drop_parts = 1 \ No newline at end of file diff --git a/graphqlmetrics/migrations/20251223131720_rename_new_gql_metrics_schema_usage_5m_90d.sql b/graphqlmetrics/migrations/20251223131720_rename_new_gql_metrics_schema_usage_5m_90d.sql new file mode 100644 index 0000000000..ba1b3ab6ae --- /dev/null +++ b/graphqlmetrics/migrations/20251223131720_rename_new_gql_metrics_schema_usage_5m_90d.sql @@ -0,0 +1,7 @@ +-- migrate:up + +RENAME TABLE gql_metrics_schema_usage_5m_90d_v2 TO gql_metrics_schema_usage_5m_90d; + +-- migrate:down + +RENAME TABLE gql_metrics_schema_usage_5m_90d TO gql_metrics_schema_usage_5m_90d_v2; \ No newline at end of file