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

Czy mogę przewidzieć, jak duży będzie mój indeks Zend Framework? (i kilka szybkich pytań)

SOLR to w zasadzie kontener Apache Tomcat, który implementuje interfejs REST do wysyłania zapytań do indeksu Apache Lucene. Tak, musisz mieć możliwość uruchomienia aplikacji Java na swoim serwerze WWW. Jest to problem, który musisz rozwiązać z dostawcą usług hostingowych.

Klienci korzystający z Twojej aplikacji internetowej nie muszą uruchamiać Javy. Twoja aplikacja PHP może wykonać zapytanie REST do usługi SOLR i sformatować wyniki w formacie HTML. Klient widzi tylko dane wyjściowe HTML; nigdy nie musi wiedzieć, że dane pochodzą z usługi zaimplementowanej w Javie.

Zend_Search_Lucene to implementacja w czystym PHP, która ma działać identycznie jak Apache Lucene. Rozwiązanie Zend używa nawet identycznego formatu pliku indeksu. Dlatego pod względem przechowywania powinny być równe.

Użyłem Java Lucene do zindeksowania zrzutu danych StackOverflow (październik 2009). Zindeksowałem 1,5 miliona wierszy, w tym około 1 GB danych tekstowych. Indeks Lucene wynosił 1323 MB, podczas gdy indeks MySQL FULLTEXT tych samych danych wynosił tylko 466 MB.

Korzystanie z SQL LIKE predykaty zamiast dowolnego rozwiązania indeksowania pełnotekstowego nie wymagają oczywiście miejsca, ponieważ i tak nie mogą korzystać z konwencjonalnego indeksu. Ale w moich testach używających LIKE był około 200 razy wolniejszy niż Java Lucene, co z kolei było około 40% wolniejsze niż indeks MySQL FULLTEXT na tych samych danych.

Zobacz moją ostatnią prezentację na temat rozwiązań do indeksowania pełnotekstowego w MySQL:

http://www.slideshare.net/billkarwin /praktyczne-wyszukiwanie-pełnotekstowe-z-my-sql

Nic dziwnego, że nie dorównuje wydajnością i skalowalnością technologii Java Lucene. Zaletą PHP jako języka jest zwiększenie wydajności programowania, a nie wydajności w czasie wykonywania.

aktualizacja: Właśnie próbowałem utworzyć indeks za pomocą Zend_Search_Lucene . Tworzenie indeksu jest znacznie wolniejsze w PHP niż w technologii Java Lucene, więc zindeksowałem tylko 10 000 dokumentów. Zajęło to prawie 15 minut, co oznaczałoby, że indeksowanie całej kolekcji zajęłoby około 36 godzin. Porównaj to z Javą Lucene, która w moim teście zindeksowała pełną kolekcję 1,5 miliona dokumentów w mniej niż 7 minut.

Rozmiar indeksu, który stworzyłem za pomocą Zend_Search_Lucene wynosi 8,75 MB. Ekstrapolując to 150x, szacuję, że pełny indeks wyniesie 1312,5 MB. Dochodzę więc do wniosku, że Zend_Search_Lucene tworzy indeks mniej więcej tej samej wielkości, co indeks utworzony przez Java Lucene. To jest zgodne z oczekiwaniami.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zastąpić funkcję UUID w wersji 1 MySQL?

  2. Nieoczekiwane wyniki MySQL:klauzula IN (liczba, „ciąg”) w kolumnie varchar

  3. PHP wykrywa próbę wstrzyknięcia SQL

  4. Długa liczba całkowita jest przekształcana po wstawieniu w krótszej kolumnie, nie jest obcinana. Czemu? Jaka jest formuła?

  5. Laravel ma wiele i należy do parametrów