Wpis z mikrobloga

#programowanie #bazydanych #nosql
Witam Mireczków, interesuje mnie rozwiązanie pewnego problemu, który przedstawię na prostym przykładzie. Na przykład bierzemy bank, gdzie mamy klienta oraz jego przychody i wydatki. Zakładając, że mamy 100 000 klientów i każdy z nich wykona średnio 200 transakcji to mamy 20 000 000 rekordów w tabeli. Chyba zgodzicie się, że przeszukanie takiej tabeli jest bardzo czasochłonne, więc jak to zrobić by miało RENCE I NOGI.

Na obecny stan mój wiedzy wydaje mi się, że najłatwiej było by to zrobić w NoSQL, ale interesuje mnie rozwiązanie w relacyjnej bazie danych.
  • 34
  • Odpowiedz
@maniac777:

Wyszukiwanie (w domyśle: po tym indeksie) działa szybko póki indeks mieści się w pamięci RAM.


Czyli te zdanie wg. Ciebie jest nieprawdziwe? Jak indeks się nie mieści może zwolnić, nie musi. Podałem najbardziej ogólny przypadek, który będzie prawdziwy dla każdego możliwego silnika.

Wiadomo że jeśli porównujemy wyszukiwanie bez indeksu i z nim to wyszukiwanie po indeksie będzie szybsze. Nie wiem co próbujesz mi tutaj udowodnić.
  • Odpowiedz
Czyli te zdanie wg. Ciebie jest nieprawdziwe? Jak indeks się nie mieści może zwolnić, nie musi. Podałem najbardziej ogólny przypadek, który będzie prawdziwy dla każdego możliwego silnika.


@Ununoctium: Tak, to zdanie było fundamentalnie nieprawdziwe ponieważ indeks nie musi się cały znaleźć w RAM by wyszukiwanie z jego użyciem było szybkie. Przed rozpoczęciem zapytania w ogóle ani jeden blok indeksu nie musi być w RAM by z dużej tabeli dostać wynik
  • Odpowiedz
@plushy: Szybciej może nie działać jak jakiś głupiec założy indeks tylko na yes/no lub gdy zakłada indeks na kolumnie której wszystkie wiersze zlokalizowane są w dwóch blokach na krzyż i oczekuje dramatycznego wzrostu wydajności :) W normalnych okolicznościach, przy poprawnym użyciu indeksów jest to są to rzędy wielkości. Poza tym to nie technikalia lecz pryncypia którymi rządzą się silniki baz danych.
  • Odpowiedz
@maniac777: Czy ja napisałem że Indeks MUSI się zmieścić w ramie aby zapytanie używającego tego indeksu działało szybko? Wkładasz mi słowa których nie napisałem.

I tak jak napisałem - w domyśle chodzi oczywiście o wyszukiwanie po tym poprawnie założonym indeksie. Nie wiem skąd założenie że robimy złe zapytanie. Napisałem że zgadzam się z kolegami wyżej, którzy już napisali o poprawnych indeksach.
  • Odpowiedz
Czy ja napisałem że Indeks MUSI się zmieścić w ramie aby zapytanie używającego tego indeksu działało szybko?


@Ununoctium: Tak, napisałeś tu:

Wyszukiwanie działa szybko póki indeks mieści się w pamięci RAM.


Jak inaczej rozumieć to co powyżej?! Mamy bawić się w gramatyczny rozbiór zdania i w ustalanie jakie jest słownikowe znaczenia słowa "póki" oraz czy i jaki warunek brzegowy może ono w tym kontekście określać?!
  • Odpowiedz
@maniac777: Nie. Mylisz pojęcia. Cały indeks w ramie to zapytanie działa szybko != Zapytanie działa szybko tylko jeśli indeks jest w ramie.

I tak, jeśli zacząłeś się czepiać to będziemy się bawić w gramatyczny rozbiór zdania. Jak chciałeś doprecyzować informację to mogłeś to zrobić, a nie oskarżać mnie o sianie nieprawdy.
  • Odpowiedz
ZWŁASZCZA tutaj, przy operacjach finansowych, gdzie jak słyszy się o braku ACIDu i eventual consistency to właśnie jakiś gruby dyrektor schodzi na zawał.


@Andrew7642: Przecież spójność danych można zagwarantować w warstwie aplikacji, dlatego Mongo. ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)
  • Odpowiedz
opis odnośnika> Cały indeks w ramie to zapytanie działa szybko != Zapytanie działa szybko tylko jeśli indeks jest w ramie.

@Ununoctium: Słowo "póki", od "dopóki" znaczy to samo co "tak długo jak długo" i znaczy to samo co "==" i jest przeciwieństwem "!=". Dobra... to ostatni raz gdy tu odpisuję, bo mam wrażenia że albo popełniłeś lapsus i nie jesteś świadomy albo pasuje tutaj powiedzonko o jednym ssaku parzystokopytnym
  • Odpowiedz
@maniac777 Nie odniosłeś się w ogóle do mojego porównania tylko wprowadziłeś swoje, które jest bez sensu. Zacytowałeś kawałek tekstu, a następnie napisałeś że "póki" oznacza "równe". Jak nie możesz się odnieść do tego co napisałem to faktycznie nie masz co więcej pisać.
  • Odpowiedz
@maniac777: Nadal nie odniosłeś się do tego:

Cały indeks w ramie to zapytanie działa szybko != Zapytanie działa szybko tylko jeśli indeks jest w ramie.


Tylko zacząłeś porównywać "póki" do znaku równości.

Tak samo wcześniej gdy napisałem że baza działa najlepiej gdy cały indeks jest w ramie, to napisałeś że wcale nie musi się mieścić. Jakby jedno coś miało do drugiego. Najpierw wkładasz mi w usta słowa których nie napisałem,
  • Odpowiedz
@maniac777: Niby dlaczego to jest nieprawdą?
Jeżeli indeks mieści się w RAM to mamy gwarantowane szybkie wykonanie.
Poza tym już od kilku postów rzucasz w moim kierunku bez powodu inwektywy, więc daj sobie na wstrzymanie.
  • Odpowiedz