• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Optymalne przechowywanie wektora trójki wyrazów

Object Storage Arubacloud
0 głosów
154 wizyt
pytanie zadane 16 lutego 2020 w Algorytmy przez kosaa Stary wyjadacz (14,130 p.)
zmienione kategorie 16 lutego 2020 przez kosaa
hejka

Czy znacie jakąś strukturę danych, która w optymalny sposób przechowywałaby połączenie 3 wyrazów?

przykładowe dane:

1. ala, ma, kota
2. ala, ma, psa
3. ala, ma, żyrafę

 

Dodam tylko, że kolejność ma znaczenie.

Z góry dzięki!
komentarz 16 lutego 2020 przez tkz Nałogowiec (42,000 p.)
Czytaj komentarze dokładniej. Pierwsza część nie była do Ciebie, poza tym "proszę Cię podawaj wszystkie informację w pytaniu, a nie, że wszystko trzeba wyciągać". Niżej podałem link, w który warto zajrzeć, z złożoności obliczeniowej wygląda obiecująco.
komentarz 16 lutego 2020 przez adrian17 Ekspert (344,860 p.)

 leci jedno zapytanie where word1=X and word2=X

Czy w praktyce będzie zapytanie zawsze o pierwsze słowo, plus potencjalnie o drugie, plus potencjalnie o trzecie? To znaczy, czy może się zdarzyć że będzie zapytanie z samym `where word2=Y`?

Tymczasowo założę że nie i że zawsze jest "słownikowo". To wtedy widzę takie spostrzeżenia/opcje:
- tak naprawdę nie trzeba tego traktować jak trzy słowa. "where word1=X and word2=Y" jest równoważne "where sentence.startswith("X Y")"; można by więc się zastanowić na pojedynczą kolumną i zwykłym indeksie MySQLowym (który ogarnie startswith).

- alternatywnie: można na poziomie kodu (lub bazy) trzymać słownik słowników słow. To znaczy {ala: {ma: [kota, psa, żyrafę}}. To jest spora deduplikacja danych; na przykład taki 500MB (20mil wierszy) plik załadowałem do Pythona i całość zajmuje 180MB. Tak się składa że to też hash table o którym wspomniał tkz; masz zapytania typu "where word1=X and word2=Y" praktycznie natychmiastowo.

- powyższe można też zrealizować w zwykłych tabelach SQLowych, przez zrobienie kilku tabel zamiast jednej na wszystkie trzy kolumny; masz wtedy podobną deduplikację.

- wcześniej pytałeś o gotowe rozwiązania; kojarzę na przykład ClickHouse, Apache ORC czy inne kolumnowe bazy... ale ogólnie wydaje mi się że przy takiej skali jeszcze bym próbował się trzymać zwykłych baz.

komentarz 16 lutego 2020 przez kosaa Stary wyjadacz (14,130 p.)

Czy w praktyce będzie zapytanie zawsze o pierwsze słowo, plus potencjalnie o drugie, plus potencjalnie o trzecie? To znaczy, czy może się zdarzyć że będzie zapytanie z samym `where word2=Y`?

zapytania typu: word1=X && word2=Y oraz word2=X && word3=Y

 

alternatywnie: można na poziomie kodu (lub bazy) trzymać słownik słowników słow. To znaczy {ala: {ma: [kota, psa, żyrafę}}.

wszystko fajnie, wtedy zwykle drzewo zalatwia sprawe, problem w tym ze czasami trzeba przeszukac od prawej do lewej czyli word2=X and word3=X

 

komentarz 16 lutego 2020 przez adrian17 Ekspert (344,860 p.)

No to... jak by tych danych nie przechowywać, to gdzieś jakaś postać indeksu musi być, może dwa, może trzy. To wciąż nie jest taka skala, że miejsce na dysku oraz zużycie pamięci mogłyby być wielkimi problemami IMO.

komentarz 16 lutego 2020 przez kosaa Stary wyjadacz (14,130 p.)
trudno, jak coś znajdę to napiszę

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 102 wizyt
pytanie zadane 5 listopada 2019 w Algorytmy przez SzK Nowicjusz (120 p.)
0 głosów
1 odpowiedź 95 wizyt
pytanie zadane 22 maja 2023 w C i C++ przez Dani Obywatel (1,450 p.)
0 głosów
1 odpowiedź 168 wizyt
pytanie zadane 21 maja 2023 w C i C++ przez Dani Obywatel (1,450 p.)

92,555 zapytań

141,404 odpowiedzi

319,559 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...