Ich habe bereits einige Millionen Zeilen in meiner Datenbank. Ich wusste nichts über den PostgreSQL-UUID-Datentyp, als ich mein Schema entwarf.
Eine der Tabellen verfügt über 16 Millionen Zeilen (ca. 3,5 bis 4 Millionen Datensätze pro Shard) und wächst mit ca. 500.000 Datensätzen pro Tag. Ich habe immer noch den Luxus, das Produktionssystem bei Bedarf für ein paar Stunden herunterzufahren. Ich werde diesen Luxus in ein oder zwei Wochen nicht haben.
Meine Frage ist, lohnt sich das? Ich wundere mich über die JOIN-Leistung, die Speicherplatznutzung (vollständiger gzip-Dump ist 1,25 GiB) und solche Dinge.
Das Tabellenschema ist:
# \d twitter_interactions
Table "public.twitter_interactions"
Column | Type | Modifiers
-------------------------+-----------------------------+-----------
interaction_id | character(36) | not null
status_text | character varying(1024) | not null
screen_name | character varying(40) | not null
twitter_user_id | bigint |
replying_to_screen_name | character varying(40) |
source | character varying(240) | not null
tweet_id | bigint | not null
created_at | timestamp without time zone | not null
Indexes:
"twitter_interactions_pkey" PRIMARY KEY, btree (interaction_id)
"twitter_interactions_tweet_id_key" UNIQUE, btree (tweet_id)
"index_twitter_interactions_on_created_at" btree (created_at)
"index_twitter_interactions_on_screen_name" btree (screen_name)
Triggers:
insert_twitter_interactions_trigger BEFORE INSERT ON twitter_interactions FOR EACH ROW EXECUTE PROCEDURE twitter_interactions_insert_trigger()
Number of child tables: 9 (Use \d+ to list them.)