noisy
11 files changed, 14 insertions(+), 31 deletions(-)
Commit zrobiony, ale utknąłem przy optymalizacji #bazydanych :/ Jest tu może jakiś spec, któreg można było by się poradzić? :>

#programujzwykopem #python
  • Najlepsze
  • Wszystkie komentarze
koob
koob
0
@noisy: pytaj od razu, a nie pytasz czy mozesz zapytac.
noisy
noisy Autor
0
@koob: nie każdą rzecz można omawiać publicznie :(
koob
koob
0
@noisy: jaka baza ?
Jahcob
Jahcob
@noisy: pytaj
noisy
noisy Autor
0
@koob: @Jahcob: dobra... z dużym uogólnieniem:

mam bazę z ponad 2 mln rekordów (obecnie #mysql), wstawiając kolejne wiersze muszę wykonać niestety porównanie, by sprawdzić, czy nowy wiersz powinien być zmerdżowany do innego, czy powinien tworzyć nowy. Niestety owo sprawdzanie jest cholernie wolne, bowiem muszę porównać, czy dwa wiersze mają odpowiedni współczynnik podobieństwa tekstu (długość levenshteina)
noisy
noisy Autor
0
@noisy: wstawianie jest dość wolne, bowiem w praktyce jest ono złożoności O(n^2/2 * k), gdzie n jest liczba wierszy a k długością stringa, po którym funkcja levenshteina poddaje się twierdząc, że wpisy nie są podobne.
noisy
noisy Autor
0
@noisy: w obecnym rozwiązaniu tworzenie indeksów nie daje zysku, bowiem select, który jest konieczny przed insertem wywołuje funkcje, a nie korzysta z standardowych operatorów jak =, >, <
koob
koob
0
@noisy: porównujesz ten nowy rekord z każdym z poprzednich ?
noisy
noisy Autor
0
@koob: nie wprost, ale to się dzieje pod spodem. levenshtein ma złożoność k^2 (gdzie k to jest min długości dwoch porownywanych stringow), jednak ja uzywam funkcji levenshteina o zlozonosci liniowej, by zdobyc "kandydatow", ktora nie sprawdza czy są dopasowane, tylko czy są na tyle niepodobne dwa rekordy
koob
koob
0
@noisy: funkcja liczaca tego levensthteina masz zadeklarowana w mysqlu jak rozumiem ? Moze sprawdz przez rozszerzenia (so/dll), gdzies pewnie znajdziesz na googlach gotowca.
noisy
noisy Autor
0
@koob: jest podpieta jako .so, napisana w C
koob
koob
0
@noisy: tabela jest myisam/innodb ? Moze finetuning samego mysqla cos pomoze ? Moze percona ? Jezeli waskim gardlem jest liczenie levenstheina to pewnie duzo nie zwalczysz w mysqlu.

Tutaj jest jakis .so:

http://samjlevy.com/2011/03/mysql-levenshtein-and-damerau-levenshtein-udfs/

jak tego nie uzywasz to moze warto przetestowac ?