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

Wydajne przechowywanie 7.300.000.000 rzędów

„Teraz – jak rozwiązałbyś opisany problem?”

Z prostymi płaskimi plikami.

Oto dlaczego

Masz 2 000 000 podmiotów. Partycja na podstawie numeru podmiotu:

level1= entity/10000
level2= (entity/100)%100
level3= entity%100

Każdy plik danych to level1/level2/level3/batch_of_data

Następnie możesz odczytać wszystkie pliki w danej części katalogu, aby zwrócić próbki do przetworzenia.

Jeśli ktoś chce relacyjnej bazy danych, załaduj pliki dla danego identyfikatora podmiotu do bazy danych w celu ich użycia.

Edytuj W numerach dnia.

  1. date_id /entity_id reguła niepowtarzalności nie coś, z czym trzeba sobie poradzić. Jest (a) trywialnie nakładany na nazwy plików i (b) nieistotny dla zapytań.

  2. date_id „rollover” nic nie znaczy — nie ma zapytania, więc nie ma potrzeby zmiany nazwy. date_id powinien po prostu rosnąć bez ograniczeń od daty epoki. Jeśli chcesz wyczyścić stare dane, usuń stare pliki.

Ponieważ żadne zapytanie nie opiera się na date_id , nic nie trzeba z tym robić. Może to być nazwa pliku dla wszystkiego, co ma znaczenie.

Aby uwzględnić date_id w zestawie wyników, zapisz go w pliku z pozostałymi czterema atrybutami, które znajdują się w każdym wierszu pliku.

Edytuj przy otwarciu/zamknięciu

Do pisania musisz pozostawić plik(i) otwarte. Wykonujesz okresowe opróżnienia (lub zamykasz/ponownie otwierasz), aby upewnić się, że rzeczy naprawdę trafią na dysk.

Masz dwie możliwości wyboru architektury swojego pisarza.

  1. Mieć pojedynczy proces „zapisujący”, który konsoliduje dane z różnych źródeł. Jest to przydatne, jeśli zapytania są stosunkowo częste. Płacisz za połączenie danych w czasie zapisu.

  2. Otwórz jednocześnie kilka plików do zapisu. Podczas wykonywania zapytania połącz te pliki w jeden wynik. Jest to przydatne, ponieważ zapytania są stosunkowo rzadkie. Płacisz za połączenie danych w czasie zapytania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest różnica między typami DATE, TIME, DATETIME i TIMESTAMP?

  2. MySQL - zignoruj ​​błąd wstawiania:zduplikowany wpis

  3. Praca z kursorami SQL

  4. Znajdź liczbę kolumn w tabeli

  5. mysql automatycznie przechowuje znacznik czasu tworzenia rekordu