Ten Days Per Bucket

Discord's message table used the primary key ((channel_id, bucket), message_id). The partition key pairs the channel with a fixed time bucket; message_id is a snowflake, so rows inside a partition are already in time order. The bucket exists only to bound partition size, because a partition that grows without limit hurts compaction and makes cluster expansion painful. Discord targeted partitions under 100 MB and chose a 10 day bucket.

Take a stored row as roughly 200 bytes and 100 MB as 100×106100 \times 10^6 bytes.

More than one option is correct. With a 10 day bucket, which of these channels blows the 100 MB target?

A

#welcome, 300 messages per day

B

#general on a large public server, 85,000 messages per day

C

#raid-planning, 61,000 messages per day

D

#memes, 12,000 messages per day