Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Architektura bazy danych dla milionów nowych wierszy dziennie

Jeśli mówisz o większych ilościach danych, spójrz na partycjonowanie MySQL . W przypadku tych tabel podział według danych/czasu z pewnością poprawiłby wydajność. Jest przyzwoity artykuł o partycjonowaniu tutaj .

Spójrz na utworzenie dwóch oddzielnych baz danych:jednej dla wszystkich nieprzetworzonych danych dla zapisów z minimalnym indeksowaniem; drugi do raportowania przy użyciu wartości zagregowanych; albo za pomocą procesu wsadowego, aby zaktualizować bazę danych raportowania z nieprzetworzonej bazy danych, albo użyj replikacji, aby zrobić to za Ciebie.

EDYTUJ

Jeśli chcesz naprawdę sprytnie posługiwać się raportami agregacji, utwórz zestaw tabel agregacji („dzisiaj”, „od tygodnia do daty”, „od miesiąca do dnia”, „według roku”). Agreguj od surowych danych do „dzisiaj” codziennie lub „w czasie rzeczywistym”; agregować od „dnia” do „od tygodnia do daty” na bazie nocnej; od „od tygodnia do daty” do „od miesiąca do daty” co tydzień itp. Podczas wykonywania zapytań dołącz (UNION) odpowiednie tabele dla interesujących Cię zakresów dat.

EDYCJA #2

Zamiast jednej tabeli na klienta, pracujemy z jednym schematem bazy danych na klienta. W zależności od wielkości klienta możemy mieć kilka schematów w jednej instancji bazy danych lub dedykowaną instancję bazy danych na klienta. Używamy oddzielnych schematów do zbierania surowych danych oraz do agregacji/raportowania dla każdego klienta. Prowadzimy wiele serwerów baz danych, ograniczając każdy serwer do jednej instancji bazy danych. W celu zapewnienia odporności bazy danych są replikowane na wielu serwerach i równoważone w celu zwiększenia wydajności.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użycie parametrów dla mysql_query

  2. Jak wyodrębnić lata, miesiące, dni, godziny, minuty, sekundy z daty mysql?

  3. Jaka jest różnica między MyISAM a InnoDB?

  4. MySQL GROUP BY DateTime +/- 3 sekundy

  5. Jak rozróżnianie wielkości liter w MySQL