Damian Snoch

Damian Snoch Typ konstruktora, a
nie destruktora...

Temat: Fragmentacja danych w rozproszonej bazie danych

Witam

Projektuje bazę danych ( rozproszoną ) co w myśl definicji oznacza, że mimo jej rozdystrybuowania na wielu stacjach roboczych, stanowi ona jedną wielką logiczną całość. To wszystko jest fajne i zrozumiałe. Zaprojektowanie RMBD też raczej nie stanowi problemu ( zwykła baza, można ją projektować tak jakby miała być screntralizowana ). Problemem po zaprojektowaniu RMBD jest odpowiednia fragmentacja danych. Przejrzałem dość dużo PDF, skrytpów i stron uczelnianych. Niestety te przykłady się powtarzają, aczkolwiek są zrozumiałe.

Założmy, że mamy bazę zaprojektowaną dla sklepu zajmującego się sprzedażą części komputerowych. W modelu relacyjnym występuje relacja pomiędzy Produkty - Magazyny ( związek wiele do wiele ). Tabele Produkty i Magazyny możemy fragmentować poziomo w zależności do jakiego magazynu dodaje się produkt. Tak naprawdę efektem będzie składowanie danych na maszynie, na której obecnie pracujemy ( oczywiście rozwiązane to będzie programowo, że stałe ID magazunu będzie gdzieś w zmiennej - ale nie o tym teraz ), i każdy magazyn/sklep przechowuje swoje produkty, zgadza się?

Pozdrawiam

konto usunięte

Temat: Fragmentacja danych w rozproszonej bazie danych

Dlaczego nie zapytasz wykładowcy, co ma na myśli? Bo to jest projekt na studia, tak?
Damian Snoch

Damian Snoch Typ konstruktora, a
nie destruktora...

Temat: Fragmentacja danych w rozproszonej bazie danych

Nie, bazami interesuje się bo po prostu chcę, lubię to i pasjonuje się tym. Lubię słuchać ludzi z doświadczeniem, a często gęsto wykładowcy te doświadczenie mają ( w wyniku pracy na uczelni ), a dla mnie takie doświadczenie nie jest zbyt cenne jako strikte praktyka.

Pozdrawiam

BTW. Bazę rozproszoną buduję dla siebie, nic tak nie uczy jak praktyka. A że mam akurat dwa komputery to czemu ich nie wykorzystać do czegoś pożytecznego.
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Fragmentacja danych w rozproszonej bazie danych

Po prostu poszukaj na necie implementacj shardingu bazy.

konto usunięte

Temat: Fragmentacja danych w rozproszonej bazie danych

@Damian

Tu się nie zgodzę. Przeważnie ludzie z uczelni nigdy nie budowali żadnego dużego i sensownego oprogramowania. A jak zbudowali, to nie musieli go utrzymywać przez lata. Jeszcze nie spotkałem człowieka z uczelni, który znałby się na bazach danych, a wręcz jest jeszcze gorzej. Im wyższy stopień naukowy, tym mniejsza wiedza praktyczna.

Jeśli chodzi o rozproszenie baz, to jest nieco skomplikowane, poniżej jest kilka przemyśleń. To powinno raczej zwiększyć liczbę problemów, niż cokolwiek wyjaśnić :)

1) Jest replikacja. Całą bazę trzymasz na dwóch serwerach i z nich czytasz dane, ale zapisy robisz na jeden serwer, w tle magicznie się wszystko kopiuje na drugi. To możesz wykorzystać do zwiększenia liczby odczytów i mieć backup.

2) Jest sharding, czyli trzymasz część danych tu, część danych tam. To się nieco komplikuje, bo np. jeśli masz produkty i kategorie, to możesz trzymać część produktów na jednym serwerze, pozostałą część na drugim, ale takie kategorie trzeba trzymać na obu serwerach. Całość utrudnia nieco bardziej skomplikowane zapytania, niż tylko zapytanie o produkt. Bo już zrobienie zapytania i stan magazynowy, oznacza odpytanie wszystkich serwerów i połączenie danych. Zmiana kategorii też może być problemem.

3) Są jeszcze inne dziwne rozwiązania specyficzne dla każdej bazy danych, ale to trzeba doczytać w dokumentacji u producenta.

Jeśli o mnie chodzi, to zostałbym przy rozwiązaniu numer 1. Jest bardzo proste, a nawet sklep obsługujący miliony klientów rocznie, może na tym stać bez żadnego problemu.

Jak chcesz się bawić w bazy danych, to polecam blogi, tam się naprawdę dużo dzieje. Z polskich nic ciekawego nie znam, z angielskich jest nieco fajnych rzeczy. I książki. Niektóre książki są fajne. Joe Celko napisał nieco książek, są siermiężne bardzo i stare, ale na pewno pomogą w myśleniu po bazowemu.Szymon G. edytował(a) ten post dnia 12.03.13 o godzinie 10:03
Damian Snoch

Damian Snoch Typ konstruktora, a
nie destruktora...

Temat: Fragmentacja danych w rozproszonej bazie danych

@Szymon Guz czyli jednak przyznajesz mi rację bo doświadczenie zdobyte na uczelni nie jest cennym doświadczeniem :) Dokładnie miałem na myśli to, co ty ująłeś bardziej bezpośrednio :-)
Podeprę to tym, że wiem ile nauczyłem się na zajęciach a ile i CZEGO z książek z helionu i na praktykach gdzie jednolinijkowe zapytanie przestało w ogóle istnieć. Jeżeli chodzi o modele scentralizowane to wiem jak je budowałem na uczelni, a wiem jak je buduję teraz łapiąc cenne doświadczenie z blogów ( jak wspomniałeś ), mejlując z innymi doświadczonymi użytkownikami i czytając fora.

Poczytam dziś o replikacji. O shardingu przeczytałem jakąś stronkę po angielsku teraz, ale nadal jest to skąpa wiedza. O replikacji jest o wiele więcej także na początek stworzę coś w oparciu o nią.

Pozdrawiam!

Edycja:

Czy można łączyć replikacje z fragmentacją danych jednocześnie?? Że niektóre tabele źródłowe będą tylko replikowane a reszta poddana fragmentacji.Damian S edytował(a) ten post dnia 12.03.13 o godzinie 11:09
Damian Snoch

Damian Snoch Typ konstruktora, a
nie destruktora...

Temat: Fragmentacja danych w rozproszonej bazie danych

Czy można łączyć replikacje z fragmentacją danych jednocześnie?? Że niektóre tabele źródłowe będą tylko replikowane a reszta poddana fragmentacji.

konto usunięte

Temat: Fragmentacja danych w rozproszonej bazie danych

Damian S:
Czy można łączyć replikacje z fragmentacją danych jednocześnie?? Że niektóre tabele źródłowe będą tylko replikowane a reszta poddana fragmentacji.

Można. Wszystko można. Tylko po co?

Poza zrobieniem śmiesznej bazy, pozostaje jeszcze problem utrzymania jej. Może się okazać, że koszt wprowadzenia zmian w strukturze, czy danych, albo zrobienie zapytania, jest ogromny.

Większość udziwnień nie jest potrzebna. Przeważnie najlepsze rozwiązania, to te najprostsze.

Ja bym tam nie robił fragmentacji. Chyba, że jest potrzebna. A jeśli jest potrzebna, to dwa pytania: dlaczego jest potrzebna i czego oczekuję od bazy?

Potrzebuję samochód, ale taki, żeby latał. Do sklepu muszę codziennie jeździć, a jakby latał, to mógłbym też nim jeździć do kina. Tylko skręcać się nie da, bo skrzydła zawadzają o latarnie. Teoretycznie wystarczyłby mi samochód, ale fajniej, że lata.
Damian Snoch

Damian Snoch Typ konstruktora, a
nie destruktora...

Temat: Fragmentacja danych w rozproszonej bazie danych

Poczytałem dziś na temat replikacji i podzielę się swoimi myślami aby zweryfikować ich poprawność. Szczerze powiedziawszy z tego co dziś wyczytałem Replikacja niesie za sobą o wiele więcej korzyści niż fragmentacja - ale nie o tym, za małe doświadczenie w RBD. Otóż mowa była o sklepie. Każdy serwer ( sklep ) zawiera taką samą strukturę bazy danych jak publikator ( ściślej tabele, które podlegają replikacji - ale nikt nie zabroni każdej replikować ). Jeżeli nastąpi INSERT w sklepie A ( lokalne zmiany ) to takie same następują na serwerze publikacyjnym, a ten co jakiś czas rozdystrybuuje aktualne dane do węzłów Slave ( sam jest Master-em ). Oczywiście każdy Slave zawiera LinkedServer do publikatora.

Pozdrawiam.Damian S edytował(a) ten post dnia 12.03.13 o godzinie 22:29
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Fragmentacja danych w rozproszonej bazie danych

Podstawowy problem z replikacja master slave to to, ze masz nadal waskie gardlo w postaci serwera master, ktory mozna skalowac jedynie wertykalnie dodajac wiecej zasobow (cpu, iops, storage). Jezeli twoj system ma duzo zapisow (insert, update, delete, itp) to wydajnosc/przepustowosc aplikacji jest ograniczona wydajnoscia serwera master z narzutem w postaci replikacji do serwerow slave. Master slave sprawdza sie jak masz aplikacjie gdzie najwiecej jest odczytow (select) czyli wiekszosc aplikacji webowych.

Jak twoj system ma bardzo duzo zapisow, to masz takie opcje:
- replikacja master master (jezeli mozliwa)
- sharding
- logowanie transakcji w multi master nosql i kolejkowanieŁukasz C. edytował(a) ten post dnia 12.03.13 o godzinie 22:52
Damian Snoch

Damian Snoch Typ konstruktora, a
nie destruktora...

Temat: Fragmentacja danych w rozproszonej bazie danych

Tak jest, jak tylko spojrzałem na pierwsze lepsze schematy Master - Slave stwierdziłem, że przy dużej ilości subskrybentów nie będzie to efektywne rozwiązanie.

PozdrawiamDamian S edytował(a) ten post dnia 14.03.13 o godzinie 08:33
Tomasz Andrzejewski

Tomasz Andrzejewski PROGRAMMING ENGINEER
(DELPHI, SQL)

Temat: Fragmentacja danych w rozproszonej bazie danych

w MSSQL 2012 jest rozwiazanie oparte o WFC i AlwaysOn. W ramach instancji moze istniec do 4 replik. Mozna zbudowac model oparty o quorum. Primary moze byc typowo transakcyjne a jedna z replik pelnic role read only (odpowiedni typ polaczenia z application intent = read only)

Zbadaj to rozwiazanie - w przypadku HA w 2012 nie musisz korzystac z wspoldzielonego storge, co tez ma wplyw na wydajnosc i upierdliwe adresowanie HBA.
Daniel Podlejski

Daniel Podlejski DBA,
SysAdmin/DevOps,
backend developer

Temat: Fragmentacja danych w rozproszonej bazie danych

Trochę off-topic - fragmentacja to bardzo niefortunnie dobrane do tematu pojęcie.
Przyjęło się w informatyce, że termin ten oznacza coś innego, niż masz na myśli:
http://pl.wikipedia.org/wiki/Fragmentacja_pami%C4%99ci
http://pl.wikipedia.org/wiki/Fragmentacja_%28system_pl...
Damian Snoch

Damian Snoch Typ konstruktora, a
nie destruktora...

Temat: Fragmentacja danych w rozproszonej bazie danych

Spotkałem się jeszcze z fragmentaryzacją, ale najczęściej w skryptach pojawiało się słowo fragmentacja, więc zwątpiłem.

Pozdrawiam.

konto usunięte

Temat: Fragmentacja danych w rozproszonej bazie danych

Damian S:
Spotkałem się jeszcze z fragmentaryzacją, ale najczęściej w skryptach pojawiało się słowo fragmentacja, więc zwątpiłem.

Pozdrawiam.

W jakich skryptach?
Damian Snoch

Damian Snoch Typ konstruktora, a
nie destruktora...

Temat: Fragmentacja danych w rozproszonej bazie danych

Np. Tu:

http://wazniak.mimuw.edu.pl/images/8/88/ZSBD-2st-1.2-w...
Daniel Podlejski

Daniel Podlejski DBA,
SysAdmin/DevOps,
backend developer

Temat: Fragmentacja danych w rozproszonej bazie danych

Damian S:
http://wazniak.mimuw.edu.pl/images/8/88/ZSBD-2st-1.2-w...

IMHO bardzo na siłę i niefortunnie przetłumaczony sharding.

(ale po tym jak słyszałem terminy "polisy firewalla" i "koneksje bazodanowe", to nic na mnie wrażenia nie zrobi)Daniel Podlejski edytował(a) ten post dnia 18.03.13 o godzinie 10:30

konto usunięte

Temat: Fragmentacja danych w rozproszonej bazie danych

Tragedia. Weź sobie jakąś książkę, zamiast czytać takie pierdoły. Niczego sensownego się z tego nie nauczysz.

Dodam jeszcze to, że tak naprawdę, to teoria używana w bazach danych jest albo kosmicznie skomplikowana, nieporównywalnie z tym pdfem. Algorytymy wyszukiwania, zapisywania indeksów na dysku i dowody poprawności tych algorytmów, to wyższa półka i nie jest to w ogóle potrzebne do używania bazy danych.

Albo też ta teoria jest znacznie prostsza, ale wtedy wymaga pokazania jak się co robi i dlaczego. Tu nawet żadnego sensownego przykładu nie ma.

Poziom tych slajdów przypomina mi numerowanie kartek, żeby pisać książkę. Już wiesz, że pisze się na kartkach, że pisze się po kolei, a i tak nie wiesz jak się cokolwiek pisze i jak literki wyglądają.Szymon G. edytował(a) ten post dnia 18.03.13 o godzinie 10:58
Damian Snoch

Damian Snoch Typ konstruktora, a
nie destruktora...

Temat: Fragmentacja danych w rozproszonej bazie danych

Co Ty jesteś w stanie z Helionu polecić? Nie chcę tylko SQL i T-SQL czy PL/SQL bo tego już używam dość długo także mam dobrą praktykę. Chodzi mi coś na temat rozproszonych baz - na początek po polsku. Szukałem książki Oracle - projektowanie rozproszonych baz danych, ale nie ma jej już w sprzedaży. Wszędzie brak druków.Damian S edytował(a) ten post dnia 18.03.13 o godzinie 13:21

konto usunięte

Temat: Fragmentacja danych w rozproszonej bazie danych

Z Helionu nic. Nie znam tych książek. Wiele lat temu Helion miał takie błędy w tłumaczeniach książek, że przestałem cokolwiek z ich książek czytać. Podobno teraz jest już dobrze, ale w nie wiem po co mam czytać te książki, skoro mogę oryginał po angielsku.

Polskich książek nie znam w ogóle, bo wszystko, co czytam o komputerach, jest po angielsku. W sumie w Polsce nic ciekawego w branży się nie dzieje, wszelkie nowe fajne rzeczy są i tak robione po angielsku i po angielsku mają dokumentację.

Ale zapewne ktoś się tu znajdzie, kto poleci jakieś pozycje z Helionu.Szymon G. edytował(a) ten post dnia 18.03.13 o godzinie 13:52



Wyślij zaproszenie do