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

Indeksuj bazę danych MySQL za pomocą Apache Lucene i synchronizuj je

Dopóki pozwolisz na indeksowanie/ponowne indeksowanie niezależnie od aplikacji, będziesz mieć problemy z synchronizacją. W zależności od dziedziny Twojej pracy może to nie stanowić problemu, ale w przypadku wielu aplikacji współbieżnych użytkowników tak właśnie jest.

Te same problemy mieliśmy, gdy system zadań uruchamiał asynchroniczne indeksowanie co kilka minut. Użytkownicy mogli znaleźć produkt za pomocą wyszukiwarki, a następnie, nawet jeśli osoba administracyjna usunęła produkt z ważnego stosu produktów, nadal znajdowała go w interfejsie użytkownika, aż do uruchomienia kolejnego zadania reindeksowania. Prowadzi to do bardzo mylących i rzadko powtarzalnych błędów zgłaszanych do wsparcia pierwszego poziomu.

Widzieliśmy dwie możliwości:albo ściśle połącz logikę biznesową z aktualizacjami indeksu wyszukiwania, albo zaimplementuj ściślejsze asynchroniczne zadanie aktualizacji. Zrobiliśmy to drugie.

W tle działa klasa w dedykowanym wątku wewnątrz aplikacji tomcat, która pobiera aktualizacje i uruchamia je równolegle. Czas oczekiwania na aktualizacje backoffice do frontendu skrócił się do 0,5-2 sekund, co znacznie zmniejsza problemy związane z obsługą pierwszego poziomu. I jest tak luźno powiązany, jak to tylko możliwe, możemy nawet zaimplementować inny silnik indeksowania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alternatywa NOT IN na MySQL

  2. PHP Object Property ma w sobie nawiasy kwadratowe

  3. Jak wersjonować schemat bazy danych?

  4. MySQL Boolean tinyint(1) przechowuje wartości do 127?

  5. MySQL - SUMA grupy różnic czasowych