Baza danych VS Pamiec

0

Witam.
Pisany przeze mnie program bedzie obrabial dosyc duze ilosci danych.
Zwiazku z tym mam pare pytan:

1] Lepiej jest wpakowac dane do wielkich tablic do pamieci
czy moze operowac tymi danymi zapisanymi w jakiejs
lokalnej bazie danych ?

2] Czy bazy danych sa o wiele wolniejsze od rozwiazania z pamiecia ?
Np. Jesli moj program bedzie mial 3 thready a kazdy z nich bedzie
przegladal 600 pol co 1.5 sekundy czy moze to bardzo wplynac na
zasoby systemu ?

3] Jaka baza danych byla by do tego najlepsza [szybkosc/latwosc obslugi] ?

0
  1. to zalezy na jakim servie jest ta baza... jesli serv ma sporo ramu > 2 GB to szybciej bedzie w pamieci
  2. najszybsza - na pewno MySQL Lite
0

No dobrze ... chodzi mi generalnie o lokalna baze danych. Nie znam sie dokladnie
na tym wiec wole zapytac : Czy serwer MySQL musi byc zainstalowany jak osobna
aplikacja na komputerze docelowym [tym na ktorym zostanie zainstalowany program]
czy mozna "dodac" np. DLL MySQL do programu i on juz bedzie dzialal ? Chodzi mi
o to aby program i baza byly w jednym pakiecie. Jesli nie da sie tak zrobic to jaka
baze byscie mi polecili do tego ? Zalezy mi na jej szybkosci.

Z gory wielkie dzieki ;)

Pozdro.

0

każda baza embedded. potestuj np. firebirda w tej wersji (1 plik dll - silnik + 2 pliki dll jeśli chcesz mieć sortowanie po polskich znakach + 1 plik z bazą).

0

Misiekd dzieki wielkie ;) To sie przydalo.

Pozostaje jeszcze jedna sprawa : ile moze trwac przeszukanie powiedzmy 20 tys
pol z czego kazde zalozmy ma np. 10-12 zmiennych [cos w rodzaju Int-ow] ?

0

dużo zależy od tego jak to zrealizujesz. Jeśli odczytujesz te dane z pliku i je obrabiasz (np. masz 20 intów w jednej lini, którą musisz wczytać, podzielić i przekonwertować na int) to na pewno dłużej będzie trwało wczytywanie z pliku niż zapis do bazy (szczególnie lokalnej czy embedded). Możesz też podzielić to na paczki po np. 100 rekordów, tzn robisz 100 insertów a potem zapisujesz transakcję i następne 100. Możesz spróbować zapisać całe 20000 rekordów w jednej transakcji, ale może Ci się nie udać. Na pewno jeśli po każdym rekordzie będziesz robił commit transakcji (czyli zapisanie zmian) i otwierał ją na nowo to czas Ci się drastycznie wydłuży.

0

Aha. Wiesz co? Generalnie o szybkosc zapisu to ja sie nie przejmuje bo to beda pojedyncze operacje. Bardziej boje sie odczytu. Bo niestety ale bede musial co 0.5/1/2 sekundy robic skan 2 innych tablice [po ok. 1000 pol kazda] i w dodatku moze sie okazac, ze co jakis czas bede musial obejrzec cala glowna tablice [czyli to co chce zamiast do pamieci wlozyc do bazy :') ]. Chyba jednak najrozsadniej bedzie ja podzielic i tyle. Hmm. Musze sie bardzo nad tym zastanowic.

1 użytkowników online, w tym zalogowanych: 0, gości: 1