Database
 sql >> Baza danych >  >> RDS >> Database

Zapytania do bazy danych:jak znaleźć igłę w stogu siana?

Scenariusz potomny plakatu dla dużych zbiorów danych – musisz przesiać dużą ilość danych, aby wyodrębnić maleńki „ bryłka” informacji. Ponadto musi to zostać zrobione w jak najkrótszym czasie, od tego zależy Twoja firma. Historycznie, przy użyciu tradycyjnej technologii systemu zarządzania relacyjnymi bazami danych (RDBMS), tego rodzaju scenariusz wymagał dużego zespołu oraz zainwestowania czasu i pieniędzy. Większość tradycyjnych RDBMS skaluje się tylko w pionie, więc musisz kupować coraz większe maszyny, aby skrócić czas realizacji. Pojawienie się chmur publicznych i baz danych NoSQL, takich jak MongoDB, całkowicie zmieniło sposób myślenia zespołów o tym scenariuszu.

Jeden z naszych klientów zgłosił się niedawno do nas z interesującym problemem. Od czasu do czasu musieli uruchamiać naprawdę złożone zapytania, które skanowały cały ich zestaw danych. To zapytanie było w zasadzie skanem kolekcji, który dotyczył każdego dokumentu w kolekcji i zawierał następujące szczegóły:

  • Łączna ilość danych wynosiła około 100 GB.
  • Bezpieczeństwo danych nie było problemem, ponieważ główna kopia danych znajdowała się gdzie indziej.
  • Szybkość zapytań była niezwykle ważna. Celem było uruchomienie całego zapytania w ciągu 10-15 minut.
  • System musiał działać tylko wtedy, gdy zapytanie jest uruchomione (minimalizuj koszt).

Ze względu na ostatnie wymaganie sensowne było uruchomienie całego systemu w chmurze publicznej. Maszyny są włączane tylko na kilka godzin tygodniowo, aby dane zostały zaktualizowane i zapytanie zostało uruchomione. Klient był już zadowolony z Amazon EC2, więc podjęto decyzję o prototypowaniu systemu w AWS.

Najlepszą konfiguracją do osiągnięcia tego celu było „sharded” wdrożenie MongoDB. Oto konfiguracja, na którą się zdecydowaliśmy:

  • 3 shardy – każdy shard ma samodzielną instancję (r3.xlarge) z 30 GB pamięci RAM
  • 1 serwer konfiguracyjny
  • 1 router shard (m3.xlarge) z 15 GB pamięci RAM

Kilka rzeczy, na które należy zwrócić uwagę przy naszych wyborach:

  • Zestaw samodzielny kontra replika

    Bezpieczeństwo danych nie jest tutaj ważnym wymogiem, ponieważ dane podstawowe są przechowywane w osobnym systemie. Dlatego zdecydowaliśmy się na samodzielne serwery zamiast zestawu replik, aby zaoszczędzić na kosztach.

  • 3 serwery konfiguracyjne kontra 1 serwer konfiguracyjny

    z tego powodu jak powyżej. Bezpieczeństwo danych nie jest ważną kwestią. W typowym środowisku produkcyjnym wybralibyśmy trzy serwery konfiguracyjne.

Prawdziwe piękno tej konfiguracji polega na tym, że dzięki konfiguracji podzielonej na fragmenty prawie całe 100 GB danych jest przechowywane całkowicie w pamięci. Zasadniczo to, co uruchamiasz, to skanowanie „w pamięci”. To znacznie skróciło czas wykonywania zapytania z kilku godzin do mniej niż 10 minut. Korzystanie z chmury publicznej znacznie zmniejszyło również inwestycje kapitałowe, ponieważ płacisz za maszyny tylko wtedy, gdy są uruchomione.

Jest to dość dramatyczna zmiana sposobu, w jaki zespoły radzą sobie z tym scenariuszem w ciągu ostatniej dekady. Tak więc, jeśli zajmujesz się „znalezieniem igły w stogu siana”, pomyśl o Cloud + NoSQL!

Jak zawsze, jeśli masz jakiekolwiek pytania, możesz skontaktować się z nami pod adresem [email protected].


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zliczanie odwołań do rekordu w tabeli za pomocą kluczy obcych

  2. Schemat płatka śniegu

  3. Obsługa potwierdzenia e-mail podczas rejestracji w Flask

  4. Znaczenie wyboru odpowiedniego rozmiaru maszyny wirtualnej platformy Azure

  5. Zatrzask APPEND_ONLY_STORAGE_INSERT_POINT