PHPMem v2.0.1
Version
1.6.45
Uptime
15 days 9 hours 55 minutes 4 seconds
Memory
Total
512MB
Used
24,01MB (4.69%)
Free
487,99MB
Keys
Current
27 650
Total (since start)
33 978
Evictions
0
Reclaimed
160
Expired Unfetched
0
Evicted Unfetched
0
Connections
Current
12 / 1 024 max
Total
170 735
Rejected
0
llm:9eb536f13dd7a5bc8304c78a2d3efff526ba38a37974df95d65d1609fdfd64b2
Edit
{
"table_name": "return_kaggle",
"primary_key": "Name, Date, Tournament, Rd, vRk",
"candidates": [
{
"rank": 0,
"partition_key": "Name",
"partition_key_label": "E",
"partition_key_reasoning": "Name is the player whose match-by-match return stats are recorded. It has 462 unique values (RPUV ~513) and top-3 coverage of only 1.74%, so it is well distributed. The RPUV is above the ~100 guideline, but it is still the most natural entity. The alternatives are worse: Tournament has 3572 distinct values and Date has 1424.",
"clustering_key": "Date",
"clustering_key_label": "S",
"clustering_key_reasoning": "Date is the match or tournament start date and orders each player's timeline. It is stored as text in d-Mon-yyyy format, so it must be parsed to a date before sorting. It has 1424 unique values and no nulls. Rd (round) gives the within-tournament order as a tie-breaker, but it is categorical and needs a custom ordering (R128 < R64 < ... < F).",
"world_line": "Name",
"session_column": "Tournament",
"confidence": "MEDIUM",
"notes": "Each row is one match from one player's perspective, and the data is ordered by player and then by time descending. Name + Date + Tournament + Rd is nearly unique, but the Tour Finals contain several RR rows with the same Name, Date, Tournament and Rd. vRk (opponent rank) is therefore added to the primary key to separate them, and it may still not be fully unique. The 'against' column is empty (a single value), and the _ingestion/_batch/_source columns are constant metadata. Roughly 86.8k rows have blank stats (walkovers or missing data)."
},
{
"rank": 1,
"partition_key": "derived:year(Date)",
"partition_key_label": "E",
"partition_key_reasoning": "Partitioning by the year of the parsed Date gives a manageable number of partitions across about 1424 distinct dates. The alternative is viable for time-sliced analysis across all players, but it is a coarser, time-based split rather than a true entity.",
"clustering_key": "Name",
"clustering_key_label": "S",
"clustering_key_reasoning": "Name ordering within each year groups each player's matches together. It is a categorical grouping rather than a true sequence axis.",
"world_line": "Name",
"session_column": "Tournament",
"confidence": "LOW",
"notes": "Alternative for cross-player, period-based scans. It is less faithful to the event-entity model, because the Date derivation needs text parsing."
}
]
}