Scenariusz: Projektowanie czatu dla różnych użytkowników do czatowania na raz. Wszystkie czaty muszą zostać zapisane. Za każdym razem, gdy użytkownik się loguje, powinien widzieć wszystkie poprzednie rozmowy.Projekt bazy danych dla czatu. Musisz zapisać każdy czat
Oto jeden z przykładów w tabeli, które mogą być używane do przechowywania czaty:
CREATE TABLE chat
(
chat_id int NOT NULL auto_increment,
posted_on datetime NOT NULL,
userid int NOT NULL,
message text NOT NULL,
PRIMARY KEY (chat_id),
FOREIGN KEY(userid) references users(userid) on update cascade on delete cascade
);
do pobierania czatów w odpowiedniej kolejności, potrzebuję klucz podstawowy w tabeli, w której jestem przechowywania czatów. Tak więc, jeśli użyję powyższej tabeli do przechowywania czatów, nie będę mógł przechowywać więcej niż 2147483647 czatów. Oczywiście, mogę użyć jakiegoś typu, który ma duży zasięg jak unsigned bigint, ale nadal będzie miał pewien limit.
Jednak scenariusz mówi, że czaty, które mają zostać zapisane, mogą być nieskończone, więc jaki rodzaj tabeli powinienem wykonać? Czy powinienem zrobić inny klucz podstawowy?
Pomóż mi rozwiązać problem. Zastanawiam się, jak Google lub Facebook zarządzają zapisaniem każdego czatu.
Co jest nie tak z Bigintem? Daje to zakres do 9223372036854775807 unikalnych instancji. Jeśli masz 1 miliard czatów dziennie, to zajmie to 9 miliardów lat, zanim przekroczysz ten zakres. – selbie
Ale myślę, że posiadanie dużego stołu to wada perforacji. – Paddy
@selbie Ktoś powiedział mi, gdy tabela stała się zbyt duża, po prostu zrzuć dane tabeli do pliku, a następnie opróżnij tabelę i kiedy dane są wymagane, po prostu wczytaj dane z pliku do tabeli. I tak Google lub fb zapisuje nieskończone dane. Ale nie wiem, czy to jest poprawny soln, czy jest to poprawne, jak dokładnie to zaimplementować. – Paddy