Używanie client side evaluation jako ułatwienie scalowania?

0

Jeżeli dobrze zrozumiałem, to pomysł jest taki:

Mając X instancji aplikacji, zamiast próbować wycisnąć nie wiadomo jaką wydajność z bazy cięższymi query,
to rozkłada się niektóre query na instancje aplikacji (client side evaluation) i dzięki temu łatwiej jest to skalować, bo

a) większa kontrola nad kodem niż nad db

b) kontrola nad ilościom instancji oraz łatwiej dorzucić instancje aplikacji niż instancje bazy

c) kontrola nad workloadem per instancja

Ktoś coś takiego robił?

2

W czasach w których wkładało się wszelką logikę do baz danych to miałoby sens. Obecnie jednak żyjemy w czasach w których w bazie się umieszcza jedynie kod właśnie ze względu na to że szybciej się wykona o rząd wielkości niż po stronie aplikacji. Także jakoś nie widzę wiele przypadków w typowej aplikacji biznesowej korzystającej z relacyjnej bazy danych gdzie by się dało coś z bazy przenieść na aplikację, bo już dawno takiego kodu tam nie powinno być, tyle że nie ze względu na wydajność tylko prostotę utrzymania.

Relacyjną bazę danych się skaluje, do wyboru:

  • korzystając z cache
  • dodając repliki do odczytu (master - slave)
  • dodając inne źródła danych tylko do odczytu zawierające zdenormalizowane dane zasilane na bieżąco z naszej relacyjnej bazy (hurtowanie danych. bazy dokumentowe, różne wyszukiwarki bazujące na Apache Lucene)
  • dzieląc bazę poziomo (sharding), gdzie na wybranych instancjach są określone zakresy danych
  • dzieląc bazę pionowo, czyli tak naprawdę wkraczamy w świat mikroserwisów/soa

1 użytkowników online, w tym zalogowanych: 0, gości: 1