🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych
7 messages
7 total messages Started by Borneq Tue, 03 May 2016 10:24
Relacja wielu do wielu w mySQL/MariaDB
#194933
Author: Borneq
Date: Tue, 03 May 2016 10:24
14 lines
1737 bytes
Przepraszam, może pytanie banalne.
Ale mam bazę mySQL albo mariaDB. W niej mam gromadzić transakcje z 
bloków Bitcoina. Przy czym jeden blok ma wiele transakcji - tabela 
transakcje. Ale jedna transakcja może mieć wiele adresów wejściowych i 
wyjściowych. Adresy mogą się powtarzać dla wielu transakcji.
Kłopot że to relacyjna baza danych a nie np. obiektowa.
Trzeba zrobić chyba tak, że w tabeli transakcje trzymać tylko hasze 
transakcji, a pozostałe dwie tabele to będą pary (hasz,adres) jako 
klucz. (jak zrobić parę jako jeden klucz?)
ale wtedy jak będzie wyglądało przeglądanie tabeli transakcje, może 
spowolnić gdy będę dla każdej wartości wyszukiwał adresy z relacji. 
Potrzebne indeksy (jakie?), jak to wszystko ułożyć aby działało szybko?
A może dla małej ilości adresów, np. 3 trzymać je w tabeli transakcji, 
tylko dla większej korzystać z relacji?
Re: Relacja wielu do wielu w mySQL/MariaDB
#194934
Author: M.M.
Date: Tue, 03 May 2016 11:14
35 lines
2831 bytes
On Tuesday, May 3, 2016 at 12:24:48 PM UTC+2, Borneq wrote:
> Przepraszam, może pytanie banalne.
> Ale mam bazę mySQL albo mariaDB. W niej mam gromadzić transakcje z 
> bloków Bitcoina. Przy czym jeden blok ma wiele transakcji - tabela 
> transakcje. Ale jedna transakcja może mieć wiele adresów wejściowych i 
> wyjściowych. Adresy mogą się powtarzać dla wielu transakcji.
> Kłopot że to relacyjna baza danych a nie np. obiektowa.
> Trzeba zrobić chyba tak, że w tabeli transakcje trzymać tylko hasze 
> transakcji, a pozostałe dwie tabele to będą pary (hasz,adres) jako 
> klucz. (jak zrobić parę jako jeden klucz?)

Pierwsza sprawa: Poczytaj, jest opisane jak się takie klucze i indeksy
definiuje.

Po drugie, osobiście polecam zawsze zdefiniowanie klucza bigint 
jako klucza głównego w każdej tabeli, nawet jeśli istnieje 'naturalny
klucz' typu pesel, albo Twój hash.


> ale wtedy jak będzie wyglądało przeglądanie tabeli transakcje, może 
> spowolnić gdy będę dla każdej wartości wyszukiwał adresy z relacji. 
> Potrzebne indeksy (jakie?), 
Sprawdź btree lub hash i wybierz szybszy. Gdy użyjesz biginta jako
klucza, to baza może sama wygenerować indeksy.


> jak to wszystko ułożyć aby działało szybko?
> A może dla małej ilości adresów, np. 3 trzymać je w tabeli transakcji, 
> tylko dla większej korzystać z relacji?
Szybko... nie rozumiem wszystkich szczegółów. Możesz wkleić Twój bieżący
projekt tabel i zapytanie które wolno działa lub obawiasz się że
będzie wolno działało?


Pozdrawiam
Re: Relacja wielu do wielu w mySQL/MariaDB
#194935
Author: Borneq
Date: Tue, 03 May 2016 11:33
15 lines
1729 bytes
W dniu 03.05.2016 o 13:14, M.M. pisze:
> Szybko... nie rozumiem wszystkich szczegółów. Możesz wkleić Twój bieżący
> projekt tabel i zapytanie które wolno działa lub obawiasz się że
> będzie wolno działało?

Jeszcze chciałem zapytać się o transakcje. Przypuszczam że należy dążyć 
do tego aby pomiędzy BeginTransaction a EndTransaction nie upływało zbyt 
wiele czasu, tylko atomowe operacje.
Tak jest gdy zapisuję transakcje.
Ale gdy jeszcze chcę zapisywać bloki, to czy muszę tworzyć jedną 
transakcję do zapisu wszystkich transakcji w bloku?
Bo w tabeli bloki mam na przykład ilość_transakcji, i to musi się 
zgadzać z tabelę transakcje.
A dla innych przykładów, gdzie jeszcze dłużej miała by działać jedna 
transakcja?
Re: Relacja wielu do wielu w mySQL/MariaDB
#194938
Author: Borneq
Date: Tue, 03 May 2016 11:34
9 lines
1394 bytes
W dniu 03.05.2016 o 13:14, M.M. pisze:
> Po drugie, osobiście polecam zawsze zdefiniowanie klucza bigint
> jako klucza głównego w każdej tabeli, nawet jeśli istnieje 'naturalny
> klucz' typu pesel, albo Twój hash.

BigInt z autoinkrementacją? A może zamiast tego klucz na dwa pola int: 
numer bloku i numer transakcji w bloku - będzie po kolei.
A może tworzyć jeden większy numer: int numeru bloku + int transakcji w 
bloku = 64 bitowe?
Re: Relacja wielu do wielu w mySQL/MariaDB
#194939
Author: M.M.
Date: Tue, 03 May 2016 13:39
16 lines
2009 bytes
On Tuesday, May 3, 2016 at 1:34:53 PM UTC+2, Borneq wrote:
> W dniu 03.05.2016 o 13:14, M.M. pisze:
> > Po drugie, osobiście polecam zawsze zdefiniowanie klucza bigint
> > jako klucza głównego w każdej tabeli, nawet jeśli istnieje 'naturalny
> > klucz' typu pesel, albo Twój hash.
> 
> BigInt z autoinkrementacją? A może zamiast tego klucz na dwa pola int: 
> numer bloku i numer transakcji w bloku - będzie po kolei.
> A może tworzyć jeden większy numer: int numeru bloku + int transakcji w 
> bloku = 64 bitowe?

Moim zdaniem to przekombinowanie, ale zdarzają się odmienne zdania.
Ja uważam, że klucz główny powinien być jedną kolumną typu int lub
bigint.

Pozdrawiam
Re: Relacja wielu do wielu w mySQL/MariaDB
#194936
Author: M.M.
Date: Tue, 03 May 2016 13:41
19 lines
2208 bytes
On Tuesday, May 3, 2016 at 1:33:11 PM UTC+2, Borneq wrote:
> W dniu 03.05.2016 o 13:14, M.M. pisze:
> > Szybko... nie rozumiem wszystkich szczegółów. Możesz wkleić Twój bieżący
> > projekt tabel i zapytanie które wolno działa lub obawiasz się że
> > będzie wolno działało?
> 
> Jeszcze chciałem zapytać się o transakcje. Przypuszczam że należy dążyć 
> do tego aby pomiędzy BeginTransaction a EndTransaction nie upływało zbyt 
> wiele czasu, tylko atomowe operacje.
> Tak jest gdy zapisuję transakcje.
> Ale gdy jeszcze chcę zapisywać bloki, to czy muszę tworzyć jedną 
> transakcję do zapisu wszystkich transakcji w bloku?
> Bo w tabeli bloki mam na przykład ilość_transakcji, i to musi się 
> zgadzać z tabelę transakcje.
> A dla innych przykładów, gdzie jeszcze dłużej miała by działać jedna 
> transakcja?

Nic nie rozumiem.
Pozdrawiam
Re: Relacja wielu do wielu w mySQL/MariaDB
#194937
Author: Stokrotka
Date: Tue, 03 May 2016 16:44
11 lines
1443 bytes
Masz tak definiować transakcje by działało.
By cofnięcie transakcji było skuteczne i nie spowodowało zepsucia spujności 
bazy.
Po to są transakcje.
Szybkością się nie pszejmuj w pszypadku transakcji,
bo spujność jest kluczowa nie szybkość, zwłaszcza pszy obecnym postępie.

-- 
(tekst bez: ó, ch, rz i -ii)
Ortografia to NAWYK, często nielogiczny, ktury ludzie ociężali umysłowo,
nażucają bezmyślnie następnym pokoleniom. 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads