W jakiej strukturze najlepiej byłoby przechowywać dane aplikacji typu komunikator (instant messager), tak by rozwiązanie było możliwie maksymalnie skalowalne?
Jak zaznaczyłem w temacie - skupiam się nad strukturą opartą o Google BigTable.
Załóżmy, że mam tabelę użytkowników, gdzie kluczem wiersza jest identyfikator użytkownika $uid
.
Chciałbym by użytkownik - nadawca $n_uid
mógł o danej chwili $z_timestamp
zapisać w bazie komunikat $msg
adresowany do innego użytkownika - adresata $a_uid
.
Ponadto, by w momencie $o_timestamp
odczytania wiadomości $msg
przez jej adresata $a_uid
również było to odnotowywane.
Zarówno nadawca $n_uid
jak i odbiorca $a_uid
powinni mieć łatwy dostęp do danych dotyczących wszystkich swoich (zarówno wysłanych jak i odebranych) wiadomości począwszy od tych najnowszych (tzn gdzie $z_timestamp
jest największy) oraz do czasów ich odczytania.